diff --git a/AI/Nullkiller/AIUtility.cpp b/AI/Nullkiller/AIUtility.cpp index 6b2c389d4..bf6b1536e 100644 --- a/AI/Nullkiller/AIUtility.cpp +++ b/AI/Nullkiller/AIUtility.cpp @@ -15,6 +15,7 @@ #include "../../lib/UnlockGuard.h" #include "../../lib/CConfigHandler.h" #include "../../lib/entities/artifact/CArtifact.h" +#include "../../lib/entities/ResourceTypeHandler.h" #include "../../lib/mapObjects/MapObjects.h" #include "../../lib/mapObjects/CQuest.h" #include "../../lib/mapping/TerrainTile.h" @@ -470,7 +471,7 @@ int32_t getArtifactBonusScoreImpl(const std::shared_ptr & bonus) case BonusType::UNDEAD_RAISE_PERCENTAGE: return bonus->val * 400; case BonusType::GENERATE_RESOURCE: - return bonus->val * LIBRARY->objh->resVals.at(bonus->subtype.as().getNum()) * 10; + return bonus->val * bonus->subtype.as().toResource()->getPrice() * 10; case BonusType::SPELL_DURATION: return bonus->val * 200; case BonusType::MAGIC_RESISTANCE: diff --git a/AI/Nullkiller/Engine/PriorityEvaluator.cpp b/AI/Nullkiller/Engine/PriorityEvaluator.cpp index dd0b4bf81..7c02363f6 100644 --- a/AI/Nullkiller/Engine/PriorityEvaluator.cpp +++ b/AI/Nullkiller/Engine/PriorityEvaluator.cpp @@ -12,6 +12,7 @@ #include "Nullkiller.h" #include "../../../lib/entities/artifact/CArtifact.h" +#include "../../../lib/entities/ResourceTypeHandler.h" #include "../../../lib/mapObjectConstructors/AObjectTypeHandler.h" #include "../../../lib/mapObjectConstructors/CObjectClassesHandler.h" #include "../../../lib/mapObjects/CGResource.h" @@ -22,6 +23,7 @@ #include "../../../lib/StartInfo.h" #include "../../../lib/GameSettings.h" #include "../../../lib/filesystem/Filesystem.h" +#include "../../../lib/entities/ResourceTypeHandler.h" #include "../Goals/ExecuteHeroChain.h" #include "../Goals/BuildThis.h" #include "../Goals/StayAtTown.h" @@ -136,7 +138,7 @@ int32_t getResourcesGoldReward(const TResources & res) { int32_t result = 0; - for(auto r : GameResID::ALL_RESOURCES()) + for(auto r : LIBRARY->resourceTypeHandler->getAllObjects()) { if(res[r] > 0) result += r == EGameResID::GOLD ? res[r] : res[r] * 100; @@ -1589,7 +1591,7 @@ float PriorityEvaluator::evaluate(Goals::TSubgoal task, int priorityTier) needed.positive(); int turnsTo = needed.maxPurchasableCount(income); bool haveEverythingButGold = true; - for (int i = 0; i < GameConstants::RESOURCE_QUANTITY; i++) + for (auto & i : LIBRARY->resourceTypeHandler->getAllObjects()) { if (i != GameResID::GOLD && resourcesAvailable[i] < evaluationContext.buildingCost[i]) haveEverythingButGold = false; diff --git a/AI/Nullkiller/Goals/AbstractGoal.cpp b/AI/Nullkiller/Goals/AbstractGoal.cpp index 9adee7f96..6f92d1ec8 100644 --- a/AI/Nullkiller/Goals/AbstractGoal.cpp +++ b/AI/Nullkiller/Goals/AbstractGoal.cpp @@ -12,6 +12,7 @@ #include "../AIGateway.h" #include "../../../lib/constants/StringConstants.h" #include "../../../lib/entities/artifact/CArtifact.h" +#include "../../../lib/entities/ResourceTypeHandler.h" namespace NKAI { @@ -43,13 +44,13 @@ std::string AbstractGoal::toString() const switch(goalType) { case COLLECT_RES: - desc = "COLLECT RESOURCE " + GameConstants::RESOURCE_NAMES[resID] + " (" + std::to_string(value) + ")"; + desc = "COLLECT RESOURCE " + GameResID(resID).toResource()->getJsonKey() + " (" + std::to_string(value) + ")"; break; case TRADE: { auto obj = cb->getObjInstance(ObjectInstanceID(objid)); if (obj) - desc = (boost::format("TRADE %d of %s at %s") % value % GameConstants::RESOURCE_NAMES[resID] % obj->getObjectName()).str(); + desc = (boost::format("TRADE %d of %s at %s") % value % GameResID(resID).toResource()->getJsonKey() % obj->getObjectName()).str(); } break; case GATHER_TROOPS: diff --git a/AI/VCAI/Goals/AbstractGoal.cpp b/AI/VCAI/Goals/AbstractGoal.cpp index 527cbcc41..8e9811a62 100644 --- a/AI/VCAI/Goals/AbstractGoal.cpp +++ b/AI/VCAI/Goals/AbstractGoal.cpp @@ -16,6 +16,7 @@ #include "../BuildingManager.h" #include "../../../lib/constants/StringConstants.h" #include "../../../lib/entities/artifact/CArtifact.h" +#include "../../../lib/entities/ResourceTypeHandler.h" using namespace Goals; @@ -56,13 +57,13 @@ std::string AbstractGoal::name() const //TODO: virtualize case BUILD_STRUCTURE: return "BUILD STRUCTURE"; case COLLECT_RES: - desc = "COLLECT RESOURCE " + GameConstants::RESOURCE_NAMES[resID] + " (" + std::to_string(value) + ")"; + desc = "COLLECT RESOURCE " + GameResID(resID).toResource()->getJsonKey() + " (" + std::to_string(value) + ")"; break; case TRADE: { auto obj = cb->getObjInstance(ObjectInstanceID(objid)); if (obj) - desc = (boost::format("TRADE %d of %s at %s") % value % GameConstants::RESOURCE_NAMES[resID] % obj->getObjectName()).str(); + desc = (boost::format("TRADE %d of %s at %s") % value % GameResID(resID).toResource()->getJsonKey() % obj->getObjectName()).str(); } break; case GATHER_TROOPS: diff --git a/AI/VCAI/Goals/CollectRes.cpp b/AI/VCAI/Goals/CollectRes.cpp index 1bdfa5f64..f69032ef7 100644 --- a/AI/VCAI/Goals/CollectRes.cpp +++ b/AI/VCAI/Goals/CollectRes.cpp @@ -18,6 +18,7 @@ #include "../../../lib/mapObjects/CGMarket.h" #include "../../../lib/mapObjects/CGResource.h" #include "../../../lib/constants/StringConstants.h" +#include "../../../lib/entities/ResourceTypeHandler.h" using namespace Goals; @@ -171,7 +172,7 @@ TSubgoal CollectRes::whatToDoToTrade() const IMarket * m = markets.back(); //attempt trade at back (best prices) int howManyCanWeBuy = 0; - for (GameResID i = EGameResID::WOOD; i <= EGameResID::GOLD; ++i) + for (auto & i : LIBRARY->resourceTypeHandler->getAllObjects()) { if (i.getNum() == resID) continue; diff --git a/CMakeLists.txt b/CMakeLists.txt index f8bdb34d1..71cf571d6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -370,20 +370,6 @@ if(MINGW OR MSVC) # https://developercommunity.visualstudio.com/content/problem/224597/linker-failing-because-of-multiple-definitions-of.html set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /FORCE:MULTIPLE") endif(MSVC) - - if(MINGW) - # Temporary (?) workaround for failing builds on MinGW CI due to bug in TBB - set(CMAKE_CXX_EXTENSIONS ON) - - set(SYSTEM_LIBS ${SYSTEM_LIBS} ole32 oleaut32 ws2_32 mswsock dbghelp bcrypt) - - # Check for iconv (may be needed for Boost.Locale) - include(CheckLibraryExists) - check_library_exists(iconv libiconv_open "" ICONV_FOUND) - if(ICONV_FOUND) - set(SYSTEM_LIBS ${SYSTEM_LIBS} iconv) - endif() - endif(MINGW) endif(MINGW OR MSVC) if(ANDROID) @@ -455,27 +441,6 @@ if(ENABLE_LUA) add_definitions(-DSCRIPTING_ENABLED=1) endif() -if(USING_CONAN AND (MINGW AND CMAKE_HOST_UNIX)) - # Hack for workaround https://github.com/conan-io/conan-center-index/issues/15405 - # Remove once it will be fixed - execute_process(COMMAND - bash -c "grep -rl Mf ${CONAN_INSTALL_FOLDER} | xargs sed -i 's/Mf/mf/g'" - ) - # Hack for workaround ffmpeg broken linking (conan ffmpeg forgots to link to ws2_32) - # Remove once it will be fixed - execute_process(COMMAND - bash -c "grep -rl secur32 ${CONAN_INSTALL_FOLDER} | xargs sed -i 's/secur32)/secur32 ws2_32)/g'" - ) - execute_process(COMMAND - bash -c "grep -rl secur32 ${CONAN_INSTALL_FOLDER} | xargs sed -i 's/secur32 mfplat/secur32 ws2_32 mfplat/g'" - ) - # Fixup tbb for cross-compiling on Conan - # Remove once it will be fixed - execute_process(COMMAND - bash -c "grep -rl tbb12 ${CONAN_INSTALL_FOLDER} | xargs sed -i 's/tbb tbb12/tbb12/g'" - ) -endif() - ############################################ # Finding packages # ############################################ @@ -827,12 +792,6 @@ if(WIN32) ExecShell '' 'netsh' 'advfirewall firewall delete rule name=vcmi_client' SW_HIDE ") - # Strip MinGW CPack target if build configuration without debug info - if(MINGW) - if(NOT (CMAKE_BUILD_TYPE STREQUAL "Debug") OR (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")) - set(CPACK_STRIP_FILES ON) - endif() - endif() # set the install/unistall icon used for the installer itself # There is a bug in NSI that does not handle full unix paths properly. set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/clientapp/icons\\\\vcmi.ico") @@ -849,7 +808,7 @@ if(WIN32) set(CPACK_NSIS_URL_INFO_ABOUT "http://vcmi.eu/") set(CPACK_NSIS_CONTACT @CPACK_PACKAGE_CONTACT@) set(CPACK_NSIS_EXECUTABLES_DIRECTORY ".") - # Use BundleUtilities to fix build when Vcpkg is used and disable it for mingw + if(NOT (${CMAKE_CROSSCOMPILING})) add_subdirectory(win) endif() diff --git a/Mods/vcmi/Content/config/english.json b/Mods/vcmi/Content/config/english.json index 579bbf014..d926c7940 100644 --- a/Mods/vcmi/Content/config/english.json +++ b/Mods/vcmi/Content/config/english.json @@ -425,6 +425,7 @@ "vcmi.keyBindings.keyBinding.lobbySelectScenario": "Lobby select scenario", "vcmi.keyBindings.keyBinding.lobbyToggleChat": "Lobby toggle chat", "vcmi.keyBindings.keyBinding.lobbyTurnOptions": "Lobby turn options", + "vcmi.keyBindings.keyBinding.lobbyCampaignSets": "Lobby campaign sets", "vcmi.keyBindings.keyBinding.mainMenuBack": "Main menu back", "vcmi.keyBindings.keyBinding.mainMenuCampaign": "Main menu campaign", "vcmi.keyBindings.keyBinding.mainMenuCampaignAb": "Main menu campaign ab", @@ -835,6 +836,9 @@ "vcmi.optionsTab.simturns.blocked1" : "Simturns: 1 week, contacts blocked", "vcmi.optionsTab.simturns.blocked2" : "Simturns: 2 weeks, contacts blocked", "vcmi.optionsTab.simturns.blocked4" : "Simturns: 1 month, contacts blocked", + + "vcmi.campaignSet.chronicles" : "Heroes Chronicles", + "vcmi.campaignSet.hota" : "Horn of the Abyss", // Translation note: translate strings below using form that is correct for "0 days", "1 day" and "2 days" in your language // Using this information, VCMI will automatically select correct plural form for every possible amount @@ -848,6 +852,9 @@ "vcmi.optionsTab.simturns.months.1" : " %d month", "vcmi.optionsTab.simturns.months.2" : " %d months", + "vcmi.selectionTab.campaignSets.hover" : "Campaign sets", + "vcmi.selectionTab.campaignSets.help" : "Multiple campaigns bundeled as set", + "vcmi.optionsTab.extraOptions.hover" : "Extra Options", "vcmi.optionsTab.extraOptions.help" : "Additional settings for the game", diff --git a/Mods/vcmi/Content/config/german.json b/Mods/vcmi/Content/config/german.json index 7a676eccc..6bd8535d4 100644 --- a/Mods/vcmi/Content/config/german.json +++ b/Mods/vcmi/Content/config/german.json @@ -434,6 +434,7 @@ "vcmi.keyBindings.keyBinding.lobbySelectScenario": "Lobby Szenario wählen", "vcmi.keyBindings.keyBinding.lobbyToggleChat": "Lobby Chat umschalten", "vcmi.keyBindings.keyBinding.lobbyTurnOptions": "Lobby Zugoptionen", + "vcmi.keyBindings.keyBinding.lobbyCampaignSets": "Lobby Kampagnensätze", "vcmi.keyBindings.keyBinding.mainMenuBack": "Hauptmenü zurück", "vcmi.keyBindings.keyBinding.mainMenuCampaign": "Hauptmenü Kampagne", "vcmi.keyBindings.keyBinding.mainMenuCampaignAb": "Hauptmenü Kampagne Ab", @@ -834,6 +835,9 @@ "vcmi.optionsTab.simturns.blocked1" : "Simzüge: 1 Woche, Kontakte block.", "vcmi.optionsTab.simturns.blocked2" : "Simzüge: 2 Wochen, Kontakte block.", "vcmi.optionsTab.simturns.blocked4" : "Simzüge: 1 Monat, Kontakte block.", + + "vcmi.campaignSet.chronicles" : "Heroes Chronicles", + "vcmi.campaignSet.hota" : "Horn of the Abyss", // Translation note: translate strings below using form that is correct for "0 days", "1 day" and "2 days" in your language // Using this information, VCMI will automatically select correct plural form for every possible amount @@ -847,6 +851,9 @@ "vcmi.optionsTab.simturns.months.1" : "%d Monat", "vcmi.optionsTab.simturns.months.2" : "%d Monate", + "vcmi.selectionTab.campaignSets.hover" : "Kampagnensätze", + "vcmi.selectionTab.campaignSets.help" : "Mehrere Kampagnen gebündelt als Satz", + "vcmi.optionsTab.extraOptions.hover" : "Extra Optionen", "vcmi.optionsTab.extraOptions.help" : "Zusätzliche Einstellungen für das Spiel", diff --git a/client/adventureMap/AdventureMapWidget.cpp b/client/adventureMap/AdventureMapWidget.cpp index bf25624d5..43cb8dea4 100644 --- a/client/adventureMap/AdventureMapWidget.cpp +++ b/client/adventureMap/AdventureMapWidget.cpp @@ -21,6 +21,7 @@ #include "../GameInstance.h" #include "../gui/Shortcut.h" #include "../mapView/MapView.h" +#include "../render/AssetGenerator.h" #include "../render/IImage.h" #include "../render/IRenderHandler.h" #include "../widgets/Buttons.h" @@ -30,10 +31,12 @@ #include "../CPlayerInterface.h" #include "../PlayerLocalState.h" +#include "../../lib/GameLibrary.h" #include "../../lib/callback/CCallback.h" #include "../../lib/constants/StringConstants.h" #include "../../lib/mapping/CMapHeader.h" #include "../../lib/filesystem/ResourcePath.h" +#include "../../lib/entities/ResourceTypeHandler.h" AdventureMapWidget::AdventureMapWidget( std::shared_ptr shortcuts ) : shortcuts(shortcuts) @@ -153,6 +156,15 @@ std::shared_ptr AdventureMapWidget::buildMapButton(const JsonNode & auto help = readHintText(input["help"]); bool playerColored = input["playerColored"].Bool(); + if(!input["generateFromBaseImage"].isNull()) + { + bool small = input["generateSmall"].Bool(); + auto assetGenerator = ENGINE->renderHandler().getAssetGenerator(); + auto layout = assetGenerator->createAdventureMapButton(ImagePath::fromJson(input["generateFromBaseImage"]), small); + assetGenerator->addAnimationFile(AnimationPath::builtin("SPRITES/" + input["image"].String()), layout); + ENGINE->renderHandler().updateGeneratedAssets(); + } + auto button = std::make_shared(position.topLeft(), image, help, 0, EShortcut::NONE, playerColored); loadButtonBorderColor(button, input["borderColor"]); @@ -284,14 +296,14 @@ std::shared_ptr AdventureMapWidget::buildResourceDateBar(const JsonN auto result = std::make_shared(image, area.topLeft()); - for(auto i = 0; i < GameConstants::RESOURCE_QUANTITY; i++) + for (auto & i : LIBRARY->resourceTypeHandler->getAllObjects()) { - const auto & node = input[GameConstants::RESOURCE_NAMES[i]]; + const auto & node = input[i.toResource()->getJsonKey()]; if(node.isNull()) continue; - result->setResourcePosition(GameResID(i), Point(node["x"].Integer(), node["y"].Integer())); + result->setResourcePosition(i, Point(node["x"].Integer(), node["y"].Integer())); } result->setDatePosition(Point(input["date"]["x"].Integer(), input["date"]["y"].Integer())); diff --git a/client/adventureMap/CResDataBar.cpp b/client/adventureMap/CResDataBar.cpp index ab540b935..adbc1fb9d 100644 --- a/client/adventureMap/CResDataBar.cpp +++ b/client/adventureMap/CResDataBar.cpp @@ -18,15 +18,21 @@ #include "../GameInstance.h" #include "../gui/TextAlignment.h" #include "../widgets/Images.h" +#include "../widgets/CComponent.h" +#include "../windows/InfoWindows.h" #include "../../lib/CConfigHandler.h" #include "../../lib/callback/CCallback.h" #include "../../lib/texts/CGeneralTextHandler.h" #include "../../lib/ResourceSet.h" #include "../../lib/GameLibrary.h" +#include "../../lib/entities/ResourceTypeHandler.h" +#include "../../lib/networkPacks/Component.h" CResDataBar::CResDataBar(const ImagePath & imageName, const Point & position) { + addUsedEvents(SHOW_POPUP); + pos.x += position.x; pos.y += position.y; @@ -89,3 +95,12 @@ void CResDataBar::setPlayerColor(PlayerColor player) { background->setPlayerColor(player); } + +void CResDataBar::showPopupWindow(const Point & cursorPosition) +{ + std::vector> comp; + for (auto & i : LIBRARY->resourceTypeHandler->getAllObjects()) + comp.push_back(std::make_shared(ComponentType::RESOURCE, i, GAME->interface()->cb->getResourceAmount(i))); + + CRClickPopup::createAndPush(LIBRARY->generaltexth->translate("core.genrltxt.270"), comp); +} diff --git a/client/adventureMap/CResDataBar.h b/client/adventureMap/CResDataBar.h index 3363802c4..ec578756a 100644 --- a/client/adventureMap/CResDataBar.h +++ b/client/adventureMap/CResDataBar.h @@ -35,6 +35,7 @@ public: void setResourcePosition(const GameResID & resource, const Point & position); void setPlayerColor(PlayerColor player); + void showPopupWindow(const Point & cursorPosition) override; void showAll(Canvas & to) override; }; diff --git a/client/gui/Shortcut.h b/client/gui/Shortcut.h index ca5ba1c60..858309055 100644 --- a/client/gui/Shortcut.h +++ b/client/gui/Shortcut.h @@ -97,6 +97,7 @@ enum class EShortcut LOBBY_RANDOM_TOWN, LOBBY_RANDOM_TOWN_VS, LOBBY_HANDICAP, + LOBBY_CAMPAIGN_SETS, MAPS_SIZE_S, MAPS_SIZE_M, diff --git a/client/gui/ShortcutHandler.cpp b/client/gui/ShortcutHandler.cpp index fb4c2b353..b81096cdd 100644 --- a/client/gui/ShortcutHandler.cpp +++ b/client/gui/ShortcutHandler.cpp @@ -304,6 +304,7 @@ EShortcut ShortcutHandler::findShortcut(const std::string & identifier ) const {"lobbyRandomTown", EShortcut::LOBBY_RANDOM_TOWN }, {"lobbyRandomTownVs", EShortcut::LOBBY_RANDOM_TOWN_VS }, {"lobbyHandicap", EShortcut::LOBBY_HANDICAP }, + {"lobbyCampaignSets", EShortcut::LOBBY_CAMPAIGN_SETS }, {"mapsSizeS", EShortcut::MAPS_SIZE_S }, {"mapsSizeM", EShortcut::MAPS_SIZE_M }, {"mapsSizeL", EShortcut::MAPS_SIZE_L }, diff --git a/client/lobby/OptionsTab.cpp b/client/lobby/OptionsTab.cpp index 0c3c1134f..ed4756d9d 100644 --- a/client/lobby/OptionsTab.cpp +++ b/client/lobby/OptionsTab.cpp @@ -41,6 +41,7 @@ #include "../../lib/entities/faction/CTownHandler.h" #include "../../lib/entities/hero/CHeroHandler.h" #include "../../lib/entities/hero/CHeroClass.h" +#include "../../lib/entities/ResourceTypeHandler.h" #include "../../lib/filesystem/Filesystem.h" #include "../../lib/networkPacks/PacksForLobby.h" #include "../../lib/texts/CGeneralTextHandler.h" @@ -161,8 +162,6 @@ size_t OptionsTab::CPlayerSettingsHelper::getImageIndex(bool big) return GEM; case EGameResID::GOLD: return GOLD; - case EGameResID::MITHRIL: - return MITHRIL; } } } @@ -1057,7 +1056,7 @@ OptionsTab::PlayerOptionsEntry::PlayerOptionsEntry(const PlayerSettings & S, con { auto str = MetaString::createFromTextID("vcmi.lobby.handicap"); str.appendRawString(":\n"); - for(auto & res : EGameResID::ALL_RESOURCES()) + for(auto & res : LIBRARY->resourceTypeHandler->getAllObjects()) if(s->handicap.startBonus[res] != 0) { str.appendRawString("\n"); diff --git a/client/lobby/SelectionTab.cpp b/client/lobby/SelectionTab.cpp index c142c51f7..a35922ba0 100644 --- a/client/lobby/SelectionTab.cpp +++ b/client/lobby/SelectionTab.cpp @@ -32,6 +32,7 @@ #include "../render/CAnimation.h" #include "../render/IImage.h" #include "../render/IRenderHandler.h" +#include "../mainmenu/CCampaignScreen.h" #include "../../lib/CConfigHandler.h" #include "../../lib/IGameSettings.h" @@ -154,15 +155,24 @@ static ESortBy getSortBySelectionScreen(ESelectionScreen Type) } SelectionTab::SelectionTab(ESelectionScreen Type) - : CIntObject(LCLICK | SHOW_POPUP | KEYBOARD | DOUBLECLICK), callOnSelect(nullptr), tabType(Type), selectionPos(0), sortModeAscending(true), inputNameRect{32, 539, 350, 20}, curFolder(""), currentMapSizeFilter(0), showRandom(false), deleteMode(false) + : CIntObject(LCLICK | SHOW_POPUP | KEYBOARD | DOUBLECLICK) + , callOnSelect(nullptr) + , tabType(Type) + , selectionPos(0) + , sortModeAscending(true) + , inputNameRect{32, 539, 350, 20} + , curFolder("") + , currentMapSizeFilter(0) + , showRandom(false) + , deleteMode(false) + , enableUiEnhancements(settings["general"]["enableUiEnhancements"].Bool()) + , campaignSets(JsonUtils::assembleFromFiles("config/campaignSets.json")) { OBJECT_CONSTRUCTION; generalSortingBy = getSortBySelectionScreen(tabType); sortingBy = _format; - bool enableUiEnhancements = settings["general"]["enableUiEnhancements"].Bool(); - if(tabType != ESelectionScreen::campaignList) { background = std::make_shared(ImagePath::builtin("SCSELBCK.bmp"), 0, 6); @@ -244,6 +254,44 @@ SelectionTab::SelectionTab(ESelectionScreen Type) if(tabType == ESelectionScreen::newGame) buttonDeleteMode->setEnabled(false); } + + if(tabType == ESelectionScreen::campaignList) + { + buttonCampaignSet = std::make_shared(Point(262, 53), AnimationPath::builtin("GSPBUT2.DEF"), CButton::tooltip("", LIBRARY->generaltexth->translate("vcmi.selectionTab.campaignSets.help")), [this]{ + std::vector>> namesWithIndex; + for (auto const & set : campaignSets.Struct()) + { + bool oneCampaignExists = false; + for (auto const & item : set.second["items"].Vector()) + if(CResourceHandler::get()->existsResource(ResourcePath(item["file"].String(), EResType::CAMPAIGN))) + oneCampaignExists = true; + + if(oneCampaignExists) + namesWithIndex.push_back({set.second["index"].isNull() ? std::numeric_limits::max() : set.second["index"].Integer(), { set.first, set.second["text"].isNull() ? set.first : LIBRARY->generaltexth->translate(set.second["text"].String()) }}); + } + + std::sort(namesWithIndex.begin(), namesWithIndex.end(), [](const std::pair>& a, const std::pair>& b) + { + if (a.first != b.first) return a.first < b.first; + return a.second.second < b.second.second; + }); + + std::vector namesIdentifier; + for (const auto& pair : namesWithIndex) + namesIdentifier.push_back(pair.second.first); + std::vector namesTranslated; + for (const auto& pair : namesWithIndex) + namesTranslated.push_back(pair.second.second); + + ENGINE->windows().createAndPushWindow(namesTranslated, [this, namesIdentifier](int index) + { + GAME->server().sendClientDisconnecting(); + (static_cast(parent))->close(); + ENGINE->windows().createAndPushWindow(campaignSets, namesIdentifier[index]); + }); + }, EShortcut::LOBBY_CAMPAIGN_SETS); + buttonCampaignSet->setTextOverlay(LIBRARY->generaltexth->translate("vcmi.selectionTab.campaignSets.hover"), FONT_SMALL, Colors::WHITE); + } } for(int i = 0; i < positionsToShow; i++) @@ -961,9 +1009,6 @@ void SelectionTab::handleUnsupportedSavegames(const std::vector & void SelectionTab::parseCampaigns(const std::unordered_set & files) { - auto campaignSets = JsonUtils::assembleFromFiles("config/campaignSets.json"); - auto mainmenu = JsonNode(JsonPath::builtin("config/mainmenu.json")); - allItems.reserve(files.size()); for(auto & file : files) { @@ -977,22 +1022,13 @@ void SelectionTab::parseCampaigns(const std::unordered_set & files if(info->campaign) { // skip campaigns organized in sets - std::string foundInSet = ""; + bool foundInSet = false; for (auto const & set : campaignSets.Struct()) for (auto const & item : set.second["items"].Vector()) if(file.getName() == ResourcePath(item["file"].String()).getName()) - foundInSet = set.first; + foundInSet = true; - // set has to be used in main menu - bool setInMainmenu = false; - if(!foundInSet.empty()) - for (auto const & item : mainmenu["window"]["items"].Vector()) - if(item["name"].String() == "campaign") - for (auto const & button : item["buttons"].Vector()) - if(boost::algorithm::ends_with(boost::algorithm::to_lower_copy(button["command"].String()), boost::algorithm::to_lower_copy(foundInSet))) - setInMainmenu = true; - - if(!setInMainmenu) + if(!foundInSet || !enableUiEnhancements) allItems.push_back(info); } } @@ -1128,3 +1164,33 @@ void SelectionTab::ListItem::updateItem(std::shared_ptr info, bool labelName->setText(info->name); labelName->setColor(color); } + +CampaignSetSelector::CampaignSetSelector(const std::vector & texts, const std::function & cb) + : CWindowObject(BORDERED), texts(texts), cb(cb) +{ + OBJECT_CONSTRUCTION; + pos = center(Rect(0, 0, 200 + 16, std::min(static_cast(texts.size()), LINES) * 40)); + filledBackground = std::make_shared(Rect(0, 0, pos.w, pos.h)); + filledBackground->setPlayerColor(PlayerColor(1)); + + slider = std::make_shared(Point(pos.w - 16, 0), pos.h, [this](int to){ update(to); redraw(); }, LINES, texts.size(), 0, Orientation::VERTICAL, CSlider::BLUE); + slider->setPanningStep(40); + slider->setScrollBounds(Rect(-pos.w + slider->pos.w, 0, pos.w, pos.h)); + + update(0); +} + +void CampaignSetSelector::update(int to) +{ + OBJECT_CONSTRUCTION; + buttons.clear(); + for(int i = to; i < LINES + to; i++) + { + if(i>=texts.size()) + continue; + + auto button = std::make_shared(Point(0, 10 + (i - to) * 40), AnimationPath::builtin("GSPButtonClear"), CButton::tooltip(), [this, i](bool on){ close(); cb(i); }); + button->setTextOverlay(texts[i], EFonts::FONT_SMALL, Colors::WHITE); + buttons.emplace_back(button); + } +} diff --git a/client/lobby/SelectionTab.h b/client/lobby/SelectionTab.h index 2cef080ed..1718173a6 100644 --- a/client/lobby/SelectionTab.h +++ b/client/lobby/SelectionTab.h @@ -21,6 +21,7 @@ class CLabel; class CPicture; class IImage; class CAnimation; +class CToggleButton; enum ESortBy { @@ -74,6 +75,8 @@ class SelectionTab : public CIntObject std::shared_ptr iconsLossCondition; std::vector> unSupportedSaves; + + JsonNode campaignSets; public: std::vector> allItems; std::vector> curItems; @@ -125,6 +128,9 @@ private: std::shared_ptr buttonDeleteMode; bool deleteMode; + bool enableUiEnhancements; + std::shared_ptr buttonCampaignSet; + auto checkSubfolder(std::string path); bool isMapSupported(const CMapInfo & info); @@ -135,3 +141,19 @@ private: void handleUnsupportedSavegames(const std::vector & files); }; + +class CampaignSetSelector : public CWindowObject +{ + std::shared_ptr filledBackground; + std::vector> buttons; + std::shared_ptr slider; + + const int LINES = 10; + + std::vector texts; + std::function cb; + + void update(int to); +public: + CampaignSetSelector(const std::vector & texts, const std::function & cb); +}; \ No newline at end of file diff --git a/client/mainmenu/CStatisticScreen.cpp b/client/mainmenu/CStatisticScreen.cpp index b54f3323a..2596de69d 100644 --- a/client/mainmenu/CStatisticScreen.cpp +++ b/client/mainmenu/CStatisticScreen.cpp @@ -28,6 +28,7 @@ #include "../windows/InfoWindows.h" #include "../widgets/Slider.h" +#include "../../lib/entities/ResourceTypeHandler.h" #include "../../lib/gameState/GameStatistics.h" #include "../../lib/gameState/CGameState.h" #include "../../lib/texts/CGeneralTextHandler.h" @@ -76,10 +77,10 @@ void CStatisticScreen::onSelectButton() else { auto content = static_cast(selectedIndex); - auto possibleRes = std::vector{EGameResID::GOLD, EGameResID::WOOD, EGameResID::MERCURY, EGameResID::ORE, EGameResID::SULFUR, EGameResID::CRYSTAL, EGameResID::GEMS}; + auto possibleRes = LIBRARY->resourceTypeHandler->getAllObjects(); std::vector resourceText; for(const auto & res : possibleRes) - resourceText.emplace_back(LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", res.getNum()).get())); + resourceText.emplace_back(res.toResource()->getNameTranslated()); ENGINE->windows().createAndPushWindow(resourceText, [this, content, possibleRes](int index) { @@ -169,7 +170,7 @@ std::shared_ptr CStatisticScreen::getContent(Content c, EGameResID r case CHART_RESOURCES: plotData = extractData(statistic, [res](const StatisticDataSetEntry & val) -> float { return val.resources[res]; }); - return std::make_shared(contentArea.resize(-5), LIBRARY->generaltexth->translate(std::get<0>(contentInfo[c])) + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", res.getNum()).get()), plotData, icons, 0); + return std::make_shared(contentArea.resize(-5), LIBRARY->generaltexth->translate(std::get<0>(contentInfo[c])) + " - " + res.toResource()->getNameTranslated(), plotData, icons, 0); case CHART_INCOME: plotData = extractData(statistic, [](const StatisticDataSetEntry & val) -> float { return val.income; }); @@ -193,7 +194,7 @@ std::shared_ptr CStatisticScreen::getContent(Content c, EGameResID r case CHART_NUMBER_OF_MINES: plotData = extractData(statistic, [res](StatisticDataSetEntry val) -> float { return val.numMines[res]; }); - return std::make_shared(contentArea.resize(-5), LIBRARY->generaltexth->translate(std::get<0>(contentInfo[c])) + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", res.getNum()).get()), plotData, icons, 0); + return std::make_shared(contentArea.resize(-5), LIBRARY->generaltexth->translate(std::get<0>(contentInfo[c])) + " - " + res.toResource()->getNameTranslated(), plotData, icons, 0); case CHART_ARMY_STRENGTH: plotData = extractData(statistic, [](const StatisticDataSetEntry & val) -> float { return val.armyStrength; }); @@ -205,11 +206,11 @@ std::shared_ptr CStatisticScreen::getContent(Content c, EGameResID r case CHART_RESOURCES_SPENT_ARMY: plotData = extractData(statistic, [res](const StatisticDataSetEntry & val) -> float { return val.spentResourcesForArmy[res]; }); - return std::make_shared(contentArea.resize(-5), LIBRARY->generaltexth->translate(std::get<0>(contentInfo[c])) + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", res.getNum()).get()), plotData, icons, 0); + return std::make_shared(contentArea.resize(-5), LIBRARY->generaltexth->translate(std::get<0>(contentInfo[c])) + " - " + res.toResource()->getNameTranslated(), plotData, icons, 0); case CHART_RESOURCES_SPENT_BUILDINGS: plotData = extractData(statistic, [res](const StatisticDataSetEntry & val) -> float { return val.spentResourcesForBuildings[res]; }); - return std::make_shared(contentArea.resize(-5), LIBRARY->generaltexth->translate(std::get<0>(contentInfo[c])) + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", res.getNum()).get()), plotData, icons, 0); + return std::make_shared(contentArea.resize(-5), LIBRARY->generaltexth->translate(std::get<0>(contentInfo[c])) + " - " + res.toResource()->getNameTranslated(), plotData, icons, 0); case CHART_MAP_EXPLORED: plotData = extractData(statistic, [](const StatisticDataSetEntry & val) -> float { return val.mapExploredRatio; }); @@ -330,43 +331,43 @@ OverviewPanel::OverviewPanel(Rect position, std::string title, const StatisticDa } }, { - LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", EGameResID::GOLD).get()), [this](PlayerColor color){ + LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + GameResID(EGameResID::GOLD).toResource()->getNameTranslated(), [this](PlayerColor color){ auto val = playerDataFilter(color).back(); return std::to_string(val.tradeVolume[EGameResID::GOLD]); } }, { - LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", EGameResID::WOOD).get()), [this](PlayerColor color){ + LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + GameResID(EGameResID::WOOD).toResource()->getNameTranslated(), [this](PlayerColor color){ auto val = playerDataFilter(color).back(); return std::to_string(val.tradeVolume[EGameResID::WOOD]); } }, { - LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", EGameResID::MERCURY).get()), [this](PlayerColor color){ + LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + GameResID(EGameResID::MERCURY).toResource()->getNameTranslated(), [this](PlayerColor color){ auto val = playerDataFilter(color).back(); return std::to_string(val.tradeVolume[EGameResID::MERCURY]); } }, { - LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", EGameResID::ORE).get()), [this](PlayerColor color){ + LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + GameResID(EGameResID::ORE).toResource()->getNameTranslated(), [this](PlayerColor color){ auto val = playerDataFilter(color).back(); return std::to_string(val.tradeVolume[EGameResID::ORE]); } }, { - LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", EGameResID::SULFUR).get()), [this](PlayerColor color){ + LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + GameResID(EGameResID::SULFUR).toResource()->getNameTranslated(), [this](PlayerColor color){ auto val = playerDataFilter(color).back(); return std::to_string(val.tradeVolume[EGameResID::SULFUR]); } }, { - LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", EGameResID::CRYSTAL).get()), [this](PlayerColor color){ + LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + GameResID(EGameResID::CRYSTAL).toResource()->getNameTranslated(), [this](PlayerColor color){ auto val = playerDataFilter(color).back(); return std::to_string(val.tradeVolume[EGameResID::CRYSTAL]); } }, { - LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", EGameResID::GEMS).get()), [this](PlayerColor color){ + LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + GameResID(EGameResID::GEMS).toResource()->getNameTranslated(), [this](PlayerColor color){ auto val = playerDataFilter(color).back(); return std::to_string(val.tradeVolume[EGameResID::GEMS]); } diff --git a/client/mapView/MapViewCache.cpp b/client/mapView/MapViewCache.cpp index fc7aed2dc..e8bf91ebb 100644 --- a/client/mapView/MapViewCache.cpp +++ b/client/mapView/MapViewCache.cpp @@ -25,7 +25,6 @@ #include "../GameEngine.h" #include "../widgets/TextControls.h" -#include "../../lib/mapObjects/CObjectHandler.h" #include "../../lib/int3.h" MapViewCache::~MapViewCache() = default; diff --git a/client/render/AssetGenerator.cpp b/client/render/AssetGenerator.cpp index 0f8119911..e5d71d864 100644 --- a/client/render/AssetGenerator.cpp +++ b/client/render/AssetGenerator.cpp @@ -68,7 +68,9 @@ void AssetGenerator::initialize() for(int i = 1; i < 9; i++) imageFiles[ImagePath::builtin("CampaignHc" + std::to_string(i) + "Image.png")] = [this, i](){ return createChroniclesCampaignImages(i);}; - animationFiles[AnimationPath::builtin("SPRITES/adventureLayersButton")] = createAdventureMapButton(ImagePath::builtin("adventureLayers.png")); + animationFiles[AnimationPath::builtin("SPRITES/adventureLayersButton")] = createAdventureMapButton(ImagePath::builtin("adventureLayers.png"), true); + + animationFiles[AnimationPath::builtin("SPRITES/GSPButtonClear")] = createGSPButtonClear(); createPaletteShiftedSprites(); } @@ -96,6 +98,16 @@ std::map AssetGenerator::gene return animationFiles; } +void AssetGenerator::addImageFile(const ImagePath & path, ImageGenerationFunctor & img) +{ + imageFiles[path] = img; +} + +void AssetGenerator::addAnimationFile(const AnimationPath & path, AnimationLayoutMap & anim) +{ + animationFiles[path] = anim; +} + AssetGenerator::CanvasPtr AssetGenerator::createAdventureOptionsCleanBackground() const { auto locator = ImageLocator(ImagePath::builtin("ADVOPTBK"), EImageBlitMode::OPAQUE); @@ -467,30 +479,56 @@ void meanImage(AssetGenerator::CanvasPtr dst, std::vector & images) } } -AssetGenerator::CanvasPtr AssetGenerator::createAdventureMapButtonClear(const PlayerColor & player) const +AssetGenerator::CanvasPtr AssetGenerator::createAdventureMapButtonClear(const PlayerColor & player, bool small) const { - auto imageNames = { "iam002", "iam003", "iam004", "iam005", "iam006", "iam007", "iam008", "iam009", "iam010", "iam011" }; - std::vector images; - CanvasPtr dst = nullptr; - for(auto & imageName : imageNames) + if(small) { - auto animation = ENGINE->renderHandler().loadAnimation(AnimationPath::builtin(imageName), EImageBlitMode::COLORKEY); - animation->playerColored(player); - auto image = ENGINE->renderHandler().createImage(animation->getImage(2)->dimensions(), CanvasScalingPolicy::IGNORE); - if(!dst) - dst = ENGINE->renderHandler().createImage(animation->getImage(2)->dimensions(), CanvasScalingPolicy::IGNORE); - Canvas canvas = image->getCanvas(); - canvas.draw(animation->getImage(2), Point(0, 0)); - images.push_back(image->getCanvas()); - } + auto imageNames = { "iam002", "iam003", "iam004", "iam005", "iam006", "iam007", "iam008", "iam009", "iam010", "iam011" }; + std::vector images; - meanImage(dst, images); + for(auto & imageName : imageNames) + { + auto animation = ENGINE->renderHandler().loadAnimation(AnimationPath::builtin(imageName), EImageBlitMode::COLORKEY); + animation->playerColored(player); + auto image = ENGINE->renderHandler().createImage(animation->getImage(2)->dimensions(), CanvasScalingPolicy::IGNORE); + if(!dst) + dst = ENGINE->renderHandler().createImage(animation->getImage(2)->dimensions(), CanvasScalingPolicy::IGNORE); + Canvas canvas = image->getCanvas(); + canvas.draw(animation->getImage(2), Point(0, 0)); + images.push_back(image->getCanvas()); + } + + meanImage(dst, images); + } + else + { + auto animation = ENGINE->renderHandler().loadAnimation(AnimationPath::builtin("iam001"), EImageBlitMode::COLORKEY); + animation->playerColored(player); + auto image = animation->getImage(2); + + dst = ENGINE->renderHandler().createImage(image->dimensions(), CanvasScalingPolicy::IGNORE); + Canvas canvas = dst->getCanvas(); + canvas.draw(image, Point(0, 0)); + + auto tmp = ENGINE->renderHandler().createImage(Point(5, 22), CanvasScalingPolicy::IGNORE); + std::vector meanImages; + auto tmpLeft = ENGINE->renderHandler().createImage(Point(5, 22), CanvasScalingPolicy::IGNORE); + tmpLeft->getCanvas().draw(image, Point(0, 0), Rect(18, 6, 5, 22)); + meanImages.push_back(tmpLeft->getCanvas()); + auto tmpRight = ENGINE->renderHandler().createImage(Point(5, 22), CanvasScalingPolicy::IGNORE); + tmpRight->getCanvas().draw(image, Point(0, 0), Rect(42, 6, 5, 22)); + meanImages.push_back(tmpRight->getCanvas()); + meanImage(tmp, meanImages); + + for(int i = 0; i < 4; i++) + canvas.draw(tmp, Point(23 + i * 5, 6)); + } return dst; } -AssetGenerator::AnimationLayoutMap AssetGenerator::createAdventureMapButton(const ImagePath & overlay) +AssetGenerator::AnimationLayoutMap AssetGenerator::createAdventureMapButton(const ImagePath & overlay, bool small) { std::shared_ptr overlayImg = ENGINE->renderHandler().loadImage(ImageLocator(overlay, EImageBlitMode::OPAQUE)); auto overlayCanvasImg = ENGINE->renderHandler().createImage(overlayImg->dimensions(), CanvasScalingPolicy::IGNORE); @@ -500,34 +538,36 @@ AssetGenerator::AnimationLayoutMap AssetGenerator::createAdventureMapButton(cons AnimationLayoutMap layout; for (PlayerColor color(0); color < PlayerColor::PLAYER_LIMIT; ++color) { - auto clearButtonImg = createAdventureMapButtonClear(color); + int offs = small ? 0 : 16; + auto clearButtonImg = createAdventureMapButtonClear(color, small); for(int i = 0; i < 4; i++) { - ImagePath spriteName = ImagePath::builtin(overlay.getOriginalName() + "Btn" + std::to_string(i) + ".png"); - ImagePath spriteNameColor = ImagePath::builtin(overlay.getOriginalName() + "Btn" + std::to_string(i) + "-" + color.toString() + ".png"); + std::string baseName = overlay.getOriginalName() + "Btn" + (small ? "Small" : "Big") + std::to_string(i); + ImagePath spriteName = ImagePath::builtin(baseName + ".png"); + ImagePath spriteNameColor = ImagePath::builtin(baseName + "-" + color.toString() + ".png"); - imageFiles[spriteNameColor] = [overlayCanvasImg, clearButtonImg, i](){ - auto newImg = ENGINE->renderHandler().createImage(overlayCanvasImg->dimensions(), CanvasScalingPolicy::IGNORE); + imageFiles[spriteNameColor] = [overlayCanvasImg, clearButtonImg, i, offs](){ + auto newImg = ENGINE->renderHandler().createImage(clearButtonImg->dimensions(), CanvasScalingPolicy::IGNORE); auto canvas = newImg->getCanvas(); canvas.draw(clearButtonImg, Point(0, 0)); switch (i) { case 0: - canvas.draw(overlayCanvasImg, Point(0, 0)); + canvas.draw(overlayCanvasImg, Point(offs, 0)); return newImg; case 1: canvas.draw(clearButtonImg, Point(1, 1)); - canvas.draw(overlayCanvasImg, Point(1, 1)); + canvas.draw(overlayCanvasImg, Point(offs + 1, 1)); canvas.drawLine(Point(0, 0), Point(newImg->width() - 1, 0), ColorRGBA(0, 0, 0), ColorRGBA(0, 0, 0)); canvas.drawLine(Point(0, 0), Point(0, newImg->height() - 1), ColorRGBA(0, 0, 0), ColorRGBA(0, 0, 0)); canvas.drawColorBlended(Rect(0, 0, newImg->width(), 4), ColorRGBA(0, 0, 0, 160)); canvas.drawColorBlended(Rect(0, 0, 4, newImg->height()), ColorRGBA(0, 0, 0, 160)); return newImg; case 2: - canvas.drawTransparent(overlayCanvasImg->getCanvas(), Point(0, 0), 0.25); + canvas.drawTransparent(overlayCanvasImg->getCanvas(), Point(offs, 0), 0.25); return newImg; default: - canvas.draw(overlayCanvasImg, Point(0, 0)); + canvas.draw(overlayCanvasImg, Point(offs, 0)); canvas.drawLine(Point(0, 0), Point(newImg->width() - 1, 0), ColorRGBA(255, 255, 255), ColorRGBA(255, 255, 255)); canvas.drawLine(Point(newImg->width() - 1, 0), Point(newImg->width() - 1, newImg->height() - 1), ColorRGBA(255, 255, 255), ColorRGBA(255, 255, 255)); canvas.drawLine(Point(newImg->width() - 1, newImg->height() - 1), Point(0, newImg->height() - 1), ColorRGBA(255, 255, 255), ColorRGBA(255, 255, 255)); @@ -726,3 +766,27 @@ AssetGenerator::CanvasPtr AssetGenerator::createQuestWindow() const return image; } + +AssetGenerator::AnimationLayoutMap AssetGenerator::createGSPButtonClear() +{ + auto baseImg = ENGINE->renderHandler().loadAnimation(AnimationPath::builtin("GSPBUTT"), EImageBlitMode::OPAQUE); + auto overlayImg = ENGINE->renderHandler().loadAnimation(AnimationPath::builtin("GSPBUT2"), EImageBlitMode::OPAQUE); + + AnimationLayoutMap layout; + for(int i = 0; i < 4; i++) + { + ImagePath spriteName = ImagePath::builtin("GSPButtonClear" + std::to_string(i) + ".png"); + + imageFiles[spriteName] = [baseImg, overlayImg, i](){ + auto newImg = ENGINE->renderHandler().createImage(baseImg->getImage(i)->dimensions(), CanvasScalingPolicy::IGNORE); + auto canvas = newImg->getCanvas(); + canvas.draw(baseImg->getImage(i), Point(0, 0)); + canvas.draw(overlayImg->getImage(i), Point(0, 0), Rect(0, 0, 20, 20)); + return newImg; + }; + + layout[0].push_back(ImageLocator(spriteName, EImageBlitMode::SIMPLE)); + } + + return layout; +} diff --git a/client/render/AssetGenerator.h b/client/render/AssetGenerator.h index 0259db88f..287d9d76d 100644 --- a/client/render/AssetGenerator.h +++ b/client/render/AssetGenerator.h @@ -23,6 +23,7 @@ class AssetGenerator public: using AnimationLayoutMap = std::map>; using CanvasPtr = std::shared_ptr; + using ImageGenerationFunctor = std::function; void initialize(); @@ -31,9 +32,12 @@ public: std::map> generateAllImages(); std::map generateAllAnimations(); -private: - using ImageGenerationFunctor = std::function; + void addImageFile(const ImagePath & path, ImageGenerationFunctor & img); + void addAnimationFile(const AnimationPath & path, AnimationLayoutMap & anim); + AnimationLayoutMap createAdventureMapButton(const ImagePath & overlay, bool small); + +private: struct PaletteAnimation { /// index of first color to cycle @@ -53,14 +57,13 @@ private: CanvasPtr createSpellTabNone() const; CanvasPtr createChroniclesCampaignImages(int chronicle) const; CanvasPtr createPaletteShiftedImage(const AnimationPath & source, const std::vector & animation, int frameIndex, int paletteShiftCounter) const; - CanvasPtr createAdventureMapButtonClear(const PlayerColor & player) const; + CanvasPtr createAdventureMapButtonClear(const PlayerColor & player, bool small) const; CanvasPtr createCreatureInfoPanel(int boxesAmount) const; enum CreatureInfoPanelElement{ BONUS_EFFECTS, SPELL_EFFECTS, BUTTON_PANEL, COMMANDER_BACKGROUND, COMMANDER_ABILITIES }; CanvasPtr createCreatureInfoPanelElement(CreatureInfoPanelElement element) const; CanvasPtr createQuestWindow() const; - AnimationLayoutMap createAdventureMapButton(const ImagePath & overlay); + AnimationLayoutMap createGSPButtonClear(); void createPaletteShiftedSprites(); void generatePaletteShiftedAnimation(const AnimationPath & source, const std::vector & animation); - }; diff --git a/client/render/IRenderHandler.h b/client/render/IRenderHandler.h index 475d56883..8806ef356 100644 --- a/client/render/IRenderHandler.h +++ b/client/render/IRenderHandler.h @@ -22,6 +22,7 @@ class IImage; class CAnimation; class CanvasImage; class SDLImageShared; +class AssetGenerator; enum class EImageBlitMode : uint8_t; enum class CanvasScalingPolicy; enum EFonts : int8_t; @@ -52,4 +53,8 @@ public: virtual std::shared_ptr loadFont(EFonts font) = 0; virtual void exportGeneratedAssets() = 0; + + virtual std::shared_ptr getAssetGenerator() = 0; + + virtual void updateGeneratedAssets() = 0; }; diff --git a/client/renderSDL/RenderHandler.cpp b/client/renderSDL/RenderHandler.cpp index 27fbdfed6..346ee8dce 100644 --- a/client/renderSDL/RenderHandler.cpp +++ b/client/renderSDL/RenderHandler.cpp @@ -43,6 +43,7 @@ #include #include #include +#include RenderHandler::RenderHandler() :assetGenerator(std::make_unique()) @@ -486,7 +487,7 @@ void RenderHandler::onLibraryLoadingFinished(const Services * services) { assert(animationLayouts.empty()); assetGenerator->initialize(); - animationLayouts = assetGenerator->generateAllAnimations(); + updateGeneratedAssets(); addImageListEntries(services->creatures()); addImageListEntries(services->heroTypes()); @@ -494,6 +495,7 @@ void RenderHandler::onLibraryLoadingFinished(const Services * services) addImageListEntries(services->factions()); addImageListEntries(services->spells()); addImageListEntries(services->skills()); + addImageListEntries(services->resources()); if (settings["mods"]["validation"].String() == "full") { @@ -540,3 +542,14 @@ void RenderHandler::exportGeneratedAssets() for (const auto & entry : assetGenerator->generateAllImages()) entry.second->exportBitmap(VCMIDirs::get().userDataPath() / "Generated" / (entry.first.getOriginalName() + ".png"), nullptr); } + +std::shared_ptr RenderHandler::getAssetGenerator() +{ + return assetGenerator; +} + +void RenderHandler::updateGeneratedAssets() +{ + for (const auto& [key, value] : assetGenerator->generateAllAnimations()) + animationLayouts[key] = value; +} diff --git a/client/renderSDL/RenderHandler.h b/client/renderSDL/RenderHandler.h index e2f24b901..492f1dcd2 100644 --- a/client/renderSDL/RenderHandler.h +++ b/client/renderSDL/RenderHandler.h @@ -28,7 +28,7 @@ class RenderHandler final : public IRenderHandler std::map animationLayouts; std::map> imageFiles; std::map> fonts; - std::unique_ptr assetGenerator; + std::shared_ptr assetGenerator; std::shared_ptr getAnimationFile(const AnimationPath & path); AnimationLayoutMap & getAnimationLayout(const AnimationPath & path, int scalingFactor, EImageBlitMode mode); @@ -67,4 +67,7 @@ public: std::shared_ptr loadFont(EFonts font) override; void exportGeneratedAssets() override; + + std::shared_ptr getAssetGenerator() override; + void updateGeneratedAssets() override; }; diff --git a/client/widgets/MiscWidgets.cpp b/client/widgets/MiscWidgets.cpp index 342b65046..14cd41969 100644 --- a/client/widgets/MiscWidgets.cpp +++ b/client/widgets/MiscWidgets.cpp @@ -227,7 +227,7 @@ void CMinorResDataBar::showAll(Canvas & to) { CIntObject::showAll(to); - for (GameResID i=EGameResID::WOOD; i<=EGameResID::GOLD; ++i) + for (GameResID i=EGameResID::WOOD; i<=EGameResID::GOLD; ++i) //todo: configurable resource support { std::string text = std::to_string(GAME->interface()->cb->getResourceAmount(i)); @@ -257,22 +257,9 @@ CMinorResDataBar::CMinorResDataBar() CMinorResDataBar::~CMinorResDataBar() = default; -void CArmyTooltip::init(const InfoAboutArmy &army) +void BuildArmyStacksUI(const InfoAboutArmy& army, const std::vector& slotsPos, std::vector>& icons, std::vector>& subtitles) { - OBJECT_CONSTRUCTION; - - title = std::make_shared(66, 3, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, army.name); - - std::vector slotsPos; - slotsPos.push_back(Point(36, 73)); - slotsPos.push_back(Point(72, 73)); - slotsPos.push_back(Point(108, 73)); - slotsPos.push_back(Point(18, 122)); - slotsPos.push_back(Point(54, 122)); - slotsPos.push_back(Point(90, 122)); - slotsPos.push_back(Point(126, 122)); - - for(auto & slot : army.army) + for(const auto& slot : army.army) { if(slot.first.getNum() >= GameConstants::ARMY_SIZE) { @@ -280,8 +267,10 @@ void CArmyTooltip::init(const InfoAboutArmy &army) continue; } + // Creature icon icons.push_back(std::make_shared(AnimationPath::builtin("CPRSMALL"), slot.second.getType()->getIconIndex(), 0, slotsPos[slot.first.getNum()].x, slotsPos[slot.first.getNum()].y)); + // Subtitle std::string subtitle; if(army.army.isDetailed) { @@ -298,14 +287,49 @@ void CArmyTooltip::init(const InfoAboutArmy &army) } else { - subtitle = LIBRARY->generaltexth->arraytxt[171 + 3*(slot.second.getCount())]; + subtitle = LIBRARY->generaltexth->arraytxt[171 + 3 * (slot.second.getCount())]; } } } subtitles.push_back(std::make_shared(slotsPos[slot.first.getNum()].x + 17, slotsPos[slot.first.getNum()].y + 39, FONT_TINY, ETextAlignment::CENTER, Colors::WHITE, subtitle)); } +} +void CArmyTooltip::init(const InfoAboutArmy &army) +{ + OBJECT_CONSTRUCTION; + + title = std::make_shared(66, 3, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, army.name); + + std::vector slotsPos; + slotsPos.push_back(Point(36, 73)); + slotsPos.push_back(Point(72, 73)); + slotsPos.push_back(Point(108, 73)); + slotsPos.push_back(Point(18, 122)); + slotsPos.push_back(Point(54, 122)); + slotsPos.push_back(Point(90, 122)); + slotsPos.push_back(Point(126, 122)); + + BuildArmyStacksUI(army, slotsPos, icons, subtitles); +} + +void CGarrisonTooltip::init(const InfoAboutArmy& army) +{ + OBJECT_CONSTRUCTION; + + title = std::make_shared(142, 26, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, army.name); + + std::vector slotsPos; + slotsPos.push_back(Point(14, 48)); + slotsPos.push_back(Point(50, 48)); + slotsPos.push_back(Point(86, 48)); + slotsPos.push_back(Point(122, 48)); + slotsPos.push_back(Point(158, 48)); + slotsPos.push_back(Point(194, 48)); + slotsPos.push_back(Point(230, 48)); + + BuildArmyStacksUI(army, slotsPos, icons, subtitles); } CArmyTooltip::CArmyTooltip(Point pos, const InfoAboutArmy & army): @@ -314,6 +338,12 @@ CArmyTooltip::CArmyTooltip(Point pos, const InfoAboutArmy & army): init(army); } +CGarrisonTooltip::CGarrisonTooltip(Point pos, const InfoAboutArmy & army) + : CIntObject(0, pos) +{ + init(army); +} + CArmyTooltip::CArmyTooltip(Point pos, const CArmedInstance * army): CIntObject(0, pos) { diff --git a/client/widgets/MiscWidgets.h b/client/widgets/MiscWidgets.h index 729466f02..7a35bfa0e 100644 --- a/client/widgets/MiscWidgets.h +++ b/client/widgets/MiscWidgets.h @@ -62,7 +62,7 @@ public: void showPopupWindow(const Point & cursorPosition) override; }; -/// base class for hero/town/garrison tooltips +/// base class for hero/town tooltips class CArmyTooltip : public CIntObject { std::shared_ptr title; @@ -74,6 +74,17 @@ public: CArmyTooltip(Point pos, const CArmedInstance * army); }; +/// base class garrison tooltips +class CGarrisonTooltip : public CIntObject +{ + std::shared_ptr title; + std::vector> icons; + std::vector> subtitles; + void init(const InfoAboutArmy& army); +public: + CGarrisonTooltip(Point pos, const InfoAboutArmy& army); +}; + /// Class for hero tooltip. Does not have any background! /// background for infoBox: ADSTATHR /// background for tooltip: HEROQVBK diff --git a/client/widgets/ObjectLists.cpp b/client/widgets/ObjectLists.cpp index 2db5022ca..e124ee32b 100644 --- a/client/widgets/ObjectLists.cpp +++ b/client/widgets/ObjectLists.cpp @@ -121,7 +121,8 @@ void CListBox::updatePositions() slider->scrollTo((int)first); moveChildForeground(slider.get()); } - redraw(); + parent->setRedrawParent(true); + parent->redraw(); } void CListBox::reset() diff --git a/client/widgets/markets/TradePanels.cpp b/client/widgets/markets/TradePanels.cpp index c8dfc71b5..bb6a35212 100644 --- a/client/widgets/markets/TradePanels.cpp +++ b/client/widgets/markets/TradePanels.cpp @@ -23,6 +23,7 @@ #include "../../../lib/entities/artifact/CArtHandler.h" #include "../../../lib/texts/CGeneralTextHandler.h" #include "../../../lib/mapObjects/CGHeroInstance.h" +#include "../../../lib/entities/ResourceTypeHandler.h" CTradeableItem::CTradeableItem(const Rect & area, EType Type, int32_t ID, int32_t serial) : SelectableSlot(area, Point(1, 1)) @@ -175,7 +176,7 @@ void CTradeableItem::hover(bool on) ENGINE->statusbar()->write(LIBRARY->artifacts()->getByIndex(id)->getNameTranslated()); break; case EType::RESOURCE: - ENGINE->statusbar()->write(LIBRARY->generaltexth->restypes[id]); + ENGINE->statusbar()->write(GameResID(id).toResource()->getNameTranslated()); break; case EType::PLAYER: ENGINE->statusbar()->write(LIBRARY->generaltexth->capColors[id]); diff --git a/client/windows/CCastleInterface.cpp b/client/windows/CCastleInterface.cpp index 726ed2229..9317d1c12 100644 --- a/client/windows/CCastleInterface.cpp +++ b/client/windows/CCastleInterface.cpp @@ -58,6 +58,7 @@ #include "../../lib/campaign/CampaignState.h" #include "../../lib/entities/artifact/CArtifact.h" #include "../../lib/entities/building/CBuilding.h" +#include "../../lib/entities/ResourceTypeHandler.h" #include "../../lib/mapObjects/CGHeroInstance.h" #include "../../lib/mapObjects/CGTownInstance.h" #include "../../lib/mapObjects/TownBuildingInstance.h" @@ -292,7 +293,7 @@ CDwellingInfoBox::CDwellingInfoBox(int centerX, int centerY, const CGTownInstanc available = std::make_shared(80,190, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, LIBRARY->generaltexth->allTexts[217] + text); costPerTroop = std::make_shared(80, 227, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, LIBRARY->generaltexth->allTexts[346]); - for(int i = 0; iresourceTypeHandler->getAllObjects()) { auto res = static_cast(i); if(creature->getRecruitCost(res)) @@ -1126,7 +1127,7 @@ void CCastleBuildings::enterFountain(const BuildingID & building, BuildingSubID: else //Mystic Pond produced something; { descr += "\n\n" + hasProduced; - boost::algorithm::replace_first(descr,"%s",LIBRARY->generaltexth->restypes[town->bonusValue.first]); + boost::algorithm::replace_first(descr,"%s",GameResID(town->bonusValue.first).toResource()->getNameTranslated()); boost::algorithm::replace_first(descr,"%d",std::to_string(town->bonusValue.second)); } } @@ -1795,7 +1796,7 @@ CBuildWindow::CBuildWindow(const CGTownInstance *Town, const CBuilding * Buildin //Create components for all required resources std::vector> components; - for(GameResID i : GameResID::ALL_RESOURCES()) + for(GameResID i : LIBRARY->resourceTypeHandler->getAllObjects()) { if(building->resources[i]) { @@ -2211,7 +2212,8 @@ void CMageGuildScreen::Scroll::clickPressed(const Point & cursorPosition) return; } - auto costBase = TResources(GAME->interface()->cb->getSettings().getValue(EGameSettings::TOWNS_SPELL_RESEARCH_COST).Vector()[level]); + ResourceSet costBase; + costBase.resolveFromJson(GAME->interface()->cb->getSettings().getValue(EGameSettings::TOWNS_SPELL_RESEARCH_COST).Vector()[level]); auto costExponent = GAME->interface()->cb->getSettings().getValue(EGameSettings::TOWNS_SPELL_RESEARCH_COST_EXPONENT_PER_RESEARCH).Vector()[level].Float(); auto cost = costBase * std::pow(town->spellResearchAcceptedCounter + 1, costExponent); diff --git a/client/windows/GUIClasses.cpp b/client/windows/GUIClasses.cpp index 26eca17e3..a66cefca1 100644 --- a/client/windows/GUIClasses.cpp +++ b/client/windows/GUIClasses.cpp @@ -46,6 +46,7 @@ #include "../lib/entities/building/CBuilding.h" #include "../lib/entities/faction/CTownHandler.h" #include "../lib/entities/hero/CHeroHandler.h" +#include "../lib/entities/ResourceTypeHandler.h" #include "../lib/mapObjectConstructors/CObjectClassesHandler.h" #include "../lib/mapObjectConstructors/CommonConstructors.h" #include "../lib/mapObjects/CGHeroInstance.h" @@ -830,7 +831,7 @@ CShipyardWindow::CShipyardWindow(const TResources & cost, int state, BoatId boat build = std::make_shared(Point(42, 312), AnimationPath::builtin("IBUY30"), CButton::tooltip(LIBRARY->generaltexth->allTexts[598]), std::bind(&CShipyardWindow::close, this), EShortcut::GLOBAL_ACCEPT); build->addCallback(onBuy); - for(GameResID i = EGameResID::WOOD; i <= EGameResID::GOLD; ++i) + for(auto & i : LIBRARY->resourceTypeHandler->getAllObjects()) { if(cost[i] > GAME->interface()->cb->getResourceAmount(i)) { @@ -1215,7 +1216,6 @@ void CHillFortWindow::updateGarrisons() for(int i=0; irenderHandler().loadFont(FONT_SMALL); std::string suffix = " ... " + idStr; diff --git a/client/windows/GUIClasses.h b/client/windows/GUIClasses.h index c95c1407d..cd909cc0c 100644 --- a/client/windows/GUIClasses.h +++ b/client/windows/GUIClasses.h @@ -464,7 +464,7 @@ private: enum class State { UNAFFORDABLE, ALREADY_UPGRADED, MAKE_UPGRADE, EMPTY, UNAVAILABLE }; static constexpr std::size_t slotsCount = 7; - //todo: mithril support + //todo: configurable resource support static constexpr std::size_t resCount = 7; const CGObjectInstance * fort; diff --git a/client/windows/InfoWindows.cpp b/client/windows/InfoWindows.cpp index 10bd84aa3..017e8b5a7 100644 --- a/client/windows/InfoWindows.cpp +++ b/client/windows/InfoWindows.cpp @@ -316,14 +316,22 @@ CInfoBoxPopup::CInfoBoxPopup(Point position, const CGHeroInstance * hero) } CInfoBoxPopup::CInfoBoxPopup(Point position, const CGGarrison * garr) - : AdventureMapPopup(RCLICK_POPUP | PLAYER_COLORED, ImagePath::builtin("TOWNQVBK"), position) + : AdventureMapPopup(RCLICK_POPUP | PLAYER_COLORED, ImagePath::builtin(settings["general"]["enableUiEnhancements"].Bool() ? "GARRIPOP" : "TOWNQVBK"), position) { InfoAboutTown iah; GAME->interface()->cb->getTownInfo(garr, iah); OBJECT_CONSTRUCTION; - tooltip = std::make_shared(Point(9, 10), iah); - + + if(settings["general"]["enableUiEnhancements"].Bool()) + { + tooltip = std::make_shared(Point(9, 10), iah); + } + else + { + tooltip = std::make_shared(Point(9, 10), iah); + } + addUsedEvents(DRAG_POPUP); fitToScreen(10); diff --git a/cmake_modules/VCMIUtils.cmake b/cmake_modules/VCMIUtils.cmake index 4f4fedf29..f32c3eaa4 100644 --- a/cmake_modules/VCMIUtils.cmake +++ b/cmake_modules/VCMIUtils.cmake @@ -149,7 +149,10 @@ function(vcmi_deploy_qt deployQtToolName deployQtOptions) find_program(TOOL_DEPLOYQT NAMES ${deployQtToolName} PATHS "${qtBinDir}") if(TOOL_DEPLOYQT) install(CODE " - execute_process(COMMAND \"${TOOL_DEPLOYQT}\" ${deployQtOptions} -verbose=2) + execute_process( + COMMAND \"${TOOL_DEPLOYQT}\" ${deployQtOptions} -verbose=2 + COMMAND_ERROR_IS_FATAL ANY + ) ") else() message(WARNING "${deployQtToolName} not found, running cpack would result in broken package") diff --git a/config/campaignSets.json b/config/campaignSets.json index b30827029..81496f127 100644 --- a/config/campaignSets.json +++ b/config/campaignSets.json @@ -1,6 +1,8 @@ { "roe" : { + "index" : 0, + "text" : "core.genrltxt.762", "images" : [ {"x": 0, "y": 0, "name":"CAMPBACK"} ], "exitbutton" : {"x": 658, "y": 482, "name":"CMPSCAN" }, "items": @@ -16,6 +18,8 @@ }, "ab" : { + "index" : 1, + "text" : "core.genrltxt.745", "images" : [ {"x": 0, "y": 0, "name":"CampaignBackground6"}, @@ -34,6 +38,8 @@ }, "sod": { + "index" : 2, + "text" : "core.genrltxt.746", "images" : [ {"x": 0, "y": 0, "name":"CAMPBKX2"} ], "exitbutton" : {"x": 658, "y": 482, "name":"CMPSCAN" }, "items": @@ -49,6 +55,8 @@ }, "chr": { + "index" : 3, + "text" : "vcmi.campaignSet.chronicles", "images" : [ {"x": 0, "y": 0, "name":"CampaignBackground8"} ], "exitbutton" : {"x": 658, "y": 482, "name":"CMPSCAN" }, "items": diff --git a/config/difficulty.json b/config/difficulty.json index 50f93d545..8144e58c9 100644 --- a/config/difficulty.json +++ b/config/difficulty.json @@ -4,31 +4,31 @@ { "pawn": { - "resources": { "wood" : 30, "mercury": 15, "ore": 30, "sulfur": 15, "crystal": 15, "gems": 15, "gold": 30000, "mithril": 0 }, + "resources": { "wood" : 30, "mercury": 15, "ore": 30, "sulfur": 15, "crystal": 15, "gems": 15, "gold": 30000 }, "globalBonuses": [], "battleBonuses": [] }, "knight": { - "resources": { "wood" : 20, "mercury": 10, "ore": 20, "sulfur": 10, "crystal": 10, "gems": 10, "gold": 20000, "mithril": 0 }, + "resources": { "wood" : 20, "mercury": 10, "ore": 20, "sulfur": 10, "crystal": 10, "gems": 10, "gold": 20000 }, "globalBonuses": [], "battleBonuses": [] }, "rook": { - "resources": { "wood" : 15, "mercury": 7, "ore": 15, "sulfur": 7, "crystal": 7, "gems": 7, "gold": 15000, "mithril": 0 }, + "resources": { "wood" : 15, "mercury": 7, "ore": 15, "sulfur": 7, "crystal": 7, "gems": 7, "gold": 15000 }, "globalBonuses": [], "battleBonuses": [] }, "queen": { - "resources": { "wood" : 10, "mercury": 4, "ore": 10, "sulfur": 4, "crystal": 4, "gems": 4, "gold": 10000, "mithril": 0 }, + "resources": { "wood" : 10, "mercury": 4, "ore": 10, "sulfur": 4, "crystal": 4, "gems": 4, "gold": 10000 }, "globalBonuses": [], "battleBonuses": [] }, "king": { - "resources": { "wood" : 0, "mercury": 0, "ore": 0, "sulfur": 0, "crystal": 0, "gems": 0, "gold": 0, "mithril": 0 }, + "resources": { "wood" : 0, "mercury": 0, "ore": 0, "sulfur": 0, "crystal": 0, "gems": 0, "gold": 0 }, "globalBonuses": [], "battleBonuses": [] } @@ -37,31 +37,31 @@ { "pawn": { - "resources": { "wood" : 5, "mercury": 2, "ore": 5, "sulfur": 2, "crystal": 2, "gems": 2, "gold": 5000, "mithril": 0 }, + "resources": { "wood" : 5, "mercury": 2, "ore": 5, "sulfur": 2, "crystal": 2, "gems": 2, "gold": 5000 }, "globalBonuses": [], "battleBonuses": [] }, "knight": { - "resources": { "wood" : 10, "mercury": 4, "ore": 10, "sulfur": 4, "crystal": 4, "gems": 4, "gold": 7500, "mithril": 0 }, + "resources": { "wood" : 10, "mercury": 4, "ore": 10, "sulfur": 4, "crystal": 4, "gems": 4, "gold": 7500 }, "globalBonuses": [], "battleBonuses": [] }, "rook": { - "resources": { "wood" : 15, "mercury": 7, "ore": 15, "sulfur": 7, "crystal": 7, "gems": 7, "gold": 10000, "mithril": 0 }, + "resources": { "wood" : 15, "mercury": 7, "ore": 15, "sulfur": 7, "crystal": 7, "gems": 7, "gold": 10000 }, "globalBonuses": [], "battleBonuses": [] }, "queen": { - "resources": { "wood" : 15, "mercury": 7, "ore": 15, "sulfur": 7, "crystal": 7, "gems": 7, "gold": 10000, "mithril": 0 }, + "resources": { "wood" : 15, "mercury": 7, "ore": 15, "sulfur": 7, "crystal": 7, "gems": 7, "gold": 10000 }, "globalBonuses": [], "battleBonuses": [] }, "king": { - "resources": { "wood" : 15, "mercury": 7, "ore": 15, "sulfur": 7, "crystal": 7, "gems": 7, "gold": 10000, "mithril": 0 }, + "resources": { "wood" : 15, "mercury": 7, "ore": 15, "sulfur": 7, "crystal": 7, "gems": 7, "gold": 10000 }, "globalBonuses": [], "battleBonuses": [] } diff --git a/config/gameConfig.json b/config/gameConfig.json index 3903b4496..6ae39472d 100644 --- a/config/gameConfig.json +++ b/config/gameConfig.json @@ -111,6 +111,10 @@ [ "config/terrains.json" ], + "resources" : + [ + "config/resources.json" + ], "roads": [ "config/roads.json" diff --git a/config/keyBindingsConfig.json b/config/keyBindingsConfig.json index 14ebad395..8759dc023 100644 --- a/config/keyBindingsConfig.json +++ b/config/keyBindingsConfig.json @@ -154,6 +154,7 @@ "lobbySelectScenario": "S", "lobbyToggleChat": "C", "lobbyTurnOptions": "T", + "lobbyCampaignSets": "G", "mainMenuBack": [ "B", "Escape" ], "mainMenuCampaign": "C", "mainMenuCampaignAb": "A", diff --git a/config/resources.json b/config/resources.json index 061c1f932..b52e99f15 100644 --- a/config/resources.json +++ b/config/resources.json @@ -1,4 +1,36 @@ { - // Price of each resource in gold, in usual resource order - "resources_prices": [ 250, 500, 250, 500, 500, 500, 1, 0 ] + "wood": { + "index" : 0, + "price": 250 + }, + + "mercury": { + "index" : 1, + "price": 500 + }, + + "ore": { + "index" : 2, + "price": 250 + }, + + "sulfur": { + "index" : 3, + "price": 500 + }, + + "crystal": { + "index" : 4, + "price": 500 + }, + + "gems": { + "index" : 5, + "price": 500 + }, + + "gold": { + "index" : 6, + "price": 1 + } } diff --git a/config/schemas/creature.json b/config/schemas/creature.json index b466b42e5..364702ba9 100644 --- a/config/schemas/creature.json +++ b/config/schemas/creature.json @@ -93,17 +93,10 @@ }, "cost" : { "type" : "object", - "additionalProperties" : false, - "description" : "Cost to recruit this creature", - "properties" : { - "gold" : { "type" : "number"}, - "wood" : { "type" : "number"}, - "ore" : { "type" : "number"}, - "mercury" : { "type" : "number"}, - "sulfur" : { "type" : "number"}, - "crystal" : { "type" : "number"}, - "gems" : { "type" : "number"} - } + "additionalProperties" : { + "type" : "number" + }, + "description" : "Cost to recruit this creature" }, "speed" : { "type" : "number" }, "hitPoints" : { "type" : "number" }, diff --git a/config/schemas/flaggable.json b/config/schemas/flaggable.json index 6772a1dfe..22c5944fd 100644 --- a/config/schemas/flaggable.json +++ b/config/schemas/flaggable.json @@ -35,17 +35,10 @@ "dailyIncome" : { "type" : "object", - "additionalProperties" : false, + "additionalProperties" : { + "type" : "number" + }, "description" : "Daily income that this building provides to owner, if any", - "properties" : { - "gold" : { "type" : "number"}, - "wood" : { "type" : "number"}, - "ore" : { "type" : "number"}, - "mercury" : { "type" : "number"}, - "sulfur" : { "type" : "number"}, - "crystal" : { "type" : "number"}, - "gems" : { "type" : "number"} - } }, // Properties that might appear since this node is shared with object config diff --git a/config/schemas/mod.json b/config/schemas/mod.json index 6838007ec..ac8364194 100644 --- a/config/schemas/mod.json +++ b/config/schemas/mod.json @@ -65,7 +65,7 @@ }, "modType" : { "type" : "string", - "enum" : [ "Translation", "Town", "Test", "Templates", "Spells", "Music", "Maps", "Sounds", "Skills", "Other", "Objects", "Mechanics", "Interface", "Heroes", "Graphical", "Expansion", "Creatures", "Compatibility", "Campaigns", "Artifacts", "AI" ], + "enum" : [ "Translation", "Town", "Test", "Templates", "Spells", "Music", "Maps", "Sounds", "Skills", "Other", "Objects", "Mechanics", "Interface", "Heroes", "Graphical", "Expansion", "Creatures", "Compatibility", "Campaigns", "Artifacts", "AI", "Resources" ], "description" : "Type of mod, e.g. Town, Artifacts, Graphical." }, "author" : { @@ -303,6 +303,10 @@ "description" : "List of configuration files for terrains", "$ref" : "#/definitions/fileListOrObject" }, + "resources" : { + "description" : "List of configuration files for resources", + "$ref" : "#/definitions/fileListOrObject" + }, "roads" : { "description" : "List of configuration files for roads", "$ref" : "#/definitions/fileListOrObject" diff --git a/config/schemas/resources.json b/config/schemas/resources.json new file mode 100644 index 000000000..63e19f0be --- /dev/null +++ b/config/schemas/resources.json @@ -0,0 +1,44 @@ +{ + "type" : "object", + "$schema" : "http://json-schema.org/draft-04/schema", + "title" : "VCMI resources format", + "description" : "Format used to define new resources in VCMI", + "required" : [ "name", "price" ], + "additionalProperties" : false, + "properties" : { + "index" : { + "type" : "number", + "description" : "numeric id of h3 resource, prohibited for new resources" + }, + "name" : { + "type" : "string", + "description" : "Localizable name of this resource" + }, + "images" : { + "type" : "object", + "description" : "Resource icons of varying size", + "required" : [ "small", "medium", "large"], + "properties" : { + "small" : { + "type" : "string", + "description" : "20x18 resource icon", + "format" : "imageFile" + }, + "medium" : { + "type" : "string", + "description" : "32x32 resource icon", + "format" : "imageFile" + }, + "large" : { + "type" : "string", + "description" : "82x93 resource icon", + "format" : "imageFile" + } + } + }, + "price" : { + "type" : "number", + "description" : "Price of resource in gold" + } + } +} diff --git a/config/schemas/template.json b/config/schemas/template.json index 9bb12da5d..6c1368685 100644 --- a/config/schemas/template.json +++ b/config/schemas/template.json @@ -139,15 +139,8 @@ }, "mines" : { "type" : "object", - "additionalProperties" : false, - "properties" : { - "gold" : { "type" : "number"}, - "wood" : { "type" : "number"}, - "ore" : { "type" : "number"}, - "mercury" : { "type" : "number"}, - "sulfur" : { "type" : "number"}, - "crystal" : { "type" : "number"}, - "gems" : { "type" : "number"} + "additionalProperties" : { + "type" : "number" } }, "connection" : diff --git a/config/schemas/townBuilding.json b/config/schemas/townBuilding.json index ec4dc245b..3b4417549 100644 --- a/config/schemas/townBuilding.json +++ b/config/schemas/townBuilding.json @@ -86,31 +86,17 @@ }, "cost" : { "type" : "object", - "additionalProperties" : false, - "description" : "Resources needed to build building", - "properties" : { - "gold" : { "type" : "number"}, - "wood" : { "type" : "number"}, - "ore" : { "type" : "number"}, - "mercury" : { "type" : "number"}, - "sulfur" : { "type" : "number"}, - "crystal" : { "type" : "number"}, - "gems" : { "type" : "number"} - } + "additionalProperties" : { + "type" : "number" + }, + "description" : "Resources needed to build building" }, "produce" : { "type" : "object", - "additionalProperties" : false, - "description" : "Resources produced each day by this building", - "properties" : { - "gold" : { "type" : "number"}, - "wood" : { "type" : "number"}, - "ore" : { "type" : "number"}, - "mercury" : { "type" : "number"}, - "sulfur" : { "type" : "number"}, - "crystal" : { "type" : "number"}, - "gems" : { "type" : "number"} - } + "additionalProperties" : { + "type" : "number" + }, + "description" : "Resources produced each day by this building" }, "warMachine" : { "type" : "string", diff --git a/docs/modders/Difficulty.md b/docs/modders/Difficulty.md index fc5801f4c..846518c4f 100644 --- a/docs/modders/Difficulty.md +++ b/docs/modders/Difficulty.md @@ -14,7 +14,7 @@ Difficulty configuration is located in [config/difficulty.json](../../config/dif "pawn": //parameters for specific difficulty { //starting resources - "resources": { "wood" : 30, "mercury": 15, "ore": 30, "sulfur": 15, "crystal": 15, "gems": 15, "gold": 30000, "mithril": 0 }, + "resources": { "wood" : 30, "mercury": 15, "ore": 30, "sulfur": 15, "crystal": 15, "gems": 15, "gold": 30000 }, //bonuses will be given to player globally "globalBonuses": [], //bonuses will be given to player every battle diff --git a/docs/modders/Entities_Format/Resource_Format.md b/docs/modders/Entities_Format/Resource_Format.md new file mode 100644 index 000000000..7cbf7ae94 --- /dev/null +++ b/docs/modders/Entities_Format/Resource_Format.md @@ -0,0 +1,20 @@ +# Resource Format + +```json + // Internal field for H3 resources. Do not use for mods + "index" : "", + + // displayed name of the resource + "name" : "", + + // Resource icons of varying size + "images" : { + // 20x18 resource icon + "small" : "", + // 32x32 resource icon + "medium" : "", + // 82x93 resource icon + "large" : "" + } + +``` diff --git a/docs/modders/Game_Identifiers.md b/docs/modders/Game_Identifiers.md index 24e95b530..3fec38e33 100644 --- a/docs/modders/Game_Identifiers.md +++ b/docs/modders/Game_Identifiers.md @@ -568,7 +568,6 @@ Deprecated, please use primarySkill instead - resource.gems - resource.gold - resource.mercury -- resource.mithril - resource.ore - resource.sulfur - resource.wood diff --git a/docs/modders/Mod_File_Format.md b/docs/modders/Mod_File_Format.md index 846b07ba6..1d925f772 100644 --- a/docs/modders/Mod_File_Format.md +++ b/docs/modders/Mod_File_Format.md @@ -31,7 +31,7 @@ // Type of mod, list of all possible values: // "Translation", "Town", "Test", "Templates", "Spells", "Music", "Maps", "Sounds", "Skills", "Other", "Objects", - // "Mechanics", "Interface", "Heroes", "Graphical", "Expansion", "Creatures", "Compatibility", "Campaigns", "Artifacts", "AI" + // "Mechanics", "Interface", "Heroes", "Graphical", "Expansion", "Creatures", "Compatibility", "Campaigns", "Artifacts", "AI", "Resources" // // Some mod types have additional effects on your mod: // Translation: mod of this type is only active if player uses base language of this mod. See "language" property. diff --git a/docs/players/Game_Mechanics.md b/docs/players/Game_Mechanics.md index cc3bddd59..9640a7593 100644 --- a/docs/players/Game_Mechanics.md +++ b/docs/players/Game_Mechanics.md @@ -41,10 +41,6 @@ Stack experience interface has been merged with regular creature window. Among o VCMI offers native support for Commanders. Commanders are part of WoG mod for VCMI and require it to be enabled. However, once this is done, any new faction can use its own Commander, too. -### Mithril module - -VCMI natively supports Mithril resource known from WoG. However, it is not currently used by any mod. - ### Stack Artifact module In original WoG, there is one available Stack Artifact - Warlord's Banner, which is related directly to stack experience. VCMI natively supports any number of Stack Artifacts regardless if of Stack Experience module is enabled or not. However, currently no mods make use of this feature and it hasn't been tested for many years. diff --git a/include/vcmi/ResourceType.h b/include/vcmi/ResourceType.h new file mode 100644 index 000000000..bfe9a0aeb --- /dev/null +++ b/include/vcmi/ResourceType.h @@ -0,0 +1,25 @@ +/* + * ResourceType.h, part of VCMI engine + * + * Authors: listed in file AUTHORS in main folder + * + * License: GNU General Public License v2.0 or later + * Full text of license available in license.txt file, in main folder + * + */ + +#pragma once + +#include "Entity.h" + +VCMI_LIB_NAMESPACE_BEGIN + +class GameResID; + +class DLL_LINKAGE ResourceType : public EntityT +{ + virtual int getPrice() const = 0; +}; + + +VCMI_LIB_NAMESPACE_END diff --git a/lib/mapObjects/CObjectHandler.h b/include/vcmi/ResourceTypeService.h similarity index 54% rename from lib/mapObjects/CObjectHandler.h rename to include/vcmi/ResourceTypeService.h index 7413918b2..4788bc243 100644 --- a/lib/mapObjects/CObjectHandler.h +++ b/include/vcmi/ResourceTypeService.h @@ -1,5 +1,5 @@ /* - * CObjectHandler.h, part of VCMI engine + * ResourceTypeService.h, part of VCMI engine * * Authors: listed in file AUTHORS in main folder * @@ -7,21 +7,19 @@ * Full text of license available in license.txt file, in main folder * */ + #pragma once -#include "../GameConstants.h" +#include "EntityService.h" VCMI_LIB_NAMESPACE_BEGIN -class CGObjectInstance; -class int3; +class GameResID; +class ResourceType; -class DLL_LINKAGE CObjectHandler +class DLL_LINKAGE ResourceTypeService : public EntityServiceT { public: - std::vector resVals; //default values of resources in gold - - CObjectHandler(); }; VCMI_LIB_NAMESPACE_END diff --git a/include/vcmi/Services.h b/include/vcmi/Services.h index 9ca566e48..45ce55f9a 100644 --- a/include/vcmi/Services.h +++ b/include/vcmi/Services.h @@ -19,6 +19,7 @@ class CreatureService; class FactionService; class HeroClassService; class HeroTypeService; +class ResourceTypeService; class SkillService; class JsonNode; class BattleFieldService; @@ -52,6 +53,7 @@ public: virtual const FactionService * factions() const = 0; virtual const HeroClassService * heroClasses() const = 0; virtual const HeroTypeService * heroTypes() const = 0; + virtual const ResourceTypeService * resources() const = 0; #if SCRIPTING_ENABLED virtual const scripting::Service * scripts() const = 0; #endif diff --git a/launcher/modManager/modstateitemmodel_moc.cpp b/launcher/modManager/modstateitemmodel_moc.cpp index 2ce68d341..4ae93f6ec 100644 --- a/launcher/modManager/modstateitemmodel_moc.cpp +++ b/launcher/modManager/modstateitemmodel_moc.cpp @@ -54,6 +54,7 @@ QString ModStateItemModel::modTypeName(QString modTypeID) const QT_TR_NOOP("Campaigns"), QT_TR_NOOP("Artifacts"), QT_TR_NOOP("AI"), + QT_TR_NOOP("Resources"), }; if (modTypes.contains(modTypeID)) diff --git a/launcher/translation/belarusian.ts b/launcher/translation/belarusian.ts index f69a0bb1c..2830b4a3d 100644 --- a/launcher/translation/belarusian.ts +++ b/launcher/translation/belarusian.ts @@ -126,7 +126,7 @@ - + Description @@ -142,31 +142,31 @@ - + Uninstall - + Enable - + Disable - + Update - + Install @@ -186,151 +186,151 @@ - + Mod name - - + + Installed version - - + + Latest version - + Size - + Download size - + Authors - + License - + Contact - + Compatibility - - + + Required VCMI version - + Supported VCMI version - + please upgrade mod - - + + mods repository index - + or newer - + Supported VCMI versions - + Languages - + Required mods - + Conflicting mods - + This mod cannot be enabled because it translates into a different language. - + This mod can not be enabled because the following dependencies are not present - + This mod can not be installed because the following dependencies are not present - + This is a submod and it cannot be installed or uninstalled separately from its parent mod - + Notes - + Context menu - + Open directory - + Open repository - + Downloading %1. %p% (%v MB out of %m MB) finished - + Download failed - + Unable to download all files. Encountered errors: @@ -339,45 +339,86 @@ Encountered errors: - + Install successfully downloaded? - + Installing Heroes Chronicles - + Installing mod %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed - + Encountered errors: - + screenshots - + Screenshot %1 - + Mod is incompatible @@ -794,27 +835,27 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Active - + Disabled - + Enable - + Not Installed - + Install @@ -876,17 +917,17 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1082,102 +1123,102 @@ Offline installer consists of two files: ".exe" and ".bin" - - + Heroes III installation found! - + Copy data to VCMI folder? - + Select %1 file... param is file extension - + You have to select %1 file! param is file extension - + GOG file (*.*) - + File selection - - + + GOG installer - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - - + + GOG data - + Failed to open file: %1 - + Extracting error! - + Hash error! - + No Heroes III data! - + Selected files do not contain Heroes III data! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. - - - - + + + + Heroes III data not found! @@ -1209,7 +1250,7 @@ error reason: - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1221,7 +1262,7 @@ Exe (%n bytes): - + Bin (%n bytes): %1 @@ -1233,24 +1274,24 @@ Bin (%n bytes): - + Internal copy process failed. Enough space on device? %1 - + Exe - + Bin - + Language mismatch! %1 @@ -1258,7 +1299,7 @@ Bin (%n bytes): - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1266,7 +1307,7 @@ Bin (%n bytes): - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1644,12 +1685,12 @@ Bin (%n bytes): QObject - + Error starting executable - + Failed to start %1 Reason: %2 diff --git a/launcher/translation/bulgarian.ts b/launcher/translation/bulgarian.ts index 71ebc365b..4029c66b1 100644 --- a/launcher/translation/bulgarian.ts +++ b/launcher/translation/bulgarian.ts @@ -126,7 +126,7 @@ - + Description @@ -142,31 +142,31 @@ - + Uninstall - + Enable - + Disable - + Update - + Install @@ -186,151 +186,151 @@ - + Mod name - - + + Installed version - - + + Latest version - + Size - + Download size - + Authors - + License - + Contact - + Compatibility - - + + Required VCMI version - + Supported VCMI version - + please upgrade mod - - + + mods repository index - + or newer - + Supported VCMI versions - + Languages - + Required mods - + Conflicting mods - + This mod cannot be enabled because it translates into a different language. - + This mod can not be enabled because the following dependencies are not present - + This mod can not be installed because the following dependencies are not present - + This is a submod and it cannot be installed or uninstalled separately from its parent mod - + Notes - + Context menu - + Open directory - + Open repository - + Downloading %1. %p% (%v MB out of %m MB) finished - + Download failed - + Unable to download all files. Encountered errors: @@ -339,45 +339,86 @@ Encountered errors: - + Install successfully downloaded? - + Installing Heroes Chronicles - + Installing mod %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed - + Encountered errors: - + screenshots - + Screenshot %1 - + Mod is incompatible @@ -794,27 +835,27 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Active - + Disabled - + Enable - + Not Installed - + Install @@ -876,17 +917,17 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1082,102 +1123,102 @@ Offline installer consists of two files: ".exe" and ".bin" - - + Heroes III installation found! - + Copy data to VCMI folder? - + Select %1 file... param is file extension - + You have to select %1 file! param is file extension - + GOG file (*.*) - + File selection - - + + GOG installer - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - - + + GOG data - + Failed to open file: %1 - + Extracting error! - + Hash error! - + No Heroes III data! - + Selected files do not contain Heroes III data! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. - - - - + + + + Heroes III data not found! @@ -1209,7 +1250,7 @@ error reason: - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1220,7 +1261,7 @@ Exe (%n bytes): - + Bin (%n bytes): %1 @@ -1231,24 +1272,24 @@ Bin (%n bytes): - + Internal copy process failed. Enough space on device? %1 - + Exe - + Bin - + Language mismatch! %1 @@ -1256,7 +1297,7 @@ Bin (%n bytes): - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1264,7 +1305,7 @@ Bin (%n bytes): - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1642,12 +1683,12 @@ Bin (%n bytes): QObject - + Error starting executable - + Failed to start %1 Reason: %2 diff --git a/launcher/translation/chinese.ts b/launcher/translation/chinese.ts index 1d8be25c0..ef42e761e 100644 --- a/launcher/translation/chinese.ts +++ b/launcher/translation/chinese.ts @@ -127,7 +127,7 @@ - + Description 详细介绍 @@ -143,31 +143,31 @@ - + Uninstall 卸载 - + Enable 激活 - + Disable 禁用 - + Update 更新 - + Install 安装 @@ -187,153 +187,153 @@ 终止 - + Mod name 模组名称 - - + + Installed version 已安装的版本 - - + + Latest version 最新版本 - + Size 大小 - + Download size 下载大小 - + Authors 作者 - + License 授权许可 - + Contact 联系方式 - + Compatibility 兼容性 - - + + Required VCMI version 需要VCMI版本 - + Supported VCMI version 支持的VCMI版本 - + please upgrade mod 请更新模组 - - + + mods repository index 模组源索引号 - + or newer 或更新的版本 - + Supported VCMI versions 支持的VCMI版本 - + Languages 语言 - + Required mods Mod统一翻译为模组 前置模组 - + Conflicting mods Mod统一翻译为模组 冲突的模组 - + This mod cannot be enabled because it translates into a different language. 这个模组无法被启用,因为它被翻译成其他语言。 - + This mod can not be enabled because the following dependencies are not present 这个模组无法被启用,因为下列依赖不满足 - + This mod can not be installed because the following dependencies are not present 这个模组无法被安装,因为下列依赖不满足 - + This is a submod and it cannot be installed or uninstalled separately from its parent mod 这是一个附属模组它无法在所属模组外被直接被安装或者卸载 - + Notes 笔记注释 - + Context menu 右键菜单 - + Open directory 打开目录 - + Open repository 打开源 - + Downloading %1. %p% (%v MB out of %m MB) finished 正在下载 %1. %p% (%v MB 共 %m MB) 已完成 - + Download failed 下载失败 - + Unable to download all files. Encountered errors: @@ -346,7 +346,7 @@ Encountered errors: - + Install successfully downloaded? @@ -355,39 +355,80 @@ Install successfully downloaded? 安装下载成功的部分? - + Installing Heroes Chronicles 安装历代记 - + Installing mod %1 正在安装模组 %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed 操作失败 - + Encountered errors: 遇到问题: - + screenshots 截图 - + Screenshot %1 截图 %1 - + Mod is incompatible Mod统一翻译为模组 模组不兼容 @@ -812,27 +853,27 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and 显示开场动画 - + Active 激活 - + Disabled 禁用 - + Enable 启用 - + Not Installed 未安装 - + Install 安装 @@ -894,17 +935,17 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and 配置编辑器 - + Unsaved changes 未保存的改动 - + Do you want to discard changes? 是否放弃更改? - + JSON file is not valid! JSON文件格式错误! @@ -1108,105 +1149,105 @@ Offline installer consists of two files: ".exe" and ".bin" - 追随神迹 - + Heroes III installation found! 英雄无敌3安装目录已找到! - + Copy data to VCMI folder? 复制数据到VCMI文件夹吗? - + Select %1 file... param is file extension 选择%1文件... - + You have to select %1 file! param is file extension 你必须选择%1文件! - + GOG file (*.*) GOG文件 (*.*) - + File selection 选择文件 - - + + GOG installer GOG安装包 - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. VCMI不支持英雄无敌3高清版文件。 请选择包含《英雄无敌3:完全版》或《英雄无敌3:死亡阴影》的目录。 - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. 检测到未知或不支持的英雄无敌3版本。 请选择包含《英雄无敌3:完全版》或《英雄无敌3:死亡阴影》的目录。 - - + + GOG data GOG数据 - + Failed to open file: %1 打开文件失败:%1 - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! 您提供的是GOG Galaxy安装器!这个文件不包含游戏内容,请下载离线游戏安装器! - + Hash error! 哈希错误! - + No Heroes III data! 没有英雄无敌3数据! - + Selected files do not contain Heroes III data! 所选的文件不包含英雄无敌3数据! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. 从所选目录检测有效的英雄无敌3数据失败。 请选择已安装英雄无敌3的数据目录。 - - - - + + + + Heroes III data not found! 未找到英雄无敌3数据! - + Extracting error! 提取错误! @@ -1239,7 +1280,7 @@ error reason: VCMI编译时没有启用innoextract支持,启用了才可以从exe文件中提取数据! - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1251,7 +1292,7 @@ Exe(%n字节): - + Bin (%n bytes): %1 @@ -1263,7 +1304,7 @@ Bin (%n字节): - + Internal copy process failed. Enough space on device? %1 @@ -1272,17 +1313,17 @@ Bin (%n字节): %1 - + Exe Exe - + Bin Bin - + Language mismatch! %1 @@ -1293,7 +1334,7 @@ Bin (%n字节): %2 - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1304,7 +1345,7 @@ Bin (%n字节): %2 - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1691,12 +1732,12 @@ Bin (%n字节): QObject - + Error starting executable 启动可执行文件时出错 - + Failed to start %1 Reason: %2 启动%1失败 diff --git a/launcher/translation/czech.ts b/launcher/translation/czech.ts index 59a8e079f..afdd7daa4 100644 --- a/launcher/translation/czech.ts +++ b/launcher/translation/czech.ts @@ -126,7 +126,7 @@ - + Description Popis @@ -142,31 +142,31 @@ - + Uninstall Odinstalovat - + Enable Povolit - + Disable Zakázat - + Update Aktualizovat - + Install Instalovat @@ -186,151 +186,151 @@ Zrušit - + Mod name Název modifikace - - + + Installed version Nainstalovaná verze - - + + Latest version Nejnovější verze - + Size Velikost - + Download size Velikost ke stažení - + Authors Autoři - + License Licence - + Contact Kontakt - + Compatibility Kompabilita - - + + Required VCMI version Vyžadovaná verze VCMI - + Supported VCMI version Podporovaná verze VCMI - + please upgrade mod prosíme aktualizujte modifikaci - - + + mods repository index index repozitáře modifikací - + or newer nebo novější - + Supported VCMI versions Podporované verze VCMI - + Languages Jazyky - + Required mods Vyžadované modifikace VCMI - + Conflicting mods Modifikace v kolizi - + This mod cannot be enabled because it translates into a different language. Tuto modifikaci nelze aktivovat, protože je určena pro jiný jazyk. - + This mod can not be enabled because the following dependencies are not present Tuto modifikaci nelze aktivovat, protože chybí následující závislosti - + This mod can not be installed because the following dependencies are not present Tuto modifikaci nelze nainstalovat, protože chybí následující závislosti - + This is a submod and it cannot be installed or uninstalled separately from its parent mod Toto je podmodifikace a nelze ji nainstalovat ani odinstalovat samostatně bez hlavní modifikace - + Notes Poznámky - + Context menu Kontextové menu - + Open directory Otevřít složku - + Open repository Otevřít repozitář - + Downloading %1. %p% (%v MB out of %m MB) finished Stahování %1. %p% (%v MB z %m MB) dokončeno - + Download failed Stahování selhalo - + Unable to download all files. Encountered errors: @@ -343,7 +343,7 @@ Vyskytly se chyby: - + Install successfully downloaded? @@ -352,39 +352,80 @@ Install successfully downloaded? Nainstalovat úspěšně stažené? - + Installing Heroes Chronicles Instalování Heroes Chronicles - + Installing mod %1 Instalování modifikace %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed Operace selhala - + Encountered errors: Vyskytly se chyby: - + screenshots snímky obrazovky - + Screenshot %1 Snímek obrazovky %1 - + Mod is incompatible Modifikace není kompatibilní @@ -807,27 +848,27 @@ Režim celé obrazovky - hra pokryje celou vaši obrazovku a použije vybrané r Zobrazit intro - + Active Aktivní - + Disabled Zakázáno - + Enable Povolit - + Not Installed Nenainstalováno - + Install Instalovat @@ -889,17 +930,17 @@ Režim celé obrazovky - hra pokryje celou vaši obrazovku a použije vybrané r Editor konfigurací - + Unsaved changes Neuložené změny - + Do you want to discard changes? Chcete zahodit změny? - + JSON file is not valid! Soubor JSON není platný! @@ -1101,105 +1142,105 @@ Offline installer consists of two files: ".exe" and ".bin" - In The Wake of Gods - + Heroes III installation found! Instalace Heroes III nalezena! - + Copy data to VCMI folder? Zkopírovat data do složky VCMI? - + Select %1 file... param is file extension Vyberte soubor %1... - + You have to select %1 file! param is file extension Musíte vybrat soubor %1! - + GOG file (*.*) GOG soubor (*.*) - + File selection Výběr souboru - - + + GOG installer Instalátor GOG - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! Poskytli jste instalátor GOG Galaxy! Tento soubor neobsahuje hru. Prosím, stáhněte si záložní offline instalátor hry! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Soubory z Heroes III: HD Edition nejsou ve VCMI podporovány. Vyberte prosím adresář s Heroes III: Complete Edition nebo Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Byla nalezena neznámá nebo nepodporovaná verze Heroes III. Vyberte prosím adresář s Heroes III: Complete Edition nebo Heroes III: Shadow of Death. - - + + GOG data Data GOG - + Failed to open file: %1 Nepodařilo se otevřít soubor: %1 - + Extracting error! Chyba při rozbalování! - + Hash error! Nesouhlasí kontrolní součet! - + No Heroes III data! Chybí data Heroes III! - + Selected files do not contain Heroes III data! Vybrané soubory neobsahují data Heroes III! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. Nepodařilo se detekovat platná data Heroes III ve vybraném adresáři. Vyberte prosím adresář s nainstalovanými daty Heroes III. - - - - + + + + Heroes III data not found! Data Heroes III nenalezena! @@ -1232,7 +1273,7 @@ Důvod chyby: VCMI bylo zkompilováno bez podpory innoextract, která je potřebná pro extrahování EXE souborů! - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1250,7 +1291,7 @@ Exe (%n bajtů):¶ - + Bin (%n bytes): %1 @@ -1268,7 +1309,7 @@ Bin (%n bajtů): - + Internal copy process failed. Enough space on device? %1 @@ -1277,17 +1318,17 @@ Bin (%n bajtů): %1 - + Exe Exe - + Bin Bin - + Language mismatch! %1 @@ -1298,7 +1339,7 @@ Bin (%n bajtů): %2 - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1309,7 +1350,7 @@ Bin (%n bajtů): %2 - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1690,12 +1731,12 @@ Bin (%n bajtů): QObject - + Error starting executable Chyba při spouštění souboru - + Failed to start %1 Reason: %2 Selhal start %1 diff --git a/launcher/translation/english.ts b/launcher/translation/english.ts index 0b514e594..77be2cb58 100644 --- a/launcher/translation/english.ts +++ b/launcher/translation/english.ts @@ -126,7 +126,7 @@ - + Description @@ -142,31 +142,31 @@ - + Uninstall - + Enable - + Disable - + Update - + Install @@ -186,151 +186,151 @@ - + Mod name - - + + Installed version - - + + Latest version - + Size - + Download size - + Authors - + License - + Contact - + Compatibility - - + + Required VCMI version - + Supported VCMI version - + please upgrade mod - - + + mods repository index - + or newer - + Supported VCMI versions - + Languages - + Required mods - + Conflicting mods - + This mod cannot be enabled because it translates into a different language. - + This mod can not be enabled because the following dependencies are not present - + This mod can not be installed because the following dependencies are not present - + This is a submod and it cannot be installed or uninstalled separately from its parent mod - + Notes - + Context menu - + Open directory - + Open repository - + Downloading %1. %p% (%v MB out of %m MB) finished - + Download failed - + Unable to download all files. Encountered errors: @@ -339,45 +339,86 @@ Encountered errors: - + Install successfully downloaded? - + Installing Heroes Chronicles - + Installing mod %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed - + Encountered errors: - + screenshots - + Screenshot %1 - + Mod is incompatible @@ -794,27 +835,27 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Active - + Disabled - + Enable - + Not Installed - + Install @@ -876,17 +917,17 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1082,102 +1123,102 @@ Offline installer consists of two files: ".exe" and ".bin" - - + Heroes III installation found! - + Copy data to VCMI folder? - + Select %1 file... param is file extension - + You have to select %1 file! param is file extension - + GOG file (*.*) - + File selection - - + + GOG installer - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - - + + GOG data - + Failed to open file: %1 - + Extracting error! - + Hash error! - + No Heroes III data! - + Selected files do not contain Heroes III data! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. - - - - + + + + Heroes III data not found! @@ -1209,7 +1250,7 @@ error reason: - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1220,7 +1261,7 @@ Exe (%n bytes): - + Bin (%n bytes): %1 @@ -1231,24 +1272,24 @@ Bin (%n bytes): - + Internal copy process failed. Enough space on device? %1 - + Exe - + Bin - + Language mismatch! %1 @@ -1256,7 +1297,7 @@ Bin (%n bytes): - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1264,7 +1305,7 @@ Bin (%n bytes): - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1642,12 +1683,12 @@ Bin (%n bytes): QObject - + Error starting executable - + Failed to start %1 Reason: %2 diff --git a/launcher/translation/finnish.ts b/launcher/translation/finnish.ts index 34cec6eb5..de6f53d15 100644 --- a/launcher/translation/finnish.ts +++ b/launcher/translation/finnish.ts @@ -126,7 +126,7 @@ - + Description @@ -142,31 +142,31 @@ - + Uninstall - + Enable - + Disable - + Update - + Install @@ -186,151 +186,151 @@ - + Mod name - - + + Installed version - - + + Latest version - + Size - + Download size - + Authors - + License - + Contact - + Compatibility - - + + Required VCMI version - + Supported VCMI version - + please upgrade mod - - + + mods repository index - + or newer - + Supported VCMI versions - + Languages - + Required mods - + Conflicting mods - + This mod cannot be enabled because it translates into a different language. - + This mod can not be enabled because the following dependencies are not present - + This mod can not be installed because the following dependencies are not present - + This is a submod and it cannot be installed or uninstalled separately from its parent mod - + Notes - + Context menu - + Open directory - + Open repository - + Downloading %1. %p% (%v MB out of %m MB) finished - + Download failed - + Unable to download all files. Encountered errors: @@ -339,45 +339,86 @@ Encountered errors: - + Install successfully downloaded? - + Installing Heroes Chronicles - + Installing mod %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed - + Encountered errors: - + screenshots - + Screenshot %1 - + Mod is incompatible @@ -794,27 +835,27 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Active - + Disabled - + Enable - + Not Installed - + Install @@ -876,17 +917,17 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1082,102 +1123,102 @@ Offline installer consists of two files: ".exe" and ".bin" - - + Heroes III installation found! - + Copy data to VCMI folder? - + Select %1 file... param is file extension - + You have to select %1 file! param is file extension - + GOG file (*.*) - + File selection - - + + GOG installer - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - - + + GOG data - + Failed to open file: %1 - + Extracting error! - + Hash error! - + No Heroes III data! - + Selected files do not contain Heroes III data! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. - - - - + + + + Heroes III data not found! @@ -1209,7 +1250,7 @@ error reason: - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1220,7 +1261,7 @@ Exe (%n bytes): - + Bin (%n bytes): %1 @@ -1231,24 +1272,24 @@ Bin (%n bytes): - + Internal copy process failed. Enough space on device? %1 - + Exe - + Bin - + Language mismatch! %1 @@ -1256,7 +1297,7 @@ Bin (%n bytes): - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1264,7 +1305,7 @@ Bin (%n bytes): - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1642,12 +1683,12 @@ Bin (%n bytes): QObject - + Error starting executable - + Failed to start %1 Reason: %2 diff --git a/launcher/translation/french.ts b/launcher/translation/french.ts index d060cfbec..f56b08ef5 100644 --- a/launcher/translation/french.ts +++ b/launcher/translation/french.ts @@ -131,7 +131,7 @@ - + Description Description @@ -152,31 +152,31 @@ - + Uninstall Désinstaller - + Enable Activer - + Disable Désactiver - + Update Mettre à jour - + Install Installer @@ -186,152 +186,152 @@ Abandonner - + Mod name Nom du mod - - + + Installed version Version installée - - + + Latest version Dernière version - + Size Taille - + Download size Taille de téléchargement - + Authors Auteur(s) - + License Licence - + Contact Contact - + Compatibility Compatibilité - - + + Required VCMI version Version requise de VCMI - + Supported VCMI version Version supportée de VCMI - + please upgrade mod veuillez mettre à jour le mod - - + + mods repository index Index du dépôt de mods - + or newer ou plus récente - + Supported VCMI versions Versions supportées de VCMI - + Languages Langues - + Required mods Mods requis - + Conflicting mods Mods en conflit - + This mod cannot be enabled because it translates into a different language. Ce mod ne peut pas être activé car il traduit dans une langue différente. - + This mod can not be enabled because the following dependencies are not present Ce mod ne peut pas être activé car les dépendances suivantes sont manquantes - + This mod can not be installed because the following dependencies are not present Ce mod ne peut pas être installé car les dépendances suivantes sont manquantes - + This is a submod and it cannot be installed or uninstalled separately from its parent mod Ce sous-mod ne peut pas être installé ou mis à jour séparément du mod parent - + Notes Notes - + Context menu Menu contextuel - + Open directory Ouvrir le répertoire - + Open repository Ouvrir le dépôt - + Downloading %1. %p% (%v MB out of %m MB) finished Téléchargement %1. %p% (%v Mo sur %m Mo) terminé - + Download failed Téléchargement échoué - + Unable to download all files. Encountered errors: @@ -344,7 +344,7 @@ Erreur rencontrées: - + Install successfully downloaded? @@ -353,39 +353,80 @@ Install successfully downloaded? Installer les téchargements réussis? - + Installing Heroes Chronicles Installation de Heroes Chronicles - + Installing mod %1 Installer le mod %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed Opération échouée - + Encountered errors: Erreurs rencontrées: - + screenshots captures d'écran - + Screenshot %1 Impression écran %1 - + Mod is incompatible Ce mod est incompatible @@ -808,27 +849,27 @@ Mode Plein Écran Exclusif - le jeu couvrira entièrement votre écran et utilis Montrer l'intro - + Active Actif - + Disabled Désactivé - + Enable Activé - + Not Installed Pas Installé - + Install Installer @@ -890,17 +931,17 @@ Mode Plein Écran Exclusif - le jeu couvrira entièrement votre écran et utilis - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1103,105 +1144,105 @@ L'installateur hors ligne est composé de deux fichiers : ".exe" Installer une version compatible de "In The Wake of Gods", une extension Heroes III créée par des fans - + Heroes III installation found! Installation de Heroes III trouvée! - + Copy data to VCMI folder? Copier le dossier data dans le dossier VCMI ? - + Select %1 file... param is file extension Sélectionner le fichier %1... - + You have to select %1 file! param is file extension Vous avez sélectionné le fichier %1 ! - + GOG file (*.*) Fichier GOG (*.*) - + File selection Sélection de fichier - - + + GOG installer Installateur GOG - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Les fichiers de Heroes III: HD Edition ne sont pas pris en charge par VCMI. Veuillez sélectionner le répertoire contenant Heroes III: Complete Edition ou Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Version inconnue ou non prise en charge de Heroes III détectée. Veuillez sélectionner le répertoire contenant Heroes III: Complete Edition ou Heroes III: Shadow of Death. - - + + GOG data Données GOG - + Failed to open file: %1 - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! Vous avez fourni un installateur GOG Galaxy ! Ce fichier ne contient pas le jeu. Veuillez télécharger l'installateur de sauvegarde hors ligne ! - + Hash error! Erreur de hachage ! - + No Heroes III data! Pas de données Heroes III! - + Selected files do not contain Heroes III data! Les fichiers sélectionnés ne contiennent pas les données de Heroes III ! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. Impossible de détecter des données valides de Heroes III dans le répertoire choisi. Veuillez sélectionner le répertoire contenant les données installées de Heroes III. - - - - + + + + Heroes III data not found! Données Heroes III introuvables ! - + Extracting error! Erreur d'extraction ! @@ -1234,7 +1275,7 @@ Raison de l'erreur : VCMI a été compilé sans prise en charge de innoextract, ce qui est nécessaire pour extraire les fichiers exe ! - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1249,7 +1290,7 @@ Exe (%n octets): - + Bin (%n bytes): %1 @@ -1264,7 +1305,7 @@ Bin (%n octets): - + Internal copy process failed. Enough space on device? %1 @@ -1273,17 +1314,17 @@ Bin (%n octets): %1 - + Exe Exe - + Bin Bin - + Language mismatch! %1 @@ -1294,7 +1335,7 @@ Bin (%n octets): %2 - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1305,7 +1346,7 @@ Bin (%n octets): %2 - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1685,12 +1726,12 @@ Bin (%n octets): QObject - + Error starting executable Erreur lors du démarrage de l'exécutable - + Failed to start %1 Reason: %2 Échec de démarrage %1 diff --git a/launcher/translation/german.ts b/launcher/translation/german.ts index 49b29c9e4..552700bba 100644 --- a/launcher/translation/german.ts +++ b/launcher/translation/german.ts @@ -126,7 +126,7 @@ - + Description Beschreibung @@ -142,31 +142,31 @@ - + Uninstall Deinstallieren - + Enable Aktivieren - + Disable Deaktivieren - + Update Aktualisieren - + Install Installieren @@ -186,151 +186,151 @@ Abbrechen - + Mod name Mod-Name - - + + Installed version Installierte Version - - + + Latest version Letzte Version - + Size Größe - + Download size Downloadgröße - + Authors Autoren - + License Lizenz - + Contact Kontakt - + Compatibility Kompatibilität - - + + Required VCMI version Benötigte VCMI Version - + Supported VCMI version Unterstützte VCMI Version - + please upgrade mod bitte Mod upgraden - - + + mods repository index Mod Verzeichnis Index - + or newer oder neuer - + Supported VCMI versions Unterstützte VCMI Versionen - + Languages Sprachen - + Required mods Benötigte Mods - + Conflicting mods Mods mit Konflikt - + This mod cannot be enabled because it translates into a different language. Diese Mod kann nicht aktiviert werden, da sie in eine andere Sprache übersetzt wird. - + This mod can not be enabled because the following dependencies are not present Diese Mod kann nicht aktiviert werden, da die folgenden Abhängigkeiten nicht vorhanden sind - + This mod can not be installed because the following dependencies are not present Diese Mod kann nicht installiert werden, da die folgenden Abhängigkeiten nicht vorhanden sind - + This is a submod and it cannot be installed or uninstalled separately from its parent mod Dies ist eine Submod und kann nicht separat von der Hauptmod installiert oder deinstalliert werden - + Notes Anmerkungen - + Context menu Kontextmenü - + Open directory Ordner öffnen - + Open repository Repository öffnen - + Downloading %1. %p% (%v MB out of %m MB) finished Downloade %1. %p% (%v MB von %m MB) abgeschlossen - + Download failed Download fehlgeschlagen - + Unable to download all files. Encountered errors: @@ -343,7 +343,7 @@ Es sind Fehler aufgetreten: - + Install successfully downloaded? @@ -352,39 +352,80 @@ Install successfully downloaded? Installation erfolgreich heruntergeladen? - + Installing Heroes Chronicles Installation der Heroes Chronicles - + Installing mod %1 Installation von Mod %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed Operation fehlgeschlagen - + Encountered errors: Aufgetretene Fehler: - + screenshots Screenshots - + Screenshot %1 Screenshot %1 - + Mod is incompatible Mod ist inkompatibel @@ -807,27 +848,27 @@ Exklusiver Vollbildmodus - das Spiel nimmt den gesamten Bildschirm ein und verwe Intro anzeigen - + Active Aktiv - + Disabled Deaktiviert - + Enable Aktivieren - + Not Installed Nicht installiert - + Install Installieren @@ -889,17 +930,17 @@ Exklusiver Vollbildmodus - das Spiel nimmt den gesamten Bildschirm ein und verwe Konfigurationseditor - + Unsaved changes Nicht gespeicherte Änderungen - + Do you want to discard changes? Sollen die nicht gespeicherten Änderungen verworfen werden? - + JSON file is not valid! JSON-Datei ist nicht gültig! @@ -1102,105 +1143,105 @@ Der Offline-Installer besteht aus zwei Dateien: „.exe“ und ‚.bin‘ - Sie In The Wake of Gods - + Heroes III installation found! Heroes III-Installation gefunden! - + Copy data to VCMI folder? Daten in den VCMI-Ordner kopieren? - + Select %1 file... param is file extension %1 Datei auswählen... - + You have to select %1 file! param is file extension Sie müssen %1 Datei auswählen! - + GOG file (*.*) GOG Datei (*.*) - + File selection Dateiauswahl - - + + GOG installer GOG-Installationsprogramm - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Heroes III: HD Edition Dateien werden von VCMI nicht unterstützt. Bitte wählt das Verzeichnis mit Heroes III: Complete Edition oder Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Unbekannte oder nicht unterstützte Heroes III-Version gefunden. Bitte wählt das Verzeichnis mit Heroes III: Complete Edition oder Heroes III: Shadow of Death. - - + + GOG data GOG-Datendatei - + Failed to open file: %1 Öffnen der Datei fehlgeschlagen: %1 - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! Ein GOG Galaxy-Installationsprogramm wurde bereitgestellt! Diese Datei enthält nicht das Spiel. Bitte ladet den Offline-Backup-Installer für das Spiel herunter! - + Hash error! Hash-Fehler! - + No Heroes III data! Keine Heroes III-Daten! - + Selected files do not contain Heroes III data! Die ausgewählten Dateien enthalten keine Heroes III-Daten! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. Es konnten keine gültigen Heroes III-Daten im gewählten Verzeichnis gefunden werden. Bitte wählt das Verzeichnis mit installierten Heroes III-Daten. - - - - + + + + Heroes III data not found! Heroes III Daten nicht gefunden! - + Extracting error! Fehler beim Extrahieren! @@ -1233,7 +1274,7 @@ Fehlerursache: VCMI wurde ohne innoextract-Unterstützung kompiliert, die zum Extrahieren von exe-Dateien benötigt wird! - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1248,7 +1289,7 @@ Exe (%n Bytes): - + Bin (%n bytes): %1 @@ -1263,7 +1304,7 @@ Bin (%n Bytes): - + Internal copy process failed. Enough space on device? %1 @@ -1272,17 +1313,17 @@ Bin (%n Bytes): %1 - + Exe Exe - + Bin Bin - + Language mismatch! %1 @@ -1293,7 +1334,7 @@ Bin (%n Bytes): %2 - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1304,7 +1345,7 @@ Bin (%n Bytes): %2 - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1685,12 +1726,12 @@ Bin (%n Bytes): QObject - + Error starting executable Fehler beim Starten der ausführbaren Datei - + Failed to start %1 Reason: %2 Start von %1 fehlgeschlagen diff --git a/launcher/translation/greek.ts b/launcher/translation/greek.ts index 6862b1a5b..3578da873 100644 --- a/launcher/translation/greek.ts +++ b/launcher/translation/greek.ts @@ -126,7 +126,7 @@ - + Description @@ -142,31 +142,31 @@ - + Uninstall - + Enable - + Disable - + Update - + Install @@ -186,151 +186,151 @@ - + Mod name - - + + Installed version - - + + Latest version - + Size - + Download size - + Authors - + License - + Contact - + Compatibility - - + + Required VCMI version - + Supported VCMI version - + please upgrade mod - - + + mods repository index - + or newer - + Supported VCMI versions - + Languages - + Required mods - + Conflicting mods - + This mod cannot be enabled because it translates into a different language. - + This mod can not be enabled because the following dependencies are not present - + This mod can not be installed because the following dependencies are not present - + This is a submod and it cannot be installed or uninstalled separately from its parent mod - + Notes - + Context menu - + Open directory - + Open repository - + Downloading %1. %p% (%v MB out of %m MB) finished - + Download failed - + Unable to download all files. Encountered errors: @@ -339,45 +339,86 @@ Encountered errors: - + Install successfully downloaded? - + Installing Heroes Chronicles - + Installing mod %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed - + Encountered errors: - + screenshots - + Screenshot %1 - + Mod is incompatible @@ -794,27 +835,27 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Active - + Disabled - + Enable - + Not Installed - + Install @@ -876,17 +917,17 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1082,102 +1123,102 @@ Offline installer consists of two files: ".exe" and ".bin" - - + Heroes III installation found! - + Copy data to VCMI folder? - + Select %1 file... param is file extension - + You have to select %1 file! param is file extension - + GOG file (*.*) - + File selection - - + + GOG installer - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - - + + GOG data - + Failed to open file: %1 - + Extracting error! - + Hash error! - + No Heroes III data! - + Selected files do not contain Heroes III data! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. - - - - + + + + Heroes III data not found! @@ -1209,7 +1250,7 @@ error reason: - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1220,7 +1261,7 @@ Exe (%n bytes): - + Bin (%n bytes): %1 @@ -1231,24 +1272,24 @@ Bin (%n bytes): - + Internal copy process failed. Enough space on device? %1 - + Exe - + Bin - + Language mismatch! %1 @@ -1256,7 +1297,7 @@ Bin (%n bytes): - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1264,7 +1305,7 @@ Bin (%n bytes): - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1642,12 +1683,12 @@ Bin (%n bytes): QObject - + Error starting executable - + Failed to start %1 Reason: %2 diff --git a/launcher/translation/hungarian.ts b/launcher/translation/hungarian.ts index 0d77ed985..5b7fcd479 100644 --- a/launcher/translation/hungarian.ts +++ b/launcher/translation/hungarian.ts @@ -126,7 +126,7 @@ - + Description Leírás @@ -142,31 +142,31 @@ - + Uninstall Eltávolítás - + Enable Engedélyezés - + Disable Letiltás - + Update Frissítés - + Install Telepítés @@ -186,154 +186,154 @@ Megszakítás - + Mod name Mod neve - - + + Installed version Telepített verzió - - + + Latest version Legújabb verzió - + Size Méret - + Download size Letöltési méret - + Authors Szerzők - + License Licenc - + Contact Kapcsolat - + Compatibility Kompatibilitás - - + + Required VCMI version Szükséges VCMI verzió - + Supported VCMI version Támogatott VCMI verzió - + please upgrade mod kérjük frissítsd a modot - - + + mods repository index mod adatbázis index - + or newer vagy újabb - + Supported VCMI versions Támogatott VCMI verziók - + Languages Nyelvek - + Required mods Szükséges modok - + Conflicting mods Ütköző modok - + This mod cannot be enabled because it translates into a different language. Ez a mod nem engedélyezhető, mert másik nyelvre fordít. - + This mod can not be enabled because the following dependencies are not present Ez a mod nem engedélyezhető, mert a következő függőségek hiányoznak - + This mod can not be installed because the following dependencies are not present Ez a mod nem telepíthető, mert a következő függőségek hiányoznak - + This is a submod and it cannot be installed or uninstalled separately from its parent mod Ez egy almodul, amely nem telepíthető vagy eltávolítható külön az alapmodultól - + Notes Jegyzetek - + Context menu AI-generated, needs review by native speaker; delete this comment afterwards Kontextus menü - + Open directory AI-generated, needs review by native speaker; delete this comment afterwards Könyvtár megnyitása - + Open repository AI-generated, needs review by native speaker; delete this comment afterwards Tároló megnyitása - + Downloading %1. %p% (%v MB out of %m MB) finished Letöltés %1. %p% (%v MB / %m MB) befejeződött - + Download failed Letöltési hiba - + Unable to download all files. Encountered errors: @@ -346,7 +346,7 @@ Talált hibák: - + Install successfully downloaded? @@ -355,39 +355,80 @@ Install successfully downloaded? Sikeresen letöltött telepítés? - + Installing Heroes Chronicles Heroes Chronicles telepítése - + Installing mod %1 %1 mod telepítése - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed Művelet sikertelen - + Encountered errors: Talált hibák: - + screenshots képernyőképek - + Screenshot %1 Képernyőkép %1 - + Mod is incompatible A mod inkompatibilis @@ -811,27 +852,27 @@ Exkluzív teljes képernyő - a játék teljes képernyős módban fut, és az Bemutató megjelenítése - + Active Aktív - + Disabled Letiltva - + Enable Engedélyezés - + Not Installed Nincs telepítve - + Install Telepítés @@ -893,17 +934,17 @@ Exkluzív teljes képernyő - a játék teljes képernyős módban fut, és az - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1106,105 +1147,105 @@ Az offline telepítő két fájlból áll: ".exe" és ".bin" In The Wake of Gods - + Heroes III installation found! Heroes III telepítés megtalálva! - + Copy data to VCMI folder? Adatok másolása a VCMI mappába? - + Select %1 file... param is file extension Válasszon ki egy %1 fájlt... - + You have to select %1 file! param is file extension Ki kell választania egy %1 fájlt! - + GOG file (*.*) GOG fájl (*.*) - + File selection Fájl kiválasztása - - + + GOG installer GOG telepítő - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! GOG Galaxy telepítőt adott meg! Ez a fájl nem tartalmazza a játékot. Kérjük, töltse le az offline biztonsági telepítőt! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. A Heroes III: HD Edition fájlokat a VCMI nem támogatja. Kérjük, válassza ki a Heroes III: Complete Edition vagy Heroes III: Shadow of Death verzió könyvtárát. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Ismeretlen vagy nem támogatott Heroes III verzió található. Kérjük, válassza ki a Heroes III: Complete Edition vagy Heroes III: Shadow of Death verzió könyvtárát. - - + + GOG data GOG adatok - + Failed to open file: %1 - + Extracting error! Kicsomagolási hiba! - + Hash error! Hash hiba! - + No Heroes III data! Nincs Heroes III adat! - + Selected files do not contain Heroes III data! A kiválasztott fájlok nem tartalmaznak Heroes III adatokat! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. Nem sikerült érvényes Heroes III adatokat találni a kiválasztott könyvtárban. Kérjük, válassza ki az installált Heroes III adatokat tartalmazó könyvtárat. - - - - + + + + Heroes III data not found! Heroes III adatok nem találhatóak! @@ -1237,7 +1278,7 @@ hiba oka: A VCMI Innoextract támogatás nélkül lett lefordítva, amely szükséges az exe fájlok kicsomagolásához! - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1249,7 +1290,7 @@ Exe (%n bájt): - + Bin (%n bytes): %1 @@ -1261,7 +1302,7 @@ Bin (%n bájt): - + Internal copy process failed. Enough space on device? %1 @@ -1270,17 +1311,17 @@ Bin (%n bájt): %1 - + Exe Exe - + Bin Bin - + Language mismatch! %1 @@ -1291,7 +1332,7 @@ Bin (%n bájt): %2 - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1302,7 +1343,7 @@ Bin (%n bájt): %2 - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1683,12 +1724,12 @@ Bin (%n bájt): QObject - + Error starting executable Hiba az indítható fájl indításakor - + Failed to start %1 Reason: %2 Nem sikerült elindítani a %1 fájlt diff --git a/launcher/translation/italian.ts b/launcher/translation/italian.ts index 167f7bdd4..39ac3d8b3 100644 --- a/launcher/translation/italian.ts +++ b/launcher/translation/italian.ts @@ -126,7 +126,7 @@ - + Description Descrizione @@ -142,31 +142,31 @@ - + Uninstall Disinstalla - + Enable Abilita - + Disable Disabilita - + Update Aggiorna - + Install Installa @@ -186,154 +186,154 @@ Annulla - + Mod name Nome del mod - - + + Installed version Versione installata - - + + Latest version Ultima versione - + Size Dimensione - + Download size Dimensione download - + Authors Autori - + License Licenza - + Contact Contatto - + Compatibility Compatibilità - - + + Required VCMI version Versione VCMI richiesta - + Supported VCMI version Versione VCMI supportata - + please upgrade mod Aggiorna il mod - - + + mods repository index Indice repository mod - + or newer o più recente - + Supported VCMI versions Versioni VCMI supportate - + Languages Lingue - + Required mods Mod richiesti - + Conflicting mods Mod in conflitto - + This mod cannot be enabled because it translates into a different language. Questo mod non può essere abilitato perché traduce in una lingua diversa. - + This mod can not be enabled because the following dependencies are not present Questo mod non può essere abilitato perché le seguenti dipendenze non sono presenti - + This mod can not be installed because the following dependencies are not present Questo mod non può essere installato perché le seguenti dipendenze non sono presenti - + This is a submod and it cannot be installed or uninstalled separately from its parent mod Questo è un sottomod e non può essere installato o disinstallato separatamente dal suo mod principale - + Notes Note - + Context menu AI-generated, needs review by native speaker; delete this comment afterwards Menu contestuale - + Open directory AI-generated, needs review by native speaker; delete this comment afterwards Apri cartella - + Open repository AI-generated, needs review by native speaker; delete this comment afterwards Apri repository - + Downloading %1. %p% (%v MB out of %m MB) finished Download di %1. %p% (%v MB di %m MB) completato - + Download failed Download fallito - + Unable to download all files. Encountered errors: @@ -344,7 +344,7 @@ Encountered errors: Errori riscontrati: - + Install successfully downloaded? @@ -352,38 +352,79 @@ Install successfully downloaded? Installazione scaricata con successo? - + Installing Heroes Chronicles Installazione di Heroes Chronicles - + Installing mod %1 Installazione del mod %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed Operazione fallita - + Encountered errors: Errori riscontrati: - + screenshots screenshot - + Screenshot %1 Screenshot %1 - + Mod is incompatible Il mod è incompatibile @@ -807,27 +848,27 @@ Modalità Schermo Intero Esclusiva - il gioco coprirà l'intero schermo e u Mostra l'introduzione - + Active Attivo - + Disabled Disabilitato - + Enable Abilita - + Not Installed Non installato - + Install Installa @@ -889,17 +930,17 @@ Modalità Schermo Intero Esclusiva - il gioco coprirà l'intero schermo e u - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1102,105 +1143,105 @@ L'installer offline è composto da due file: ".exe" e ".bin& In The Wake of Gods - + Heroes III installation found! Installazione di Heroes III trovata! - + Copy data to VCMI folder? Copiare i dati nella cartella VCMI? - + Select %1 file... param is file extension Seleziona il file %1... - + You have to select %1 file! param is file extension Devi selezionare il file %1! - + GOG file (*.*) File GOG (*.*) - + File selection Selezione file - - + + GOG installer Installer GOG - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! Hai fornito un installer di GOG Galaxy! Questo file non contiene il gioco. Scarica l'installer di backup offline del gioco! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. I file di Heroes III: HD Edition non sono supportati da VCMI. Seleziona la directory con Heroes III: Complete Edition o Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Trovata una versione sconosciuta o non supportata di Heroes III. Seleziona la directory con Heroes III: Complete Edition o Heroes III: Shadow of Death. - - + + GOG data Dati GOG - + Failed to open file: %1 - + Extracting error! Errore durante l'estrazione! - + Hash error! Errore di hash! - + No Heroes III data! Nessun dato di Heroes III! - + Selected files do not contain Heroes III data! I file selezionati non contengono dati di Heroes III! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. Impossibile rilevare dati validi di Heroes III nella directory scelta. Seleziona la directory con i dati installati di Heroes III. - - - - + + + + Heroes III data not found! Dati di Heroes III non trovati! @@ -1233,7 +1274,7 @@ Motivo errore: VCMI è stato compilato senza il supporto di innoextract, necessario per estrarre i file exe! - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1248,7 +1289,7 @@ Exe (%n byte): - + Bin (%n bytes): %1 @@ -1263,7 +1304,7 @@ Bin (%n byte): - + Internal copy process failed. Enough space on device? %1 @@ -1272,17 +1313,17 @@ Bin (%n byte): %1 - + Exe Exe - + Bin Bin - + Language mismatch! %1 @@ -1293,7 +1334,7 @@ Bin (%n byte): %2 - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1304,7 +1345,7 @@ Bin (%n byte): %2 - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1684,12 +1725,12 @@ Bin (%n byte): QObject - + Error starting executable Errore nell'avvio dell'eseguibile - + Failed to start %1 Reason: %2 Impossibile avviare %1 diff --git a/launcher/translation/japanese.ts b/launcher/translation/japanese.ts index 716ee3cfe..284bd332f 100644 --- a/launcher/translation/japanese.ts +++ b/launcher/translation/japanese.ts @@ -126,7 +126,7 @@ - + Description 説明 @@ -142,31 +142,31 @@ - + Uninstall アンインストール - + Enable 有効にする - + Disable 無効にする - + Update 更新 - + Install インストール @@ -186,151 +186,151 @@ 中止 - + Mod name モッド名 - - + + Installed version インストール済みのバージョン - - + + Latest version 最新バージョン - + Size サイズ - + Download size ダウンロードサイズ - + Authors 著者 - + License ライセンス - + Contact 連絡先 - + Compatibility 互換性 - - + + Required VCMI version 必要なVCMIバージョン - + Supported VCMI version サポートされているVCMIバージョン - + please upgrade mod モッドをアップグレードしてください - - + + mods repository index モッズリポジトリインデックス - + or newer または新しい - + Supported VCMI versions サポートされているVCMIバージョン - + Languages 言語 - + Required mods 必要なモッド - + Conflicting mods 競合するモッド - + This mod cannot be enabled because it translates into a different language. このモッドは、異なる言語に翻訳されるため、有効にすることができません。 - + This mod can not be enabled because the following dependencies are not present このモッドは、以下の依存関係が存在しないため、有効にできません - + This mod can not be installed because the following dependencies are not present このモッドは、以下の依存関係が存在しないため、インストールできません - + This is a submod and it cannot be installed or uninstalled separately from its parent mod これはサブモッドであり、親モッドとは別にインストールまたはアンインストールすることはできません - + Notes ノート - + Context menu コンテキストメニュー - + Open directory ディレクトリを開く - + Open repository リポジトリを開く - + Downloading %1. %p% (%v MB out of %m MB) finished %1をダウンロード中。%p% (%v MB / %m MB) 完了しました - + Download failed ダウンロードに失敗しました - + Unable to download all files. Encountered errors: @@ -341,45 +341,86 @@ Encountered errors: エラーが発生しました: - + Install successfully downloaded? インストールが成功裏にダウンロードされましたか? - + Installing Heroes Chronicles ヒーローズクロニクルのインストール - + Installing mod %1 モッド %1 をインストール中 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed 操作が失敗しました - + Encountered errors: エラーが発生しました: - + screenshots スクリーンショット - + Screenshot %1 スクリーンショット %1 - + Mod is incompatible モッドは互換性がありません @@ -802,27 +843,27 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and イントロを表示 - + Active アクティブ - + Disabled 無効 - + Enable 有効にする - + Not Installed インストールされていません - + Install インストール @@ -884,17 +925,17 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and 設定エディタ - + Unsaved changes 保存されていない変更 - + Do you want to discard changes? 変更を破棄しますか? - + JSON file is not valid! JSONファイルは無効です! @@ -1096,104 +1137,104 @@ Offline installer consists of two files: ".exe" and ".bin" - 神々の目覚めに - + Heroes III installation found! Heroes IIIのインストールが見つかりました! - + Copy data to VCMI folder? VCMIフォルダーにデータをコピーしますか? - + Select %1 file... param is file extension %1ファイルを選択... - + You have to select %1 file! param is file extension %1ファイルを選択する必要があります! - + GOG file (*.*) GOGファイル(*.*) - + File selection ファイル選択 - - + + GOG installer GOG インストーラー - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! GOG Galaxy インストーラーを提供しました!このファイルにはゲームが含まれていません。オフラインバックアップゲームインストーラーをダウンロードしてください! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Heroes III: HDエディションのファイルはVCMIではサポートされていません。 Heroes III: 完全版またはHeroes III: 死の影のディレクトリを選択してください。 - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. 不明またはサポートされていないHeroes IIIバージョンが検出されました。 Heroes III: Complete Edition または Heroes III: Shadow of Death がインストールされているディレクトリを選択してください。 - - + + GOG data GOGデータ - + Failed to open file: %1 ファイルを開くことに失敗しました: %1 - + Extracting error! 抽出エラー! - + Hash error! ハッシュエラー! - + No Heroes III data! ヒーローズIIIのデータがありません! - + Selected files do not contain Heroes III data! 選択したファイルにはHeroes IIIのデータが含まれていません! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. 選択したディレクトリに有効なHeroes IIIデータが検出されませんでした。インストールされたHeroes IIIデータのディレクトリを選択してください。 - - - - + + + + Heroes III data not found! Heroes IIIのデータが見つかりません! @@ -1225,7 +1266,7 @@ error reason: VCMIはexeファイルを抽出するために必要なinnoextractサポートなしでコンパイルされました! - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1235,7 +1276,7 @@ Exe (%n bytes): - + Bin (%n bytes): %1 @@ -1245,7 +1286,7 @@ Bin (%n bytes): - + Internal copy process failed. Enough space on device? %1 @@ -1254,17 +1295,17 @@ Bin (%n bytes): %1 - + Exe 実行ファイル - + Bin バイナリ - + Language mismatch! %1 @@ -1275,7 +1316,7 @@ Bin (%n bytes): %2 - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1286,7 +1327,7 @@ Bin (%n bytes): %2 - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1666,12 +1707,12 @@ Bin (%n bytes): QObject - + Error starting executable 実行可能ファイルの起動エラー - + Failed to start %1 Reason: %2 %1の起動に失敗しました @@ -1859,7 +1900,6 @@ Reason: %2 インストールするファイル(設定、モッド、マップ、キャンペーン、GOGファイル)を選択してください... - This option allows you to import additional data files into your VCMI installation. At the moment, following options are supported: - Heroes III Maps (.h3m or .vmap). @@ -1868,7 +1908,7 @@ Reason: %2 - VCMI mods in zip format (.zip) - VCMI configuration files (.json) - このオプションは、VCMIインストールに追加のデータファイルをインポートすることを許可します。現時点でサポートされているオプションは以下の通りです: + このオプションは、VCMIインストールに追加のデータファイルをインポートすることを許可します。現時点でサポートされているオプションは以下の通りです: - ヒーローズIIIマップ(.h3mまたは.vmap)。 - ヒーローズIIIキャンペーン(.h3cまたは.vcmp)。 @@ -1877,6 +1917,18 @@ Reason: %2 - VCMI構成ファイル(.json) + + + This option allows you to import additional data files into your VCMI installation. At the moment, following options are supported: + + - Heroes III Maps (.h3m or .vmap). + - Heroes III Campaigns (.h3c or .vcmp). + - Heroes III Chronicles using offline backup installer from GOG.com (.exe). + - VCMI mods in zip format (.zip) + - VCMI configuration files (.json) + + + Your Heroes III version uses different language. VCMI provides translations of the game into various languages that you can use. Use this option to automatically install such translation to your language. @@ -1932,7 +1984,7 @@ To resolve this problem, please reinstall game and reimport data files using sup VCMI has detected that some of Heroes III: Armageddon's Blade data files are missing from your installation. VCMI will work, but Armageddon's Blade campaigns will not be available. To resolve this problem, please copy missing data files from Heroes III to VCMI data files directory manually or reinstall VCMI and re-import Heroes III data files - VCMIは、あなたのインストールからHeroes III: Armageddon's Bladeのデータファイルのいくつかが失われていることを検出しました。VCMIは動作しますが、Armageddon's Bladeのキャンペーンは利用できません。この問題を解決するには、Heroes IIIからVCMIデータファイルディレクトリに欠落しているデータファイルを手動でコピーするか、VCMIを再インストールし、Heroes IIIのデータファイルを再インポートしてください + VCMIは、あなたのインストールからHeroes III: Armageddon's Bladeのデータファイルのいくつかが失われていることを検出しました。VCMIは動作しますが、Armageddon's Bladeのキャンペーンは利用できません。この問題を解決するには、Heroes IIIからVCMIデータファイルディレクトリに欠落しているデータファイルを手動でコピーするか、VCMIを再インストールし、Heroes IIIのデータファイルを再インポートしてください diff --git a/launcher/translation/korean.ts b/launcher/translation/korean.ts index 0791ece63..51c99fb0f 100644 --- a/launcher/translation/korean.ts +++ b/launcher/translation/korean.ts @@ -126,7 +126,7 @@ - + Description @@ -142,31 +142,31 @@ - + Uninstall - + Enable - + Disable - + Update - + Install @@ -186,151 +186,151 @@ - + Mod name - - + + Installed version - - + + Latest version - + Size - + Download size - + Authors - + License - + Contact - + Compatibility - - + + Required VCMI version - + Supported VCMI version - + please upgrade mod - - + + mods repository index - + or newer - + Supported VCMI versions - + Languages - + Required mods - + Conflicting mods - + This mod cannot be enabled because it translates into a different language. - + This mod can not be enabled because the following dependencies are not present - + This mod can not be installed because the following dependencies are not present - + This is a submod and it cannot be installed or uninstalled separately from its parent mod - + Notes - + Context menu - + Open directory - + Open repository - + Downloading %1. %p% (%v MB out of %m MB) finished - + Download failed - + Unable to download all files. Encountered errors: @@ -339,45 +339,86 @@ Encountered errors: - + Install successfully downloaded? - + Installing Heroes Chronicles - + Installing mod %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed - + Encountered errors: - + screenshots - + Screenshot %1 - + Mod is incompatible @@ -794,27 +835,27 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Active - + Disabled - + Enable - + Not Installed - + Install @@ -876,17 +917,17 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1082,102 +1123,102 @@ Offline installer consists of two files: ".exe" and ".bin" - - + Heroes III installation found! - + Copy data to VCMI folder? - + Select %1 file... param is file extension - + You have to select %1 file! param is file extension - + GOG file (*.*) - + File selection - - + + GOG installer - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - - + + GOG data - + Failed to open file: %1 - + Extracting error! - + Hash error! - + No Heroes III data! - + Selected files do not contain Heroes III data! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. - - - - + + + + Heroes III data not found! @@ -1209,7 +1250,7 @@ error reason: - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1219,7 +1260,7 @@ Exe (%n bytes): - + Bin (%n bytes): %1 @@ -1229,24 +1270,24 @@ Bin (%n bytes): - + Internal copy process failed. Enough space on device? %1 - + Exe - + Bin - + Language mismatch! %1 @@ -1254,7 +1295,7 @@ Bin (%n bytes): - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1262,7 +1303,7 @@ Bin (%n bytes): - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1640,12 +1681,12 @@ Bin (%n bytes): QObject - + Error starting executable - + Failed to start %1 Reason: %2 diff --git a/launcher/translation/norwegian.ts b/launcher/translation/norwegian.ts index c2d952b20..084a84934 100644 --- a/launcher/translation/norwegian.ts +++ b/launcher/translation/norwegian.ts @@ -126,7 +126,7 @@ - + Description @@ -142,31 +142,31 @@ - + Uninstall - + Enable - + Disable - + Update - + Install @@ -186,151 +186,151 @@ - + Mod name - - + + Installed version - - + + Latest version - + Size - + Download size - + Authors - + License - + Contact - + Compatibility - - + + Required VCMI version - + Supported VCMI version - + please upgrade mod - - + + mods repository index - + or newer - + Supported VCMI versions - + Languages - + Required mods - + Conflicting mods - + This mod cannot be enabled because it translates into a different language. - + This mod can not be enabled because the following dependencies are not present - + This mod can not be installed because the following dependencies are not present - + This is a submod and it cannot be installed or uninstalled separately from its parent mod - + Notes - + Context menu - + Open directory - + Open repository - + Downloading %1. %p% (%v MB out of %m MB) finished - + Download failed - + Unable to download all files. Encountered errors: @@ -339,45 +339,86 @@ Encountered errors: - + Install successfully downloaded? - + Installing Heroes Chronicles - + Installing mod %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed - + Encountered errors: - + screenshots - + Screenshot %1 - + Mod is incompatible @@ -794,27 +835,27 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Active - + Disabled - + Enable - + Not Installed - + Install @@ -876,17 +917,17 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1082,102 +1123,102 @@ Offline installer consists of two files: ".exe" and ".bin" - - + Heroes III installation found! - + Copy data to VCMI folder? - + Select %1 file... param is file extension - + You have to select %1 file! param is file extension - + GOG file (*.*) - + File selection - - + + GOG installer - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - - + + GOG data - + Failed to open file: %1 - + Extracting error! - + Hash error! - + No Heroes III data! - + Selected files do not contain Heroes III data! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. - - - - + + + + Heroes III data not found! @@ -1209,7 +1250,7 @@ error reason: - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1220,7 +1261,7 @@ Exe (%n bytes): - + Bin (%n bytes): %1 @@ -1231,24 +1272,24 @@ Bin (%n bytes): - + Internal copy process failed. Enough space on device? %1 - + Exe - + Bin - + Language mismatch! %1 @@ -1256,7 +1297,7 @@ Bin (%n bytes): - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1264,7 +1305,7 @@ Bin (%n bytes): - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1642,12 +1683,12 @@ Bin (%n bytes): QObject - + Error starting executable - + Failed to start %1 Reason: %2 diff --git a/launcher/translation/polish.ts b/launcher/translation/polish.ts index 711d318b6..258d68c98 100644 --- a/launcher/translation/polish.ts +++ b/launcher/translation/polish.ts @@ -126,7 +126,7 @@ - + Description Opis @@ -142,31 +142,31 @@ - + Uninstall Odinstaluj - + Enable Włącz - + Disable Wyłącz - + Update Zaktualizuj - + Install Zainstaluj @@ -186,151 +186,151 @@ Przerwij - + Mod name Nazwa moda - - + + Installed version Zainstalowana wersja - - + + Latest version Najnowsza wersja - + Size Rozmiar - + Download size Rozmiar pobierania - + Authors Autorzy - + License Licencja - + Contact Kontakt - + Compatibility Kompatybilność - - + + Required VCMI version Wymagana wersja VCMI - + Supported VCMI version Wspierana wersja VCMI - + please upgrade mod proszę zaktualizować moda - - + + mods repository index indeks repozytorium modów - + or newer lub nowsze - + Supported VCMI versions Wspierane wersje VCMI - + Languages Języki - + Required mods Wymagane mody - + Conflicting mods Konfliktujące mody - + This mod cannot be enabled because it translates into a different language. Ten mod nie może zostać aktywowany, ponieważ wykorzystuje tłumaczenie na inny język - + This mod can not be enabled because the following dependencies are not present Ten mod nie może zostać aktywowany, ponieważ następujące zależności nie są włączone - + This mod can not be installed because the following dependencies are not present Ten mod nie może zostać zainstalowany, ponieważ następujące zależności nie są włączone - + This is a submod and it cannot be installed or uninstalled separately from its parent mod To jest moduł składowy innego moda i nie może być zainstalowany lub odinstalowany oddzielnie od moda nadrzędnego - + Notes Uwagi - + Context menu Menu kontekstowe - + Open directory Otwórz katalog - + Open repository Otwórz repozytorium - + Downloading %1. %p% (%v MB out of %m MB) finished Pobieranie %1. %p% (%v MB z %m MB) ukończono - + Download failed Pobieranie nieudane - + Unable to download all files. Encountered errors: @@ -343,7 +343,7 @@ Napotkane błędy: - + Install successfully downloaded? @@ -352,39 +352,80 @@ Install successfully downloaded? Zainstalować pomyślnie pobrane? - + Installing Heroes Chronicles Instalowanie Kronik - + Installing mod %1 Instalowanie modyfikacji %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed Operacja nieudana - + Encountered errors: Napotkane błędy: - + screenshots zrzuty ekranu - + Screenshot %1 Zrzut ekranu %1 - + Mod is incompatible Mod jest niekompatybilny @@ -807,27 +848,27 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and Pokaż intro - + Active Aktywny - + Disabled Wyłączone - + Enable Włącz - + Not Installed Nie zainstalowano - + Install Zainstaluj @@ -889,17 +930,17 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1103,105 +1144,105 @@ Instalator offline składa się z dwóch plików: ".exe" i ".bin& In The Wake of Gods - + Heroes III installation found! Znaleziono zainstalowane Heroes III! - + Copy data to VCMI folder? Skopiować dane do folderu VCMI? - + Select %1 file... param is file extension Wybierz plik %1... - + You have to select %1 file! param is file extension Musisz wybrać plik %1! - + GOG file (*.*) Instalator GOG (*.*) - + File selection Wybór pliku - - + + GOG installer Instalator GOG - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Pliki Heroes III: HD Edition nie są obsługiwane przez VCMI. Wybierz katalog z Heroes III: Complete Edition lub Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Nieznana lub nieobsługiwana wersja Heroes III została wykryta. Wybierz katalog z Heroes III: Complete Edition lub Heroes III: Shadow of Death. - - + + GOG data Dane GOG - + Failed to open file: %1 - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! Podany plik jest instalatorem GOG Galaxy! Ten plik nie zawiera gry. Proszę pobrać zapasowy instalator offline gry! - + Hash error! Błąd sumy kontrolnej! - + No Heroes III data! Brak danych Heroes III! - + Selected files do not contain Heroes III data! Wybrane pliki nie zawierają danych Heroes III! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. Nieudane znalezienie poprawnych plików Heroes III w podanej lokalizacji. Proszę wybrać folder z zainstalowanymi danymi Heroes III. - - - - + + + + Heroes III data not found! Nie odnaleziono danych Heroes III! - + Extracting error! Błąd wypakowywania! @@ -1234,7 +1275,7 @@ powód błędu: VCMI zostało skompilowane bez wsparcia innoextract, który jest niezbędny do rozpakowania plików exe - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1252,7 +1293,7 @@ Exe (%n bajtów): - + Bin (%n bytes): %1 @@ -1267,7 +1308,7 @@ Bin (%n bytes): - + Internal copy process failed. Enough space on device? %1 @@ -1276,17 +1317,17 @@ Bin (%n bytes): %1 - + Exe Exe - + Bin Bin - + Language mismatch! %1 @@ -1297,7 +1338,7 @@ Bin (%n bytes): %2 - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1308,7 +1349,7 @@ Bin (%n bytes): %2 - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1688,12 +1729,12 @@ Bin (%n bytes): QObject - + Error starting executable Błąd podczas uruchamiania pliku wykonywalnego - + Failed to start %1 Reason: %2 Nie udało się uruchomić %1 diff --git a/launcher/translation/portuguese.ts b/launcher/translation/portuguese.ts index 3d17636c8..40b44267b 100644 --- a/launcher/translation/portuguese.ts +++ b/launcher/translation/portuguese.ts @@ -126,7 +126,7 @@ - + Description Descrição @@ -142,31 +142,31 @@ - + Uninstall Desinstalar - + Enable Ativar - + Disable Desativar - + Update Atualizar - + Install Instalar @@ -186,151 +186,151 @@ Cancelar - + Mod name Nome do mod - - + + Installed version Versão instalada - - + + Latest version Última versão - + Size Tamanho - + Download size Tamanho do download - + Authors Autores - + License Licença - + Contact Contato - + Compatibility Compatibilidade - - + + Required VCMI version Versão do VCMI necessária - + Supported VCMI version Versão do VCMI suportada - + please upgrade mod por favor, atualize o mod - - + + mods repository index índice do repositório de mods - + or newer ou mais recente - + Supported VCMI versions Versões do VCMI suportadas - + Languages Idiomas - + Required mods Mods requeridos - + Conflicting mods Mods conflitantes - + This mod cannot be enabled because it translates into a different language. Este mod não pode ser ativado porque traduz para um idioma diferente. - + This mod can not be enabled because the following dependencies are not present Este mod não pode ser ativado porque as seguintes dependências estão ausentes - + This mod can not be installed because the following dependencies are not present Este mod não pode ser instalado porque as seguintes dependências estão ausentes - + This is a submod and it cannot be installed or uninstalled separately from its parent mod Este é um submod e não pode ser instalado ou desinstalado separadamente do seu mod principal - + Notes Notas - + Context menu Menu de contexto - + Open directory Abrir diretório - + Open repository Abrir repositório - + Downloading %1. %p% (%v MB out of %m MB) finished Baixando %1. %p% (%v MB de %m MB) concluído - + Download failed Falha no download - + Unable to download all files. Encountered errors: @@ -343,7 +343,7 @@ Erros encontrados: - + Install successfully downloaded? @@ -352,39 +352,80 @@ Install successfully downloaded? O download da instalação foi bem-sucedido? - + Installing Heroes Chronicles Instalando as Crônicas dos Heróis - + Installing mod %1 Instalando mod %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed Falha na operação - + Encountered errors: Erros encontrados: - + screenshots capturas de tela - + Screenshot %1 Captura de tela %1 - + Mod is incompatible O mod é incompatível @@ -807,27 +848,27 @@ Modo de tela cheia exclusivo - o jogo cobrirá toda a sua tela e usará a resolu Mostrar introdução - + Active Ativo - + Disabled Desativado - + Enable Ativar - + Not Installed Não instalado - + Install Instalar @@ -889,17 +930,17 @@ Modo de tela cheia exclusivo - o jogo cobrirá toda a sua tela e usará a resolu Editor de configuração - + Unsaved changes Alterações não salvas - + Do you want to discard changes? Deseja descartar as alterações? - + JSON file is not valid! O arquivo JSON não é válido! @@ -1102,105 +1143,105 @@ O instalador offline consiste em dois arquivos: ".exe" e ".bin&qu No Rastro dos Deuses - + Heroes III installation found! Instalação do Heroes III encontrada! - + Copy data to VCMI folder? Copiar dados para a pasta do VCMI? - + Select %1 file... param is file extension Selecionar arquivo %1... - + You have to select %1 file! param is file extension Você precisa selecionar o arquivo %1! - + GOG file (*.*) Arquivo GOG (*.*) - + File selection Seleção de arquivo - - + + GOG installer Instalador GOG - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! Você forneceu um instalador do GOG Galaxy! Este arquivo não contém o jogo. Por favor, baixe o instalador offline de backup do jogo! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Os arquivos do Heroes III: HD Edition não são suportados pelo VCMI. Por favor, selecione o diretório com Heroes III: Complete Edition ou Heroes III: Sombra da Morte. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Versão desconhecida ou não suportada do Heroes III encontrada. Por favor, selecione o diretório com Heroes III: Complete Edition ou Heroes III: Sombra da Morte. - - + + GOG data Dados do GOG - + Failed to open file: %1 Falha ao abrir o arquivo: %1 - + Extracting error! Erro ao extrair! - + Hash error! Erro de hash! - + No Heroes III data! Nenhum dado do Heroes III! - + Selected files do not contain Heroes III data! Os arquivos selecionados não contêm dados do Heroes III! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. Falha ao detectar dados válidos do Heroes III no diretório escolhido. Por favor, selecione o diretório com os dados do Heroes III instalados. - - - - + + + + Heroes III data not found! Dados do Heroes III não encontrados! @@ -1233,7 +1274,7 @@ Motivo do erro: O VCMI foi compilado sem suporte ao innoextract, que é necessário para extrair arquivos EXE! - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1248,7 +1289,7 @@ Exe (%n bytes): - + Bin (%n bytes): %1 @@ -1263,7 +1304,7 @@ Bin (%n bytes): - + Internal copy process failed. Enough space on device? %1 @@ -1272,17 +1313,17 @@ Bin (%n bytes): %1 - + Exe Exe - + Bin Bin - + Language mismatch! %1 @@ -1293,7 +1334,7 @@ Bin (%n bytes): %2 - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1304,7 +1345,7 @@ Bin (%n bytes): %2 - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1685,12 +1726,12 @@ Bin (%n bytes): QObject - + Error starting executable Erro ao iniciar o executável - + Failed to start %1 Reason: %2 Falha ao iniciar %1 diff --git a/launcher/translation/romanian.ts b/launcher/translation/romanian.ts index df13811cd..ed83e5384 100644 --- a/launcher/translation/romanian.ts +++ b/launcher/translation/romanian.ts @@ -126,7 +126,7 @@ - + Description @@ -142,31 +142,31 @@ - + Uninstall - + Enable - + Disable - + Update - + Install @@ -186,151 +186,151 @@ - + Mod name - - + + Installed version - - + + Latest version - + Size - + Download size - + Authors - + License - + Contact - + Compatibility - - + + Required VCMI version - + Supported VCMI version - + please upgrade mod - - + + mods repository index - + or newer - + Supported VCMI versions - + Languages - + Required mods - + Conflicting mods - + This mod cannot be enabled because it translates into a different language. - + This mod can not be enabled because the following dependencies are not present - + This mod can not be installed because the following dependencies are not present - + This is a submod and it cannot be installed or uninstalled separately from its parent mod - + Notes - + Context menu - + Open directory - + Open repository - + Downloading %1. %p% (%v MB out of %m MB) finished - + Download failed - + Unable to download all files. Encountered errors: @@ -339,45 +339,86 @@ Encountered errors: - + Install successfully downloaded? - + Installing Heroes Chronicles - + Installing mod %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed - + Encountered errors: - + screenshots - + Screenshot %1 - + Mod is incompatible @@ -794,27 +835,27 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Active - + Disabled - + Enable - + Not Installed - + Install @@ -876,17 +917,17 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1082,102 +1123,102 @@ Offline installer consists of two files: ".exe" and ".bin" - - + Heroes III installation found! - + Copy data to VCMI folder? - + Select %1 file... param is file extension - + You have to select %1 file! param is file extension - + GOG file (*.*) - + File selection - - + + GOG installer - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - - + + GOG data - + Failed to open file: %1 - + Extracting error! - + Hash error! - + No Heroes III data! - + Selected files do not contain Heroes III data! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. - - - - + + + + Heroes III data not found! @@ -1209,7 +1250,7 @@ error reason: - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1221,7 +1262,7 @@ Exe (%n bytes): - + Bin (%n bytes): %1 @@ -1233,24 +1274,24 @@ Bin (%n bytes): - + Internal copy process failed. Enough space on device? %1 - + Exe - + Bin - + Language mismatch! %1 @@ -1258,7 +1299,7 @@ Bin (%n bytes): - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1266,7 +1307,7 @@ Bin (%n bytes): - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1644,12 +1685,12 @@ Bin (%n bytes): QObject - + Error starting executable - + Failed to start %1 Reason: %2 diff --git a/launcher/translation/russian.ts b/launcher/translation/russian.ts index 3a3253f76..1fa7042cc 100644 --- a/launcher/translation/russian.ts +++ b/launcher/translation/russian.ts @@ -126,7 +126,7 @@ - + Description Описание @@ -142,31 +142,31 @@ - + Uninstall Удалить - + Enable Включить - + Disable Отключить - + Update Обновить - + Install Установить @@ -186,151 +186,151 @@ Отмена - + Mod name Название мода - - + + Installed version Установленная версия - - + + Latest version Последняя версия - + Size Размер - + Download size Размер загрузки - + Authors Авторы - + License Лицензия - + Contact Контакты - + Compatibility Совместимость - - + + Required VCMI version Требуемая версия VCMI - + Supported VCMI version Поддерживаемая версия VCMI - + please upgrade mod обновите мод пожалуйста - - + + mods repository index индекс репозитория модов - + or newer или новее - + Supported VCMI versions Поддерживаемые версии VCMI - + Languages Языки - + Required mods Зависимости - + Conflicting mods Конфликтующие моды - + This mod cannot be enabled because it translates into a different language. Этот мод нельзя включить, так как он предназначен для другого языка. - + This mod can not be enabled because the following dependencies are not present Этот мод нельзя включить, так как отсутствуют следующие зависимости - + This mod can not be installed because the following dependencies are not present Этот мод нельзя установить, так как отсутствуют следующие зависимости - + This is a submod and it cannot be installed or uninstalled separately from its parent mod Это вложенный мод, он не может быть установлен или удален отдельно от родительского - + Notes Замечания - + Context menu Контекстное меню - + Open directory Открыть каталог - + Open repository Открыть репозиторий - + Downloading %1. %p% (%v MB out of %m MB) finished Загрузка %1. %p% (%v MB из %m MB) завершено - + Download failed Ошибка загрузки - + Unable to download all files. Encountered errors: @@ -343,7 +343,7 @@ Encountered errors: - + Install successfully downloaded? @@ -352,39 +352,80 @@ Install successfully downloaded? Установить успешно загруженные? - + Installing Heroes Chronicles Установка Heroes Chronicles - + Installing mod %1 Установка мода %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed Операция не удалась - + Encountered errors: Возникли ошибки: - + screenshots скриншоты - + Screenshot %1 Скриншот %1 - + Mod is incompatible Мод несовместим @@ -807,27 +848,27 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and Вступление - + Active Активен - + Disabled Отключен - + Enable Включить - + Not Installed Не установлен - + Install Установить @@ -889,17 +930,17 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1102,105 +1143,105 @@ Offline installer consists of two files: ".exe" and ".bin" - Во Имя Богов - + Heroes III installation found! Установленная Heroes III обнаружена! - + Copy data to VCMI folder? Скопировать данные в папку VCMI? - + Select %1 file... param is file extension Выберите файл %1... - + You have to select %1 file! param is file extension Вы должны выбрать файл %1! - + GOG file (*.*) Файл GOG (*.*) - + File selection Выбор файла - - + + GOG installer Установщик GOG - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! Вы указали установщик GOG Galaxy! Этот файл не содержит игру. Пожалуйста, скачайте оффлайн установочный файл игры! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Файлы Heroes III: HD Edition не поддерживаются VCMI. Пожалуйста, выберите каталог с Heroes III: Complete Edition или Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Обнаружена неизвестная или неподдерживаемая версия Heroes III. Пожалуйста, выберите каталог с Heroes III: Complete Edition или Heroes III: Shadow of Death. - - + + GOG data Данные GOG - + Failed to open file: %1 - + Extracting error! Ошибка распаковки! - + Hash error! Ошибка хэша! - + No Heroes III data! Нет данных Heroes III! - + Selected files do not contain Heroes III data! Выбранные файлы не содержат данных Heroes III! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. Не удалось обнаружить корректные данные Heroes III в выбранном каталоге. Пожалуйста, выберите каталог с установленными данными Heroes III. - - - - + + + + Heroes III data not found! Данные Heroes III не найдены! @@ -1233,7 +1274,7 @@ error reason: VCMI была скомпилирована без поддержки innoextract, необходимой для распаковки exe-файлов! - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1247,7 +1288,7 @@ Exe (%n байт): - + Bin (%n bytes): %1 @@ -1261,7 +1302,7 @@ Bin (%n байт): - + Internal copy process failed. Enough space on device? %1 @@ -1270,17 +1311,17 @@ Bin (%n байт): %1 - + Exe Exe - + Bin Bin - + Language mismatch! %1 @@ -1291,7 +1332,7 @@ Bin (%n байт): %2 - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1302,7 +1343,7 @@ Bin (%n байт): %2 - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1683,12 +1724,12 @@ Bin (%n байт): QObject - + Error starting executable Ошибка запуска исполняемого файла - + Failed to start %1 Reason: %2 Не удалось запустить %1 diff --git a/launcher/translation/spanish.ts b/launcher/translation/spanish.ts index d76fc1ea4..75c5b26c2 100644 --- a/launcher/translation/spanish.ts +++ b/launcher/translation/spanish.ts @@ -126,7 +126,7 @@ - + Description Descripción @@ -142,31 +142,31 @@ - + Uninstall Desinstalar - + Enable Activar - + Disable Desactivar - + Update Actualizar - + Install Instalar @@ -186,154 +186,154 @@ Cancelar - + Mod name Nombre del mod - - + + Installed version Versión instalada - - + + Latest version Última versión - + Size Tamaño - + Download size Tamaño de descarga - + Authors Autores - + License Licencia - + Contact Contacto - + Compatibility Compatibilidad - - + + Required VCMI version Versión de VCMI requerida - + Supported VCMI version Versión de VCMI compatible - + please upgrade mod por favor actualiza el mod - - + + mods repository index Índice del repositorio de mods - + or newer o más reciente - + Supported VCMI versions Versiones de VCMI compatibles - + Languages Idiomas - + Required mods Mods requeridos - + Conflicting mods Mods conflictivos - + This mod cannot be enabled because it translates into a different language. Este mod no se puede habilitar porque traduce a un idioma diferente. - + This mod can not be enabled because the following dependencies are not present Este mod no se puede habilitar porque faltan las siguientes dependencias - + This mod can not be installed because the following dependencies are not present Este mod no se puede instalar porque faltan las siguientes dependencias - + This is a submod and it cannot be installed or uninstalled separately from its parent mod Este es un submod y no se puede instalar o desinstalar por separado del mod principal - + Notes Notas - + Context menu AI-generated, needs review by native speaker; delete this comment afterwards Menú contextual - + Open directory AI-generated, needs review by native speaker; delete this comment afterwards Abrir directorio - + Open repository AI-generated, needs review by native speaker; delete this comment afterwards Abrir repositorio - + Downloading %1. %p% (%v MB out of %m MB) finished Descargando %1. %p% (%v MB de %m MB) completado - + Download failed Descarga fallida - + Unable to download all files. Encountered errors: @@ -346,7 +346,7 @@ Errores encontrados: - + Install successfully downloaded? @@ -355,39 +355,80 @@ Install successfully downloaded? Instalar lo correctamente descargado? - + Installing Heroes Chronicles Instalando Heroes Chronicles - + Installing mod %1 Instalando mod %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed Operación fallida - + Encountered errors: Errores encontrados: - + screenshots capturas de pantalla - + Screenshot %1 Captura de pantalla %1 - + Mod is incompatible El mod es incompatible @@ -811,27 +852,27 @@ Modo Exclusivo de Pantalla Completa - el juego cubrirá toda tu pantalla y usar Comprovar al inicio - + Active Activado - + Disabled Desactivado - + Enable Activar - + Not Installed No Instalado - + Install Instalar @@ -893,17 +934,17 @@ Modo Exclusivo de Pantalla Completa - el juego cubrirá toda tu pantalla y usar - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1106,105 +1147,105 @@ El instalador offline consta de dos archivos: ".exe" y ".bin" Finalizar - + Heroes III installation found! Instalación de Heroes III encontrada! - + Copy data to VCMI folder? Copiar datos a la carpeta VCMI? - + Select %1 file... param is file extension Seleccionar archivo %1... - + You have to select %1 file! param is file extension ¡Debes seleccionar el archivo %1! - + GOG file (*.*) Archivo GOG (*.*) - + File selection Selección de archivo - - + + GOG installer Instalador de GOG - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! ¡Has proporcionado un instalador de GOG Galaxy! Este archivo no contiene el juego. ¡Por favor, descarga el instalador de respaldo del juego offline! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Los archivos de Heroes III: HD Edition no son compatibles con VCMI. Por favor, selecciona el directorio con Heroes III: Complete Edition o Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Se ha encontrado una versión desconocida o no compatible de Heroes III. Por favor, selecciona el directorio con Heroes III: Complete Edition o Heroes III: Shadow of Death. - - + + GOG data Datos de GOG - + Failed to open file: %1 - + Extracting error! Error al extraer - + Hash error! Error de hash - + No Heroes III data! ¡No hay datos de Heroes III! - + Selected files do not contain Heroes III data! Los archivos seleccionados no contienen datos de Heroes III. - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. No se han detectado datos válidos de Heroes III en el directorio elegido. Por favor, selecciona el directorio con los datos de Heroes III instalados. - - - - + + + + Heroes III data not found! ¡Datos de Heroes III no encontrados! @@ -1237,7 +1278,7 @@ razón del error: VCMI fue compilado sin soporte para innoextract, el cual es necesario para extraer archivos exe. - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1252,7 +1293,7 @@ Exe (%n bytes): - + Bin (%n bytes): %1 @@ -1267,7 +1308,7 @@ Bin (%n bytes): - + Internal copy process failed. Enough space on device? %1 @@ -1276,17 +1317,17 @@ Bin (%n bytes): %1 - + Exe Exe - + Bin Bin - + Language mismatch! %1 @@ -1297,7 +1338,7 @@ Bin (%n bytes): %2 - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1308,7 +1349,7 @@ Bin (%n bytes): %2 - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1688,12 +1729,12 @@ Bin (%n bytes): QObject - + Error starting executable Error al iniciar el ejecutable - + Failed to start %1 Reason: %2 Error al iniciar %1 diff --git a/launcher/translation/swedish.ts b/launcher/translation/swedish.ts index 1199bbf9b..6a9a63723 100644 --- a/launcher/translation/swedish.ts +++ b/launcher/translation/swedish.ts @@ -126,7 +126,7 @@ - + Description Beskrivning @@ -142,31 +142,31 @@ - + Uninstall Avinstallera - + Enable Aktivera - + Disable Inaktivera - + Update Uppdatera - + Install Installera @@ -186,151 +186,151 @@ Avbryt - + Mod name Modd-namn - - + + Installed version Installerad version - - + + Latest version Senaste versionen - + Size Storlek - + Download size Nedladdnings-storlek - + Authors Författare - + License Licens - + Contact Kontakt - + Compatibility Kompatibilitet - - + + Required VCMI version VCMI-version som krävs - + Supported VCMI version VCMI-version som stöds - + please upgrade mod vänligen uppdatera modd - - + + mods repository index moddrepositorieindex - + or newer eller nyare - + Supported VCMI versions VCMI-versioner som stöds - + Languages Språk - + Required mods Moddar som krävs - + Conflicting mods Modd-konflikter - + This mod cannot be enabled because it translates into a different language. Den här modden kan inte aktiveras eftersom den översätts till ett annat språk. - + This mod can not be enabled because the following dependencies are not present Den här modden kan inte aktiveras eftersom följande beroenden inte finns - + This mod can not be installed because the following dependencies are not present Den här modden kan inte installeras eftersom följande beroenden inte finns - + This is a submod and it cannot be installed or uninstalled separately from its parent mod Detta är en undermodd/submodd och den kan inte installeras eller avinstalleras separat från huvud-modden - + Notes Anteckningar - + Context menu Kontextmeny - + Open directory Öppna mapp - + Open repository Öppna repositorie - + Downloading %1. %p% (%v MB out of %m MB) finished Laddar ner %1. %p% (%v MB utav %m MB) slutfört - + Download failed Nedladdning misslyckades - + Unable to download all files. Encountered errors: @@ -343,7 +343,7 @@ Fel påträffades: - + Install successfully downloaded? @@ -352,39 +352,80 @@ Install successfully downloaded? Installation framgångsrikt nedladdad? - + Installing Heroes Chronicles Installerar Hjältarnas krönikor (Heroes Chronicles) - + Installing mod %1 Installerar modd %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed Åtgärden misslyckades - + Encountered errors: Fel påträffades: - + screenshots skärmdumpar/skärmbilder - + Screenshot %1 Skärmbild %1 - + Mod is incompatible Denna modd är inkompatibel @@ -807,27 +848,27 @@ Exklusivt helskärmsläge - spelet täcker hela skärmen och använder den valda Visa intro - + Active Aktiv - + Disabled Inaktiverad - + Enable Aktivera - + Not Installed Inte installerad - + Install Installera @@ -889,17 +930,17 @@ Exklusivt helskärmsläge - spelet täcker hela skärmen och använder den valda Konfigurationsredigerare - + Unsaved changes Osparade förändringar - + Do you want to discard changes? Vill du avbryta ändringarna? - + JSON file is not valid! JSON-filen är ogiltig! @@ -1102,105 +1143,105 @@ När dessa två filer finns på din enhet kan VCMI börja importera nödvändiga I gudars kölvatten (In The Wake of Gods) - + Heroes III installation found! Heroes III-installationen hittades! - + Copy data to VCMI folder? Kopiera data till VCMI-mappen? - + Select %1 file... param is file extension Välj %1-filen... - + You have to select %1 file! param is file extension Du behöver välja %1-filen! - + GOG file (*.*) GOG-fil (*.*) - + File selection Filval - - + + GOG installer Offline Backup Game Installers (gog.com) - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! Du har tillhandahållit en installationsfil av GOG Galaxy! Den här filen innehåller inte spelet. Vänligen ladda ner säkerhetskopian av spelet (offline backup game installers)! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Heroes III: HD Edition-filer stöds inte av VCMI. Vänligen välj mappen med Heroes III: Complete Edition eller Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Okänd eller ej stödd Heroes III-version hittades. Vänligen välj mappen med Heroes III: Complete Edition eller Heroes III: Shadow of Death. - - + + GOG data GOG-data - + Failed to open file: %1 Kunde inte öppna filen: %1 - + Extracting error! Extraheringsfel! - + Hash error! Hashfel! - + No Heroes III data! Inga Heroes III-data! - + Selected files do not contain Heroes III data! De valda filerna innehåller inte Heroes III-data! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. Lyckades inte upptäcka giltiga Heroes III-data i vald mapp. Vänligen välj mappen där du installerade Heroes III. - - - - + + + + Heroes III data not found! Heroes III-data hittades inte! @@ -1233,7 +1274,7 @@ Orsak till fel: VCMI kompilerades utan stöd för innoextract vilket behövs för att extrahera exe-filer! - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1248,7 +1289,7 @@ Exe (%n byte):¶ - + Bin (%n bytes): %1 @@ -1263,7 +1304,7 @@ Bin (%n byte): - + Internal copy process failed. Enough space on device? %1 @@ -1272,17 +1313,17 @@ Bin (%n byte): %1 - + Exe Exe - + Bin Bin - + Language mismatch! %1 @@ -1293,7 +1334,7 @@ Bin (%n byte): %2 - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1304,7 +1345,7 @@ Bin (%n byte): %2 - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1685,12 +1726,12 @@ Bin (%n byte): QObject - + Error starting executable Fel vid uppstart av körbar fil - + Failed to start %1 Reason: %2 Startfel %1 diff --git a/launcher/translation/turkish.ts b/launcher/translation/turkish.ts index 195e68fa0..17923bae2 100644 --- a/launcher/translation/turkish.ts +++ b/launcher/translation/turkish.ts @@ -126,7 +126,7 @@ - + Description @@ -142,31 +142,31 @@ - + Uninstall - + Enable - + Disable - + Update - + Install @@ -186,151 +186,151 @@ - + Mod name - - + + Installed version - - + + Latest version - + Size - + Download size - + Authors - + License - + Contact - + Compatibility - - + + Required VCMI version - + Supported VCMI version - + please upgrade mod - - + + mods repository index - + or newer - + Supported VCMI versions - + Languages - + Required mods - + Conflicting mods - + This mod cannot be enabled because it translates into a different language. - + This mod can not be enabled because the following dependencies are not present - + This mod can not be installed because the following dependencies are not present - + This is a submod and it cannot be installed or uninstalled separately from its parent mod - + Notes - + Context menu - + Open directory - + Open repository - + Downloading %1. %p% (%v MB out of %m MB) finished - + Download failed - + Unable to download all files. Encountered errors: @@ -339,45 +339,86 @@ Encountered errors: - + Install successfully downloaded? - + Installing Heroes Chronicles - + Installing mod %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed - + Encountered errors: - + screenshots - + Screenshot %1 - + Mod is incompatible @@ -794,27 +835,27 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Active - + Disabled - + Enable - + Not Installed - + Install @@ -876,17 +917,17 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1082,102 +1123,102 @@ Offline installer consists of two files: ".exe" and ".bin" - - + Heroes III installation found! - + Copy data to VCMI folder? - + Select %1 file... param is file extension - + You have to select %1 file! param is file extension - + GOG file (*.*) - + File selection - - + + GOG installer - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. - - + + GOG data - + Failed to open file: %1 - + Extracting error! - + Hash error! - + No Heroes III data! - + Selected files do not contain Heroes III data! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. - - - - + + + + Heroes III data not found! @@ -1209,7 +1250,7 @@ error reason: - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1219,7 +1260,7 @@ Exe (%n bytes): - + Bin (%n bytes): %1 @@ -1229,24 +1270,24 @@ Bin (%n bytes): - + Internal copy process failed. Enough space on device? %1 - + Exe - + Bin - + Language mismatch! %1 @@ -1254,7 +1295,7 @@ Bin (%n bytes): - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1262,7 +1303,7 @@ Bin (%n bytes): - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1640,12 +1681,12 @@ Bin (%n bytes): QObject - + Error starting executable - + Failed to start %1 Reason: %2 diff --git a/launcher/translation/ukrainian.ts b/launcher/translation/ukrainian.ts index cd4101c6f..47ddd1509 100644 --- a/launcher/translation/ukrainian.ts +++ b/launcher/translation/ukrainian.ts @@ -126,7 +126,7 @@ - + Description Опис @@ -142,31 +142,31 @@ - + Uninstall Видалити - + Enable Активувати - + Disable Деактивувати - + Update Оновити - + Install Встановити @@ -186,151 +186,151 @@ Відмінити - + Mod name Назва модифікації - - + + Installed version Встановлена версія - - + + Latest version Найновіша версія - + Size Розмір - + Download size Розмір для завантаження - + Authors Автори - + License Ліцензія - + Contact Контакти - + Compatibility Сумісність - - + + Required VCMI version Необхідна версія VCMI - + Supported VCMI version Підтримувана версія VCMI - + please upgrade mod будь ласка, оновіть модифікацію - - + + mods repository index каталог модифікацій - + or newer або новіше - + Supported VCMI versions Підтримувані версії VCMI - + Languages Мови - + Required mods Необхідні модифікації - + Conflicting mods Конфліктуючі модифікації - + This mod cannot be enabled because it translates into a different language. Цю модифікацію не можна увімкнути, оскільки це переклад на іншу мову. - + This mod can not be enabled because the following dependencies are not present Цю модифікацію не можна увімкнути, оскільки відсутні наступні залежності - + This mod can not be installed because the following dependencies are not present Цю модифікацію не можна встановити, оскільки відсутні наступні залежності - + This is a submod and it cannot be installed or uninstalled separately from its parent mod Це вкладена модифікація, і її не можна встановити або видалити окремо від батьківської модифікації - + Notes Примітки - + Context menu Контекстне меню - + Open directory Відкрити теку - + Open repository Відкрити репозиторій - + Downloading %1. %p% (%v MB out of %m MB) finished Завантажується %1. %p% (%v MB з %m MB) завершено - + Download failed Помилка завантаження - + Unable to download all files. Encountered errors: @@ -343,7 +343,7 @@ Encountered errors: - + Install successfully downloaded? @@ -352,39 +352,80 @@ Install successfully downloaded? Встановити успішно завантажені? - + Installing Heroes Chronicles Встановлюємо Хроніки Героїв - + Installing mod %1 Встановлення модифікації %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed Операція завершилася невдало - + Encountered errors: Виникли помилки: - + screenshots знімки екрану - + Screenshot %1 Знімок екрану %1 - + Mod is incompatible Модифікація несумісна @@ -807,27 +848,27 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and Вступні відео - + Active Активні - + Disabled Деактивований - + Enable Активувати - + Not Installed Не встановлено - + Install Встановити @@ -889,17 +930,17 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1102,105 +1143,105 @@ Offline installer consists of two files: ".exe" and ".bin" - In The Wake of Gods - + Heroes III installation found! Інсталяцію Heroes III знайдено! - + Copy data to VCMI folder? Скопіювати дані до теки VCMI? - + Select %1 file... param is file extension Оберіть файл %1... - + You have to select %1 file! param is file extension Ви повинні обрати файл %1! - + GOG file (*.*) Файл GOG (*.*) - + File selection Вибір файлу - - + + GOG installer Інсталятор GOG - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Файли Heroes III: HD Edition не підтримуються VCMI. Будь ласка, виберіть теку з Heroes III: Complete Edition або Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Знайдено невідому або не підтримувану версію Heroes III. Будь ласка, виберіть теку з Heroes III: Complete Edition або Heroes III: Shadow of Death. - - + + GOG data Дані GOG - + Failed to open file: %1 - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! Ви надали інсталятор GOG Galaxy! Цей файл не містить гри. Будь ласка, завантажте резервну копію інсталятора гри! - + Hash error! Помилка хешу! - + No Heroes III data! Немає файлів даних Heroes III! - + Selected files do not contain Heroes III data! Обрані файли не містять файлів з грою Heroes III! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. Не вдалося виявити файли Heroes III у вибраному каталозі. Будь ласка, виберіть теку зі встановленими даними Heroes III. - - - - + + + + Heroes III data not found! Файли даних Heroes III не знайдено! - + Extracting error! Помилка видобування! @@ -1233,7 +1274,7 @@ error reason: VCMI було створено без підтримки innoextract, яка необхідна для розпакування exe-файлів! - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1251,7 +1292,7 @@ Exe (%n байтів): - + Bin (%n bytes): %1 @@ -1269,7 +1310,7 @@ Bin (%n байтів): - + Internal copy process failed. Enough space on device? %1 @@ -1278,17 +1319,17 @@ Bin (%n байтів): %1 - + Exe Exe - + Bin Bin - + Language mismatch! %1 @@ -1299,7 +1340,7 @@ Bin (%n байтів): %2 - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1310,7 +1351,7 @@ Bin (%n байтів): %2 - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1691,12 +1732,12 @@ Bin (%n байтів): QObject - + Error starting executable Помилка запуску виконуваного файлу - + Failed to start %1 Reason: %2 Не вдалося запустити %1 diff --git a/launcher/translation/vietnamese.ts b/launcher/translation/vietnamese.ts index 30ca8bbe1..257abe107 100644 --- a/launcher/translation/vietnamese.ts +++ b/launcher/translation/vietnamese.ts @@ -126,7 +126,7 @@ - + Description Mô tả @@ -142,31 +142,31 @@ - + Uninstall Gỡ bỏ - + Enable Bật - + Disable Tắt - + Update Cập nhật - + Install Cài đặt @@ -186,154 +186,154 @@ Hủy - + Mod name Tên mod - - + + Installed version Phiên bản cài đặt - - + + Latest version Phiên bản mới nhất - + Size Kích thước - + Download size Kích thước tải về - + Authors Tác giả - + License Giấy phép - + Contact Liên hệ - + Compatibility Tương thích - - + + Required VCMI version Cần phiên bản VCMI - + Supported VCMI version Hỗ trợ phiên bản VCMI - + please upgrade mod hãy cập nhật mod - - + + mods repository index nơi lưu trữ mods - + or newer hoặc mới hơn - + Supported VCMI versions Phiên bản VCMI hỗ trợ - + Languages Ngôn ngữ - + Required mods Cần các mods sau - + Conflicting mods Mod không tương thích - + This mod cannot be enabled because it translates into a different language. Không thể bật mod này vì nó được dịch sang ngôn ngữ khác. - + This mod can not be enabled because the following dependencies are not present Không thể bật mod này vì không có các bản phụ sau - + This mod can not be installed because the following dependencies are not present Không thể cài đặt mod này vì không có các bản phụ sau - + This is a submod and it cannot be installed or uninstalled separately from its parent mod Đây là bản phụ, không thể cài đặt hoặc gỡ bỏ tách biệt với bản chính - + Notes Ghi chú - + Context menu AI-generated, needs review by native speaker; delete this comment afterwards Menu ngữ cảnh - + Open directory AI-generated, needs review by native speaker; delete this comment afterwards Mở thư mục - + Open repository AI-generated, needs review by native speaker; delete this comment afterwards Mở kho lưu trữ - + Downloading %1. %p% (%v MB out of %m MB) finished Tải về %1. %p% (%v MB trong số %m MB) đã tải - + Download failed Không thể tải về - + Unable to download all files. Encountered errors: @@ -346,7 +346,7 @@ Có lỗi sau: - + Install successfully downloaded? @@ -355,39 +355,80 @@ Install successfully downloaded? Cài đặt đã tải xuống thành công? - + Installing Heroes Chronicles Cài đặt Heroes Chronicles - + Installing mod %1 Cài mod %1 - + + Map exists + + + + + Map '%1' already exists. Do you want to overwrite it? + + + + + Yes to All + + + + + No to All + + + + + Import complete + + + + + %1 map(s) successfully imported. + + + + + Import failed + + + + + Failed to import the following maps: +%1 + + + + Operation failed Không mở được - + Encountered errors: Đã có lỗi: - + screenshots hình ảnh - + Screenshot %1 Hình ảnh %1 - + Mod is incompatible Mod này không tương thích @@ -827,27 +868,27 @@ Toàn màn hình riêng biệt - Sử dụng kích thước màn hình do bạn Hiện giới thiệu - + Active Bật - + Disabled Tắt - + Enable Bật - + Not Installed Chưa cài đặt - + Install Cài đặt @@ -911,17 +952,17 @@ Toàn màn hình riêng biệt - Sử dụng kích thước màn hình do bạn - + Unsaved changes - + Do you want to discard changes? - + JSON file is not valid! @@ -1126,105 +1167,105 @@ Cài đặt ngoại tuyến bao gồm hai tệp tin sau: ".exe" và &q In The Wake of Gods - + Heroes III installation found! Đã tìm thấy bản cài đặt Heroes III! - + Copy data to VCMI folder? Sao chép dữ liệu vào thư mục VCMI? - + Select %1 file... param is file extension Chọn tệp tin %1... - + You have to select %1 file! param is file extension Bạn phải chọn tệp tin %1! - + GOG file (*.*) Tệp tin GOG (*.*) - + File selection Chọn tệp tin - - + + GOG installer Trình cài đặt GOG - + You've provided a GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! Bạn đã cung cấp bộ cài đặt GOG Galaxy! Tệp tin này không chứa dữ liệu trò chơi. Hãy tải về bộ cài đặt trò chơi Heroes III. - + Heroes III: HD Edition files are not supported by VCMI. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. VCMI không hỗ trợ các tập tin Heroes III: HD Edition. Hãy chọn thư mục có Heroes III: Complete Edition hoặc Heroes III: Shadow of Death. - + Unknown or unsupported Heroes III version found. Please select the directory with Heroes III: Complete Edition or Heroes III: Shadow of Death. Phiên bản Heroes III không đúng hoặc không được hỗ trợ. Hãy chọn thư mục có Heroes III: Complete Edition hoặc Heroes III: Shadow of Death. - - + + GOG data Dữ liệu GOG - + Failed to open file: %1 - + Extracting error! Có lỗi khi giải nén - + Hash error! Lỗi hàm Hash! - + No Heroes III data! Không có dữ liệu Heroes III! - + Selected files do not contain Heroes III data! Các tệp tin đã chọn không chứa dữ liệu Heroes III! - + Failed to detect valid Heroes III data in chosen directory. Please select the directory with installed Heroes III data. Không tìm thấy dữ liệu Heroes III trong thư mục đã chọn. Hãy chọn đúng thư mục chứa dữ liệu Heroes III đã cài đặt. - - - - + + + + Heroes III data not found! Không tìm thấy dữ liệu Heroes III! @@ -1257,7 +1298,7 @@ Có thể do lỗi: VCMI không hỗ trợ tính năng để giải nén các tệp tin exe! - + SHA1 hash of provided files: Exe (%n bytes): %1 @@ -1267,7 +1308,7 @@ Exe (%n bytes): - + Bin (%n bytes): %1 @@ -1277,7 +1318,7 @@ Bin (%n bytes): - + Internal copy process failed. Enough space on device? %1 @@ -1286,19 +1327,19 @@ Bin (%n bytes): %1 - + Exe AI-generated, needs review by native speaker; delete this comment afterwards Exe - + Bin AI-generated, needs review by native speaker; delete this comment afterwards Bin - + Language mismatch! %1 @@ -1309,7 +1350,7 @@ Bin (%n bytes): %2 - + Only one file known! Maybe files are corrupted? Please download again. %1 @@ -1320,7 +1361,7 @@ Bin (%n bytes): %2 - + Unknown files! Maybe files are corrupted? Please download again. %1 @@ -1703,12 +1744,12 @@ Bin (%n bytes): QObject - + Error starting executable Có lỗi khi khởi động - + Failed to start %1 Reason: %2 Không thể khởi động %1 diff --git a/lib/CCreatureHandler.cpp b/lib/CCreatureHandler.cpp index 6a9d5c58a..e31d22a4f 100644 --- a/lib/CCreatureHandler.cpp +++ b/lib/CCreatureHandler.cpp @@ -568,7 +568,7 @@ std::vector CCreatureHandler::loadLegacyData() data["name"]["plural"].String() = parser.readString(); - for(int v=0; v<7; ++v) + for(int v=0; v CCreatureHandler::loadFromJson(const std::string & sc JsonDeserializer handler(nullptr, node); cre->serializeJson(handler); - cre->cost = ResourceSet(node["cost"]); + cre->cost.resolveFromJson(node["cost"]); LIBRARY->generaltexth->registerString(scope, cre->getNameSingularTextID(), node["name"]["singular"]); LIBRARY->generaltexth->registerString(scope, cre->getNamePluralTextID(), node["name"]["plural"]); diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index e92b376a3..f2fa8af12 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -111,6 +111,7 @@ set(lib_MAIN_SRCS entities/hero/CHeroClass.cpp entities/hero/CHeroClassHandler.cpp entities/hero/CHeroHandler.cpp + entities/ResourceTypeHandler.cpp events/ApplyDamage.cpp events/GameResumed.cpp @@ -152,7 +153,6 @@ set(lib_MAIN_SRCS mapObjects/CGResource.cpp mapObjects/TownBuildingInstance.cpp mapObjects/CGTownInstance.cpp - mapObjects/CObjectHandler.cpp mapObjects/CQuest.cpp mapObjects/CRewardableObject.cpp mapObjects/FlaggableMapObject.cpp @@ -428,6 +428,8 @@ set(lib_MAIN_HEADERS ../include/vcmi/HeroClassService.h ../include/vcmi/HeroType.h ../include/vcmi/HeroTypeService.h + ../include/vcmi/ResourceType.h + ../include/vcmi/ResourceTypeService.h ../include/vcmi/Metatype.h ../include/vcmi/Player.h ../include/vcmi/ServerCallback.h @@ -534,6 +536,7 @@ set(lib_MAIN_HEADERS entities/hero/CHeroClassHandler.h entities/hero/CHeroHandler.h entities/hero/EHeroGender.h + entities/ResourceTypeHandler.h events/ApplyDamage.h events/GameResumed.h @@ -581,7 +584,6 @@ set(lib_MAIN_HEADERS mapObjects/TownBuildingInstance.h mapObjects/CGResource.h mapObjects/CGTownInstance.h - mapObjects/CObjectHandler.h mapObjects/CQuest.h mapObjects/CRewardableObject.h mapObjects/FlaggableMapObject.h diff --git a/lib/CPlayerState.cpp b/lib/CPlayerState.cpp index 7a92d325d..4a5d833fc 100644 --- a/lib/CPlayerState.cpp +++ b/lib/CPlayerState.cpp @@ -98,7 +98,7 @@ const IBonusBearer * PlayerState::getBonusBearer() const int PlayerState::getResourceAmount(int type) const { - return vstd::atOrDefault(resources, static_cast(type), 0); + return resources[type]; } template diff --git a/lib/GameLibrary.cpp b/lib/GameLibrary.cpp index c7dc5ea8f..029acb560 100644 --- a/lib/GameLibrary.cpp +++ b/lib/GameLibrary.cpp @@ -25,6 +25,7 @@ #include "entities/faction/CTownHandler.h" #include "entities/hero/CHeroClassHandler.h" #include "entities/hero/CHeroHandler.h" +#include "entities/ResourceTypeHandler.h" #include "texts/CGeneralTextHandler.h" #include "campaign/CampaignRegionsHandler.h" #include "mapping/MapFormatSettings.h" @@ -36,7 +37,6 @@ #include "filesystem/Filesystem.h" #include "rmg/CRmgTemplateStorage.h" #include "mapObjectConstructors/CObjectClassesHandler.h" -#include "mapObjects/CObjectHandler.h" #include "mapObjects/ObstacleSetHandler.h" #include "mapping/CMapEditManager.h" #include "ScriptHandler.h" @@ -75,6 +75,11 @@ const HeroTypeService * GameLibrary::heroTypes() const return heroh.get(); } +const ResourceTypeService * GameLibrary::resources() const +{ + return resourceTypeHandler.get(); +} + #if SCRIPTING_ENABLED const scripting::Service * GameLibrary::scripts() const { @@ -171,6 +176,7 @@ void GameLibrary::initializeLibrary() createHandler(generaltexth); createHandler(bth); + createHandler(resourceTypeHandler); createHandler(roadTypeHandler); createHandler(riverTypeHandler); createHandler(terrainTypeHandler); @@ -180,7 +186,6 @@ void GameLibrary::initializeLibrary() createHandler(creh); createHandler(townh); createHandler(biomeHandler); - createHandler(objh); createHandler(objtypeh); createHandler(spellSchoolHandler); createHandler(spellh); diff --git a/lib/GameLibrary.h b/lib/GameLibrary.h index 7e7fee1ba..2218a0817 100644 --- a/lib/GameLibrary.h +++ b/lib/GameLibrary.h @@ -20,7 +20,6 @@ class CHeroClassHandler; class CCreatureHandler; class CSpellHandler; class CSkillHandler; -class CObjectHandler; class CObjectClassesHandler; class ObstacleSetHandler; class CTownHandler; @@ -31,6 +30,7 @@ class BattleFieldHandler; class IBonusTypeHandler; class CBonusTypeHandler; class TerrainTypeHandler; +class ResourceTypeHandler; class RoadTypeHandler; class RiverTypeHandler; class ObstacleHandler; @@ -60,6 +60,7 @@ public: const FactionService * factions() const override; const HeroClassService * heroClasses() const override; const HeroTypeService * heroTypes() const override; + const ResourceTypeService * resources() const override; #if SCRIPTING_ENABLED const scripting::Service * scripts() const override; #endif @@ -83,13 +84,12 @@ public: std::unique_ptr spellh; std::unique_ptr spellSchoolHandler; std::unique_ptr skillh; - // TODO: Remove ObjectHandler altogether? - std::unique_ptr objh; std::unique_ptr objtypeh; std::unique_ptr townh; std::unique_ptr generaltexth; std::unique_ptr modh; std::unique_ptr terrainTypeHandler; + std::unique_ptr resourceTypeHandler; std::unique_ptr roadTypeHandler; std::unique_ptr riverTypeHandler; std::unique_ptr identifiersHandler; diff --git a/lib/ResourceSet.cpp b/lib/ResourceSet.cpp index 5b5168cff..e60f3faef 100644 --- a/lib/ResourceSet.cpp +++ b/lib/ResourceSet.cpp @@ -13,17 +13,34 @@ #include "ResourceSet.h" #include "constants/StringConstants.h" #include "serializer/JsonSerializeFormat.h" -#include "mapObjects/CObjectHandler.h" +#include "entities/ResourceTypeHandler.h" #include "GameLibrary.h" VCMI_LIB_NAMESPACE_BEGIN -ResourceSet::ResourceSet() = default; - -ResourceSet::ResourceSet(const JsonNode & node) +ResourceSet::ResourceSet() { - for(auto i = 0; i < GameConstants::RESOURCE_QUANTITY; i++) - container[i] = static_cast(node[GameConstants::RESOURCE_NAMES[i]].Float()); + resizeContainer(); +}; + +ResourceSet::ResourceSet(const ResourceSet& rhs) + : container(rhs.container) // vector copy constructor +{ + resizeContainer(); +} + +void ResourceSet::resizeContainer() +{ + container.resize(std::max(static_cast(LIBRARY->resourceTypeHandler->getAllObjects().size()), GameConstants::RESOURCE_QUANTITY)); +} + +void ResourceSet::resolveFromJson(const JsonNode & node) +{ + for(auto & n : node.Struct()) + LIBRARY->identifiers()->requestIdentifier(n.second.getModScope(), "resource", n.first, [n, this](int32_t identifier) + { + (*this)[identifier] = static_cast(n.second.Float()); + }); } void ResourceSet::serializeJson(JsonSerializeFormat & handler, const std::string & fieldName) @@ -32,9 +49,8 @@ void ResourceSet::serializeJson(JsonSerializeFormat & handler, const std::string return; auto s = handler.enterStruct(fieldName); - //TODO: add proper support for mithril to map format - for(int idx = 0; idx < GameConstants::RESOURCE_QUANTITY - 1; idx ++) - handler.serializeInt(GameConstants::RESOURCE_NAMES[idx], this->operator[](idx), 0); + for(auto & idx : LIBRARY->resourceTypeHandler->getAllObjects()) + handler.serializeInt(idx.toResource()->getJsonKey(), this->operator[](idx), 0); } bool ResourceSet::nonZero() const @@ -76,8 +92,7 @@ void ResourceSet::applyHandicap(int percentage) static bool canAfford(const ResourceSet &res, const ResourceSet &price) { - assert(res.size() == price.size() && price.size() == GameConstants::RESOURCE_QUANTITY); - for(int i = 0; i < GameConstants::RESOURCE_QUANTITY; i++) + for(auto & i : LIBRARY->resourceTypeHandler->getAllObjects()) if(price[i] > res[i]) return false; @@ -97,8 +112,8 @@ bool ResourceSet::canAfford(const ResourceSet &price) const TResourceCap ResourceSet::marketValue() const { TResourceCap total = 0; - for(int i = 0; i < GameConstants::RESOURCE_QUANTITY; i++) - total += static_cast(LIBRARY->objh->resVals[i]) * static_cast(operator[](i)); + for(auto & i : LIBRARY->resourceTypeHandler->getAllObjects()) + total += static_cast(i.toResource()->getPrice()) * static_cast(operator[](i)); return total; } @@ -117,7 +132,7 @@ std::string ResourceSet::toString() const bool ResourceSet::nziterator::valid() const { - return cur.resType < GameResID::COUNT && cur.resVal; + return static_cast(cur.resType) < LIBRARY->resourceTypeHandler->getAllObjects().size() && cur.resVal; } ResourceSet::nziterator ResourceSet::nziterator::operator++() @@ -148,9 +163,9 @@ void ResourceSet::nziterator::advance() do { ++cur.resType; - } while(cur.resType < GameResID::COUNT && !(cur.resVal=rs[cur.resType])); + } while(static_cast(cur.resType) < LIBRARY->resourceTypeHandler->getAllObjects().size() && !(cur.resVal=rs[cur.resType])); - if(cur.resType >= GameResID::COUNT) + if(static_cast(cur.resType) >= LIBRARY->resourceTypeHandler->getAllObjects().size()) cur.resVal = -1; } diff --git a/lib/ResourceSet.h b/lib/ResourceSet.h index 9c33db5fc..a77beb7f8 100644 --- a/lib/ResourceSet.h +++ b/lib/ResourceSet.h @@ -26,16 +26,19 @@ class ResourceSet; class ResourceSet { private: - std::array container = {}; + std::vector container = {}; + DLL_LINKAGE void resizeContainer(); public: - // read resources set from json. Format example: { "gold": 500, "wood":5 } - DLL_LINKAGE ResourceSet(const JsonNode & node); DLL_LINKAGE ResourceSet(); + DLL_LINKAGE ResourceSet(const ResourceSet& rhs); + + DLL_LINKAGE void resolveFromJson(const JsonNode & node); #define scalarOperator(OPSIGN) \ ResourceSet& operator OPSIGN ## =(const TResource &rhs) \ { \ + resizeContainer(); \ for(auto i = 0; i < container.size(); i++) \ container.at(i) OPSIGN ## = rhs; \ \ @@ -45,6 +48,7 @@ public: #define vectorOperator(OPSIGN) \ ResourceSet& operator OPSIGN ## =(const ResourceSet &rhs) \ { \ + resizeContainer(); \ for(auto i = 0; i < container.size(); i++) \ container.at(i) OPSIGN ## = rhs[i]; \ \ @@ -84,21 +88,31 @@ public: // Array-like interface TResource & operator[](GameResID index) { + resizeContainer(); return operator[](index.getNum()); } const TResource & operator[](GameResID index) const { + if (index.getNum() >= container.size()) { + static const TResource defaultValue{}; + return defaultValue; + } return operator[](index.getNum()); } TResource & operator[](size_t index) { + resizeContainer(); return container.at(index); } const TResource & operator[](size_t index) const { + if (index >= container.size()) { + static const TResource defaultValue{}; + return defaultValue; + } return container.at(index); } @@ -176,6 +190,15 @@ public: return *this; } + ResourceSet& operator=(const ResourceSet& rhs) + { + if (this != &rhs) + { + container = rhs.container; + } + return *this; + } + ResourceSet operator-() const { ResourceSet ret; diff --git a/lib/constants/EntityIdentifiers.cpp b/lib/constants/EntityIdentifiers.cpp index 17421a685..35158f6e5 100644 --- a/lib/constants/EntityIdentifiers.cpp +++ b/lib/constants/EntityIdentifiers.cpp @@ -21,6 +21,8 @@ #include #include #include +#include +#include #include #include @@ -37,6 +39,7 @@ #include "entities/faction/CFaction.h" #include "entities/hero/CHero.h" #include "entities/hero/CHeroClass.h" +#include "entities/ResourceTypeHandler.h" #include "mapObjectConstructors/AObjectTypeHandler.h" #include "constants/StringConstants.h" #include "texts/CGeneralTextHandler.h" @@ -398,6 +401,16 @@ const HeroType * HeroTypeID::toEntity(const Services * services) const return services->heroTypes()->getByIndex(num); } +const Resource * GameResID::toResource() const +{ + return dynamic_cast(toEntity(LIBRARY)); +} + +const ResourceType * GameResID::toEntity(const Services * services) const +{ + return services->resources()->getByIndex(num); +} + si32 SpellID::decode(const std::string & identifier) { if (identifier == "preset") @@ -628,7 +641,7 @@ si32 GameResID::decode(const std::string & identifier) std::string GameResID::encode(const si32 index) { - return GameConstants::RESOURCE_NAMES[index]; + return GameResID(index).toResource()->getJsonKey(); } si32 BuildingTypeUniqueID::decode(const std::string & identifier) @@ -676,21 +689,6 @@ const std::array & PrimarySkill::ALL_SKILLS() return allSkills; } -const std::array & GameResID::ALL_RESOURCES() -{ - static const std::array allResources = { - GameResID(WOOD), - GameResID(MERCURY), - GameResID(ORE), - GameResID(SULFUR), - GameResID(CRYSTAL), - GameResID(GEMS), - GameResID(GOLD) - }; - - return allResources; -} - std::string SecondarySkill::entityType() { return "secondarySkill"; diff --git a/lib/constants/EntityIdentifiers.h b/lib/constants/EntityIdentifiers.h index dcc87beab..0018bf303 100644 --- a/lib/constants/EntityIdentifiers.h +++ b/lib/constants/EntityIdentifiers.h @@ -25,6 +25,9 @@ class CHero; class CHeroClass; class HeroClass; class HeroTypeService; +class Resource; +class ResourceType; +class ResourceTypeService; class CFaction; class Faction; class Skill; @@ -1058,7 +1061,6 @@ public: CRYSTAL, GEMS, GOLD, - MITHRIL, COUNT, WOOD_AND_ORE = -4, // special case for town bonus resource @@ -1077,7 +1079,8 @@ public: static std::string encode(const si32 index); static std::string entityType(); - static const std::array & ALL_RESOURCES(); + const Resource * toResource() const; + const ResourceType * toEntity(const Services * services) const; }; class DLL_LINKAGE BuildingTypeUniqueID : public Identifier diff --git a/lib/constants/NumericConstants.h b/lib/constants/NumericConstants.h index 09c408a6d..a7fef4c0f 100644 --- a/lib/constants/NumericConstants.h +++ b/lib/constants/NumericConstants.h @@ -37,7 +37,7 @@ namespace GameConstants constexpr int SKILL_QUANTITY=28; constexpr int PRIMARY_SKILLS=4; - constexpr int RESOURCE_QUANTITY=8; + constexpr int RESOURCE_QUANTITY=7; constexpr int HEROES_PER_TYPE=8; //amount of heroes of each type // amounts of OH3 objects. Can be changed by mods, should be used only during H3 loading phase diff --git a/lib/constants/StringConstants.h b/lib/constants/StringConstants.h index e78323871..97016e852 100644 --- a/lib/constants/StringConstants.h +++ b/lib/constants/StringConstants.h @@ -19,7 +19,7 @@ VCMI_LIB_NAMESPACE_BEGIN namespace GameConstants { const std::string RESOURCE_NAMES [RESOURCE_QUANTITY] = { - "wood", "mercury", "ore", "sulfur", "crystal", "gems", "gold", "mithril" + "wood", "mercury", "ore", "sulfur", "crystal", "gems", "gold" }; const std::string PLAYER_COLOR_NAMES [PlayerColor::PLAYER_LIMIT_I] = { diff --git a/lib/entities/ResourceTypeHandler.cpp b/lib/entities/ResourceTypeHandler.cpp new file mode 100644 index 000000000..ffea20fee --- /dev/null +++ b/lib/entities/ResourceTypeHandler.cpp @@ -0,0 +1,83 @@ +/* + * ResourceTypeHandler.cpp, part of VCMI engine + * + * Authors: listed in file AUTHORS in main folder + * + * License: GNU General Public License v2.0 or later + * Full text of license available in license.txt file, in main folder + * + */ + +#include "StdInc.h" +#include "ResourceTypeHandler.h" + +#include "../GameLibrary.h" +#include "../json/JsonNode.h" +#include "../texts/CGeneralTextHandler.h" +#include "../texts/TextIdentifier.h" + +VCMI_LIB_NAMESPACE_BEGIN + +std::string Resource::getNameTextID() const +{ + if(id.getNum() < GameConstants::RESOURCE_QUANTITY) // OH3 resources + return TextIdentifier("core.restypes", id).get(); + return TextIdentifier( "resources", modScope, identifier, "name" ).get(); +} + +std::string Resource::getNameTranslated() const +{ + return LIBRARY->generaltexth->translate(getNameTextID()); +} + +void Resource::registerIcons(const IconRegistar & cb) const +{ + cb(getIconIndex(), 0, "SMALRES", iconSmall); + cb(getIconIndex(), 0, "RESOURCE", iconMedium); + cb(getIconIndex(), 0, "RESOUR82", iconLarge); +} + +std::vector ResourceTypeHandler::loadLegacyData() +{ + objects.resize(GameConstants::RESOURCE_QUANTITY); + + return std::vector(GameConstants::RESOURCE_QUANTITY, JsonNode(JsonMap())); +} + +std::shared_ptr ResourceTypeHandler::loadFromJson(const std::string & scope, const JsonNode & json, const std::string & identifier, size_t index) +{ + auto ret = std::make_shared(); + + ret->id = GameResID(index); + ret->modScope = scope; + ret->identifier = identifier; + + ret->price = json["price"].Integer(); + ret->iconSmall = json["images"]["small"].String(); + ret->iconMedium = json["images"]["medium"].String(); + ret->iconLarge = json["images"]["large"].String(); + + if(ret->id.getNum() >= GameConstants::RESOURCE_QUANTITY) // not OH3 resources + LIBRARY->generaltexth->registerString(scope, ret->getNameTextID(), json["name"]); + + return ret; +} + +const std::vector & ResourceTypeHandler::getTypeNames() const +{ + static const std::vector types = { "resource" }; + return types; +} + +std::vector ResourceTypeHandler::getAllObjects() const +{ + std::vector result; + + for (const auto & resource : objects) + if(resource) + result.push_back(resource->getId()); + + return result; +} + +VCMI_LIB_NAMESPACE_END diff --git a/lib/entities/ResourceTypeHandler.h b/lib/entities/ResourceTypeHandler.h new file mode 100644 index 000000000..66d7f2701 --- /dev/null +++ b/lib/entities/ResourceTypeHandler.h @@ -0,0 +1,66 @@ +/* + * ResourceTypeHandler.h, part of VCMI engine + * + * Authors: listed in file AUTHORS in main folder + * + * License: GNU General Public License v2.0 or later + * Full text of license available in license.txt file, in main folder + * + */ + +#pragma once + +#include +#include +#include +#include +#include "../constants/EntityIdentifiers.h" +#include "../IHandlerBase.h" +#include "../filesystem/ResourcePath.h" + +VCMI_LIB_NAMESPACE_BEGIN + +class ResourceTypeHandler; + +class DLL_LINKAGE Resource : public ResourceType +{ + friend class ResourceTypeHandler; + + GameResID id; //backlink + + int price; + std::string iconSmall; + std::string iconMedium; + std::string iconLarge; + + std::string identifier; + std::string modScope; + +public: + int getPrice() const override { return price; } + + std::string getJsonKey() const override { return identifier; } + int32_t getIndex() const override { return id.getNum(); } + GameResID getId() const override { return id;} + int32_t getIconIndex() const override { return id.getNum(); } + std::string getModScope() const override { return modScope; }; + void registerIcons(const IconRegistar & cb) const override; + std::string getNameTextID() const override; + std::string getNameTranslated() const override; +}; + +class DLL_LINKAGE ResourceTypeHandler : public CHandlerBase +{ +public: + std::shared_ptr loadFromJson(const std::string & scope, + const JsonNode & json, + const std::string & identifier, + size_t index) override; + + const std::vector & getTypeNames() const override; + std::vector loadLegacyData() override; + + std::vector getAllObjects() const; +}; + +VCMI_LIB_NAMESPACE_END diff --git a/lib/entities/faction/CTownHandler.cpp b/lib/entities/faction/CTownHandler.cpp index 2a969e69c..b43721386 100644 --- a/lib/entities/faction/CTownHandler.cpp +++ b/lib/entities/faction/CTownHandler.cpp @@ -53,12 +53,9 @@ JsonNode readBuilding(CLegacyConfigParser & parser) JsonNode ret; JsonNode & cost = ret["cost"]; - //note: this code will try to parse mithril as well but wil always return 0 for it for(const std::string & resID : GameConstants::RESOURCE_NAMES) cost[resID].Float() = parser.readNumber(); - - cost.Struct().erase("mithril"); // erase mithril to avoid confusing validator - + parser.endLine(); return ret; @@ -284,8 +281,8 @@ void CTownHandler::loadBuilding(CTown * town, const std::string & stringID, cons LIBRARY->generaltexth->registerString(source.getModScope(), ret->getDescriptionTextID(), source["description"]); ret->subId = vstd::find_or(MappedKeys::SPECIAL_BUILDINGS, source["type"].String(), BuildingSubID::NONE); - ret->resources = TResources(source["cost"]); - ret->produce = TResources(source["produce"]); + ret->resources.resolveFromJson(source["cost"]); + ret->produce.resolveFromJson(source["produce"]); ret->manualHeroVisit = source["manualHeroVisit"].Bool(); ret->upgradeReplacesBonuses = source["upgradeReplacesBonuses"].Bool(); diff --git a/lib/gameState/CGameState.cpp b/lib/gameState/CGameState.cpp index c33a885d9..db7cfd0ce 100644 --- a/lib/gameState/CGameState.cpp +++ b/lib/gameState/CGameState.cpp @@ -397,7 +397,7 @@ void CGameState::initDifficulty() auto setDifficulty = [this](PlayerState & state, const JsonNode & json) { //set starting resources - state.resources = TResources(json["resources"]); + state.resources.resolveFromJson(json["resources"]); //handicap const PlayerSettings &ps = scenarioOps->getIthPlayersSettings(state.color); diff --git a/lib/gameState/GameStatistics.cpp b/lib/gameState/GameStatistics.cpp index 3bc6c4cf3..ffeea49fe 100644 --- a/lib/gameState/GameStatistics.cpp +++ b/lib/gameState/GameStatistics.cpp @@ -24,6 +24,7 @@ #include "../entities/building/CBuilding.h" #include "../serializer/JsonDeserializer.h" #include "../serializer/JsonUpdater.h" +#include "../entities/ResourceTypeHandler.h" VCMI_LIB_NAMESPACE_BEGIN @@ -105,8 +106,8 @@ void StatisticDataSetEntry::serializeJson(JsonSerializeFormat & handler) handler.serializeBool("hasGrail", hasGrail); { auto zonesData = handler.enterStruct("numMines"); - for(TResource idx = 0; idx < (GameConstants::RESOURCE_QUANTITY - 1); idx++) - handler.serializeInt(GameConstants::RESOURCE_NAMES[idx], numMines[idx], 0); + for(auto & idx : LIBRARY->resourceTypeHandler->getAllObjects()) + handler.serializeInt(idx.toResource()->getJsonKey(), numMines[idx], 0); } handler.serializeInt("score", score); handler.serializeInt("maxHeroLevel", maxHeroLevel); @@ -158,7 +159,7 @@ std::string StatisticDataSet::toCsv(std::string sep) const { std::stringstream ss; - auto resources = std::vector{EGameResID::GOLD, EGameResID::WOOD, EGameResID::MERCURY, EGameResID::ORE, EGameResID::SULFUR, EGameResID::CRYSTAL, EGameResID::GEMS}; + auto resources = std::vector{EGameResID::GOLD, EGameResID::WOOD, EGameResID::MERCURY, EGameResID::ORE, EGameResID::SULFUR, EGameResID::CRYSTAL, EGameResID::GEMS}; //todo: configurable resource support ss << "Map" << sep; ss << "Timestamp" << sep; @@ -191,15 +192,15 @@ std::string StatisticDataSet::toCsv(std::string sep) const ss << "EventDefeatedStrongestHero" << sep; ss << "MovementPointsUsed"; for(auto & resource : resources) - ss << sep << GameConstants::RESOURCE_NAMES[resource]; + ss << sep << resource.toResource()->getJsonKey(); for(auto & resource : resources) - ss << sep << GameConstants::RESOURCE_NAMES[resource] + "Mines"; + ss << sep << resource.toResource()->getJsonKey() + "Mines"; for(auto & resource : resources) - ss << sep << GameConstants::RESOURCE_NAMES[resource] + "SpentResourcesForArmy"; + ss << sep << resource.toResource()->getJsonKey() + "SpentResourcesForArmy"; for(auto & resource : resources) - ss << sep << GameConstants::RESOURCE_NAMES[resource] + "SpentResourcesForBuildings"; + ss << sep << resource.toResource()->getJsonKey() + "SpentResourcesForBuildings"; for(auto & resource : resources) - ss << sep << GameConstants::RESOURCE_NAMES[resource] + "TradeVolume"; + ss << sep << resource.toResource()->getJsonKey() + "TradeVolume"; ss << "\r\n"; for(auto & entry : data) @@ -403,7 +404,7 @@ std::map Statistic::getNumMines(const CGameState * gs, const Pl { std::map tmp; - for(auto & res : EGameResID::ALL_RESOURCES()) + for(auto & res : LIBRARY->resourceTypeHandler->getAllObjects()) tmp[res] = 0; for(const auto * object : ps->getOwnedObjects()) diff --git a/lib/json/JsonRandom.cpp b/lib/json/JsonRandom.cpp index 8f1e2878f..1dc269721 100644 --- a/lib/json/JsonRandom.cpp +++ b/lib/json/JsonRandom.cpp @@ -28,6 +28,7 @@ #include "../entities/artifact/CArtHandler.h" #include "../entities/hero/CHero.h" #include "../entities/hero/CHeroClass.h" +#include "../entities/ResourceTypeHandler.h" #include "../gameState/CGameState.h" #include "../mapObjects/army/CStackBasicDescriptor.h" #include "../mapObjects/IObjectInterface.h" @@ -298,9 +299,9 @@ JsonRandom::JsonRandom(IGameInfoCallback * cb, IGameRandomizer & gameRandomizer) return ret; } - for (size_t i=0; iresourceTypeHandler->getAllObjects()) { - ret[i] = loadValue(value[GameConstants::RESOURCE_NAMES[i]], variables); + ret[i] = loadValue(value[i.toResource()->getJsonKey()], variables); } return ret; } @@ -315,7 +316,7 @@ JsonRandom::JsonRandom(IGameInfoCallback * cb, IGameRandomizer & gameRandomizer) GameResID::CRYSTAL, GameResID::GEMS, GameResID::GOLD - }; + }; //todo: configurable resource support std::set potentialPicks = filterKeys(value, defaultResources, variables); GameResID resourceID = *RandomGeneratorUtil::nextItem(potentialPicks, rng); diff --git a/lib/mapObjectConstructors/CommonConstructors.cpp b/lib/mapObjectConstructors/CommonConstructors.cpp index 3019e0e28..241d715b9 100644 --- a/lib/mapObjectConstructors/CommonConstructors.cpp +++ b/lib/mapObjectConstructors/CommonConstructors.cpp @@ -17,6 +17,7 @@ #include "../callback/IGameInfoCallback.h" #include "../entities/faction/CTownHandler.h" #include "../entities/hero/CHeroClass.h" +#include "../entities/ResourceTypeHandler.h" #include "../mapObjects/CGHeroInstance.h" #include "../mapObjects/CGTownInstance.h" #include "../mapObjects/MiscObjects.h" @@ -60,7 +61,7 @@ bool ResourceInstanceConstructor::hasNameTextID() const std::string ResourceInstanceConstructor::getNameTextID() const { - return TextIdentifier("core", "restypes", resourceType.getNum()).get(); + return resourceType.toResource()->getNameTextID(); } GameResID ResourceInstanceConstructor::getResourceType() const diff --git a/lib/mapObjectConstructors/FlaggableInstanceConstructor.cpp b/lib/mapObjectConstructors/FlaggableInstanceConstructor.cpp index 56dd9656e..ad629ce7e 100644 --- a/lib/mapObjectConstructors/FlaggableInstanceConstructor.cpp +++ b/lib/mapObjectConstructors/FlaggableInstanceConstructor.cpp @@ -40,7 +40,7 @@ void FlaggableInstanceConstructor::initTypeData(const JsonNode & config) } } - dailyIncome = ResourceSet(config["dailyIncome"]); + dailyIncome.resolveFromJson(config["dailyIncome"]); } void FlaggableInstanceConstructor::initializeObject(FlaggableMapObject * flaggable) const diff --git a/lib/mapObjects/CGCreature.cpp b/lib/mapObjects/CGCreature.cpp index b50aeefc2..1e9e227b3 100644 --- a/lib/mapObjects/CGCreature.cpp +++ b/lib/mapObjects/CGCreature.cpp @@ -25,6 +25,7 @@ #include "../networkPacks/StackLocation.h" #include "../serializer/JsonSerializeFormat.h" #include "../entities/faction/CTownHandler.h" +#include "../entities/ResourceTypeHandler.h" #include @@ -522,7 +523,7 @@ void CGCreature::battleFinished(IGameEventCallback & gameEvents, const CGHeroIns else if(result.winner == BattleSide::NONE) // draw { // guarded reward is lost forever on draw - gameEvents.removeObject(this, hero->getOwner()); + gameEvents.removeObject(this, result.attacker); } else { @@ -630,7 +631,7 @@ void CGCreature::giveReward(IGameEventCallback & gameEvents, const CGHeroInstanc if(!resources.empty()) { gameEvents.giveResources(h->tempOwner, resources); - for(const auto & res : GameResID::ALL_RESOURCES()) + for(const auto & res : LIBRARY->resourceTypeHandler->getAllObjects()) { if(resources[res] > 0) iw.components.emplace_back(ComponentType::RESOURCE, res, resources[res]); diff --git a/lib/mapObjects/CGHeroInstance.cpp b/lib/mapObjects/CGHeroInstance.cpp index 02a58af77..cfb0ec938 100644 --- a/lib/mapObjects/CGHeroInstance.cpp +++ b/lib/mapObjects/CGHeroInstance.cpp @@ -38,6 +38,7 @@ #include "../entities/faction/CTownHandler.h" #include "../entities/hero/CHeroHandler.h" #include "../entities/hero/CHeroClass.h" +#include "../entities/ResourceTypeHandler.h" #include "../battle/CBattleInfoEssentials.h" #include "../campaign/CampaignState.h" #include "../json/JsonBonus.h" @@ -1816,7 +1817,7 @@ ResourceSet CGHeroInstance::dailyIncome() const { ResourceSet income; - for (GameResID k : GameResID::ALL_RESOURCES()) + for (GameResID k : LIBRARY->resourceTypeHandler->getAllObjects()) income[k] += valOfBonuses(BonusType::GENERATE_RESOURCE, BonusSubtypeID(k)); const auto & playerSettings = cb->getPlayerSettings(getOwner()); diff --git a/lib/mapObjects/CGObjectInstance.cpp b/lib/mapObjects/CGObjectInstance.cpp index af03d50f9..4370918f7 100644 --- a/lib/mapObjects/CGObjectInstance.cpp +++ b/lib/mapObjects/CGObjectInstance.cpp @@ -1,5 +1,5 @@ /* - * CObjectHandler.cpp, part of VCMI engine + * CGObjectInstance.cpp, part of VCMI engine * * Authors: listed in file AUTHORS in main folder * diff --git a/lib/mapObjects/CGPandoraBox.cpp b/lib/mapObjects/CGPandoraBox.cpp index ec402caea..bf002e0fe 100644 --- a/lib/mapObjects/CGPandoraBox.cpp +++ b/lib/mapObjects/CGPandoraBox.cpp @@ -294,6 +294,18 @@ void CGEvent::init() } } +void CGEvent::battleFinished(IGameEventCallback & gameEvents, const CGHeroInstance *hero, const BattleResult &result) const +{ + if(result.winner == BattleSide::ATTACKER) + { + CRewardableObject::onHeroVisit(gameEvents, hero); + } + if(result.winner == BattleSide::NONE && removeAfterVisit) //rewards are lost if therer is a draw and an event is not repeatable + { + gameEvents.removeObject(this, result.attacker); + } +} + void CGEvent::grantRewardWithMessage(IGameEventCallback & gameEvents, const CGHeroInstance * contextHero, int rewardIndex, bool markAsVisit) const { CRewardableObject::grantRewardWithMessage(gameEvents, contextHero, rewardIndex, markAsVisit); diff --git a/lib/mapObjects/CGPandoraBox.h b/lib/mapObjects/CGPandoraBox.h index 803e25b60..5fe4139c1 100644 --- a/lib/mapObjects/CGPandoraBox.h +++ b/lib/mapObjects/CGPandoraBox.h @@ -65,6 +65,7 @@ public: } void onHeroVisit(IGameEventCallback & gameEvents, const CGHeroInstance * h) const override; + void battleFinished(IGameEventCallback & gameEvents, const CGHeroInstance *hero, const BattleResult &result) const override; protected: void grantRewardWithMessage(IGameEventCallback & gameEvents, const CGHeroInstance * contextHero, int rewardIndex, bool markAsVisit) const override; diff --git a/lib/mapObjects/CGResource.cpp b/lib/mapObjects/CGResource.cpp index e95d25069..3bcb8773e 100644 --- a/lib/mapObjects/CGResource.cpp +++ b/lib/mapObjects/CGResource.cpp @@ -21,6 +21,7 @@ #include "../gameState/CGameState.h" #include "../serializer/JsonSerializeFormat.h" #include "../CSoundBase.h" +#include "../entities/ResourceTypeHandler.h" #include @@ -50,7 +51,7 @@ GameResID CGResource::resourceID() const std::string CGResource::getHoverText(PlayerColor player) const { - return LIBRARY->generaltexth->restypes[resourceID().getNum()]; + return resourceID().toResource()->getNameTranslated(); } void CGResource::pickRandomObject(IGameRandomizer & gameRandomizer) @@ -60,7 +61,7 @@ void CGResource::pickRandomObject(IGameRandomizer & gameRandomizer) if (ID == Obj::RANDOM_RESOURCE) { ID = Obj::RESOURCE; - subID = gameRandomizer.getDefault().nextInt(EGameResID::WOOD, EGameResID::GOLD); + subID = gameRandomizer.getDefault().nextInt(EGameResID::WOOD, EGameResID::GOLD); //todo: configurable resource support setType(ID, subID); amount *= getAmountMultiplier(); diff --git a/lib/mapObjects/CGTownInstance.cpp b/lib/mapObjects/CGTownInstance.cpp index 8407872d6..9f99f74b3 100644 --- a/lib/mapObjects/CGTownInstance.cpp +++ b/lib/mapObjects/CGTownInstance.cpp @@ -32,6 +32,7 @@ #include "../callback/IGameRandomizer.h" #include "../entities/building/CBuilding.h" #include "../entities/faction/CTownHandler.h" +#include "../entities/ResourceTypeHandler.h" #include "../mapObjectConstructors/AObjectTypeHandler.h" #include "../mapObjectConstructors/CObjectClassesHandler.h" #include "../mapObjects/CGHeroInstance.h" @@ -209,7 +210,7 @@ TResources CGTownInstance::dailyIncome() const { ResourceSet ret; - for (GameResID k : GameResID::ALL_RESOURCES()) + for (GameResID k : LIBRARY->resourceTypeHandler->getAllObjects()) ret[k] += valOfBonuses(BonusType::GENERATE_RESOURCE, BonusSubtypeID(k)); for(const auto & p : getTown()->buildings) diff --git a/lib/mapObjects/CObjectHandler.cpp b/lib/mapObjects/CObjectHandler.cpp deleted file mode 100644 index 8226d01ef..000000000 --- a/lib/mapObjects/CObjectHandler.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * CObjectHandler.cpp, part of VCMI engine - * - * Authors: listed in file AUTHORS in main folder - * - * License: GNU General Public License v2.0 or later - * Full text of license available in license.txt file, in main folder - * - */ - -#include "StdInc.h" -#include "CObjectHandler.h" - -#include "CGObjectInstance.h" -#include "../filesystem/ResourcePath.h" -#include "../json/JsonNode.h" - -VCMI_LIB_NAMESPACE_BEGIN - -CObjectHandler::CObjectHandler() -{ - logGlobal->trace("\t\tReading resources prices "); - const JsonNode config2(JsonPath::builtin("config/resources.json")); - for(const JsonNode &price : config2["resources_prices"].Vector()) - { - resVals.push_back(static_cast(price.Float())); - } - logGlobal->trace("\t\tDone loading resource prices!"); -} - -VCMI_LIB_NAMESPACE_END diff --git a/lib/mapObjects/CQuest.cpp b/lib/mapObjects/CQuest.cpp index b2e99e7a3..738988b92 100644 --- a/lib/mapObjects/CQuest.cpp +++ b/lib/mapObjects/CQuest.cpp @@ -22,6 +22,7 @@ #include "../callback/IGameRandomizer.h" #include "../entities/artifact/CArtifact.h" #include "../entities/hero/CHeroHandler.h" +#include "../entities/ResourceTypeHandler.h" #include "../mapObjectConstructors/CObjectClassesHandler.h" #include "../serializer/JsonSerializeFormat.h" #include "../GameConstants.h" @@ -233,7 +234,7 @@ void CQuest::addTextReplacements(const IGameInfoCallback * cb, MetaString & text if(mission.resources.nonZero()) { MetaString loot; - for(auto i : GameResID::ALL_RESOURCES()) + for(auto i : LIBRARY->resourceTypeHandler->getAllObjects()) { if(mission.resources[i]) { @@ -372,11 +373,9 @@ void CQuest::serializeJson(JsonSerializeFormat & handler, const std::string & fi if(missionType == "Resources") { auto r = handler.enterStruct("resources"); - - for(size_t idx = 0; idx < (GameConstants::RESOURCE_QUANTITY - 1); idx++) - { - handler.serializeInt(GameConstants::RESOURCE_NAMES[idx], mission.resources[idx], 0); - } + + for(auto & idx : LIBRARY->resourceTypeHandler->getAllObjects()) + handler.serializeInt(idx.toResource()->getJsonKey(), mission.resources[idx], 0); } if(missionType == "Hero") diff --git a/lib/mapObjects/IMarket.cpp b/lib/mapObjects/IMarket.cpp index 43e687d9e..414d57de5 100644 --- a/lib/mapObjects/IMarket.cpp +++ b/lib/mapObjects/IMarket.cpp @@ -13,10 +13,10 @@ #include "CCreatureHandler.h" #include "CGObjectInstance.h" -#include "CObjectHandler.h" #include "../GameLibrary.h" #include "../entities/artifact/CArtHandler.h" +#include "../entities/ResourceTypeHandler.h" VCMI_LIB_NAMESPACE_BEGIN @@ -33,8 +33,8 @@ bool IMarket::getOffer(int id1, int id2, int &val1, int &val2, EMarketMode mode) { double effectiveness = std::min((getMarketEfficiency() + 1.0) / 20.0, 0.5); - double r = LIBRARY->objh->resVals[id1]; //value of given resource - double g = LIBRARY->objh->resVals[id2] / effectiveness; //value of wanted resource + double r = GameResID(id1).toResource()->getPrice(); //value of given resource + double g = GameResID(id2).toResource()->getPrice() / effectiveness; //value of wanted resource if(r>g) //if given resource is more expensive than wanted { @@ -54,7 +54,7 @@ bool IMarket::getOffer(int id1, int id2, int &val1, int &val2, EMarketMode mode) double effectiveness = effectivenessArray[std::min(getMarketEfficiency(), 8)]; double r = LIBRARY->creatures()->getByIndex(id1)->getRecruitCost(EGameResID::GOLD); //value of given creature in gold - double g = LIBRARY->objh->resVals[id2] / effectiveness; //value of wanted resource + double g = GameResID(id2).toResource()->getPrice() / effectiveness; //value of wanted resource if(r>g) //if given resource is more expensive than wanted { @@ -75,7 +75,7 @@ bool IMarket::getOffer(int id1, int id2, int &val1, int &val2, EMarketMode mode) case EMarketMode::RESOURCE_ARTIFACT: { double effectiveness = std::min((getMarketEfficiency() + 3.0) / 20.0, 0.6); - double r = LIBRARY->objh->resVals[id1]; //value of offered resource + double r = GameResID(id1).toResource()->getPrice(); //value of offered resource double g = LIBRARY->artifacts()->getByIndex(id2)->getPrice() / effectiveness; //value of bought artifact in gold if(id1 != 6) //non-gold prices are doubled @@ -89,7 +89,7 @@ bool IMarket::getOffer(int id1, int id2, int &val1, int &val2, EMarketMode mode) { double effectiveness = std::min((getMarketEfficiency() + 3.0) / 20.0, 0.6); double r = LIBRARY->artifacts()->getByIndex(id1)->getPrice() * effectiveness; - double g = LIBRARY->objh->resVals[id2]; + double g = GameResID(id2).toResource()->getPrice(); // if(id2 != 6) //non-gold prices are doubled // r /= 2; @@ -163,7 +163,7 @@ std::vector IMarket::availableItemsIds(const EMarketMode mode) con case EMarketMode::RESOURCE_RESOURCE: case EMarketMode::ARTIFACT_RESOURCE: case EMarketMode::CREATURE_RESOURCE: - for(const auto & res : GameResID::ALL_RESOURCES()) + for(const auto & res : LIBRARY->resourceTypeHandler->getAllObjects()) ret.push_back(res); } return ret; diff --git a/lib/mapObjects/MapObjects.h b/lib/mapObjects/MapObjects.h index 918a05e14..3493f45f2 100644 --- a/lib/mapObjects/MapObjects.h +++ b/lib/mapObjects/MapObjects.h @@ -10,8 +10,6 @@ #pragma once // Helper header that includes all map objects, similar to old CObjectHandler.h -// Possible TODO - remove this header after CObjectHandler.cpp will be fully split into smaller files -#include "CObjectHandler.h" #include "CGDwelling.h" #include "CGHeroInstance.h" diff --git a/lib/mapObjects/MiscObjects.cpp b/lib/mapObjects/MiscObjects.cpp index f5fda550b..c9cc8bfe1 100644 --- a/lib/mapObjects/MiscObjects.cpp +++ b/lib/mapObjects/MiscObjects.cpp @@ -18,6 +18,7 @@ #include "../constants/StringConstants.h" #include "../entities/artifact/ArtifactUtils.h" #include "../entities/artifact/CArtifact.h" +#include "../entities/ResourceTypeHandler.h" #include "../CConfigHandler.h" #include "../texts/CGeneralTextHandler.h" #include "../CSkillHandler.h" @@ -143,7 +144,7 @@ ResourceSet CGMine::dailyIncome() const { ResourceSet result; - for (GameResID k : GameResID::ALL_RESOURCES()) + for (GameResID k : LIBRARY->resourceTypeHandler->getAllObjects()) result[k] += valOfBonuses(BonusType::GENERATE_RESOURCE, BonusSubtypeID(k)); result[producedResource] += defaultResProduction(); @@ -164,7 +165,7 @@ std::string CGMine::getHoverText(PlayerColor player) const std::string hoverName = CArmedInstance::getHoverText(player); if (tempOwner != PlayerColor::NEUTRAL) - hoverName += "\n(" + LIBRARY->generaltexth->restypes[producedResource.getNum()] + ")"; + hoverName += "\n(" + producedResource.toResource()->getNameTranslated() + ")"; if(stacksCount()) { @@ -238,7 +239,7 @@ void CGMine::serializeJsonOptions(JsonSerializeFormat & handler) { JsonNode node; for(const auto & resID : abandonedMineResources) - node.Vector().emplace_back(GameConstants::RESOURCE_NAMES[resID.getNum()]); + node.Vector().emplace_back(resID.toResource()->getJsonKey()); handler.serializeRaw("possibleResources", node, std::nullopt); } @@ -251,7 +252,10 @@ void CGMine::serializeJsonOptions(JsonSerializeFormat & handler) for(const std::string & s : names) { - int raw_res = vstd::find_pos(GameConstants::RESOURCE_NAMES, s); + std::vector resNames; + for(auto & res : LIBRARY->resourceTypeHandler->getAllObjects()) + resNames.push_back(res.toResource()->getJsonKey()); + int raw_res = vstd::find_pos(resNames, s); if(raw_res < 0) logGlobal->error("Invalid resource name: %s", s); else @@ -872,7 +876,7 @@ const IOwnableObject * CGGarrison::asOwnable() const ResourceSet CGGarrison::dailyIncome() const { ResourceSet result; - for (GameResID k : GameResID::ALL_RESOURCES()) + for (GameResID k : LIBRARY->resourceTypeHandler->getAllObjects()) result[k] += valOfBonuses(BonusType::GENERATE_RESOURCE, BonusSubtypeID(k)); return result; diff --git a/lib/modding/ContentTypeHandler.cpp b/lib/modding/ContentTypeHandler.cpp index 4e1abf178..6d7e1c220 100644 --- a/lib/modding/ContentTypeHandler.cpp +++ b/lib/modding/ContentTypeHandler.cpp @@ -23,6 +23,7 @@ #include "../entities/faction/CTownHandler.h" #include "../entities/hero/CHeroClassHandler.h" #include "../entities/hero/CHeroHandler.h" +#include "../entities/ResourceTypeHandler.h" #include "../texts/CGeneralTextHandler.h" #include "../CBonusTypeHandler.h" #include "../CSkillHandler.h" @@ -263,6 +264,7 @@ void CContentHandler::init() handlers.insert(std::make_pair("roads", ContentTypeHandler(LIBRARY->roadTypeHandler.get(), "road"))); handlers.insert(std::make_pair("obstacles", ContentTypeHandler(LIBRARY->obstacleHandler.get(), "obstacle"))); handlers.insert(std::make_pair("biomes", ContentTypeHandler(LIBRARY->biomeHandler.get(), "biome"))); + handlers.insert(std::make_pair("resources", ContentTypeHandler(LIBRARY->resourceTypeHandler.get(), "resources"))); } bool CContentHandler::preloadData(const ModDescription & mod, bool validate) diff --git a/lib/networkPacks/PacksForClientBattle.h b/lib/networkPacks/PacksForClientBattle.h index 0af85b92f..6d20cb7e1 100644 --- a/lib/networkPacks/PacksForClientBattle.h +++ b/lib/networkPacks/PacksForClientBattle.h @@ -121,7 +121,8 @@ struct DLL_LINKAGE BattleResult : public Query { BattleID battleID = BattleID::NONE; EBattleResult result = EBattleResult::NORMAL; - BattleSide winner = BattleSide::NONE; //0 - attacker, 1 - defender, [2 - draw (should be possible?)] + BattleSide winner = BattleSide::NONE; //0 - attacker, 1 - defender, 2 - draw + PlayerColor attacker; //used in case of a draw BattleSideArray> casualties; //first => casualties of attackers - map crid => number BattleSideArray exp{0,0}; //exp for attacker and defender diff --git a/lib/rewardable/Info.cpp b/lib/rewardable/Info.cpp index 7f60b5041..b2711ba44 100644 --- a/lib/rewardable/Info.cpp +++ b/lib/rewardable/Info.cpp @@ -22,6 +22,7 @@ #include "../mapObjects/IObjectInterface.h" #include "../modding/IdentifierStorage.h" #include "../texts/CGeneralTextHandler.h" +#include "../entities/ResourceTypeHandler.h" #include @@ -296,7 +297,7 @@ void Rewardable::Info::replaceTextPlaceholders(MetaString & target, const Variab MetaString loot; - for (GameResID it : GameResID::ALL_RESOURCES()) + for (GameResID it : LIBRARY->resourceTypeHandler->getAllObjects()) { if (info.reward.resources[it] != 0) { diff --git a/lib/rmg/CRmgTemplate.cpp b/lib/rmg/CRmgTemplate.cpp index a794da171..693e8ef6d 100644 --- a/lib/rmg/CRmgTemplate.cpp +++ b/lib/rmg/CRmgTemplate.cpp @@ -18,6 +18,7 @@ #include "../GameLibrary.h" #include "../constants/StringConstants.h" #include "../entities/faction/CTownHandler.h" +#include "../entities/ResourceTypeHandler.h" #include "../modding/ModScope.h" #include "../serializer/JsonSerializeFormat.h" @@ -258,12 +259,12 @@ std::set ZoneOptions::getMonsterTypes() const return vstd::difference(monsterTypes, bannedMonsters); } -void ZoneOptions::setMinesInfo(const std::map & value) +void ZoneOptions::setMinesInfo(const std::map & value) { mines = value; } -std::map ZoneOptions::getMinesInfo() const +std::map ZoneOptions::getMinesInfo() const { return mines; } @@ -532,12 +533,7 @@ void ZoneOptions::serializeJson(JsonSerializeFormat & handler) if((minesLikeZone == NO_ZONE) && (!handler.saving || !mines.empty())) { - auto minesData = handler.enterStruct("mines"); - - for(TResource idx = 0; idx < (GameConstants::RESOURCE_QUANTITY - 1); idx++) - { - handler.serializeInt(GameConstants::RESOURCE_NAMES[idx], mines[idx], 0); - } + handler.serializeIdMap("mines", mines); } handler.serializeStruct("customObjects", objectConfig); diff --git a/lib/rmg/CRmgTemplate.h b/lib/rmg/CRmgTemplate.h index b1680deef..4c639a38c 100644 --- a/lib/rmg/CRmgTemplate.h +++ b/lib/rmg/CRmgTemplate.h @@ -209,8 +209,8 @@ public: void setMonsterTypes(const std::set & value); - void setMinesInfo(const std::map & value); - std::map getMinesInfo() const; + void setMinesInfo(const std::map & value); + std::map getMinesInfo() const; void setTreasureInfo(const std::vector & value); void addTreasureInfo(const CTreasureInfo & value); @@ -277,7 +277,7 @@ protected: std::set monsterTypes; std::set bannedMonsters; - std::map mines; //obligatory mines to spawn in this zone + std::map mines; //obligatory mines to spawn in this zone std::vector treasureInfo; @@ -373,7 +373,7 @@ private: std::set bannedHeroes; std::set inheritTerrainType(std::shared_ptr zone, uint32_t iteration = 0); - std::map inheritMineTypes(std::shared_ptr zone, uint32_t iteration = 0); + std::map inheritMineTypes(std::shared_ptr zone, uint32_t iteration = 0); std::vector inheritTreasureInfo(std::shared_ptr zone, uint32_t iteration = 0); void inheritTownProperties(std::shared_ptr zone, uint32_t iteration = 0); diff --git a/lib/serializer/JsonDeserializer.cpp b/lib/serializer/JsonDeserializer.cpp index 87cda93d6..06735316d 100644 --- a/lib/serializer/JsonDeserializer.cpp +++ b/lib/serializer/JsonDeserializer.cpp @@ -119,6 +119,16 @@ void JsonDeserializer::serializeInternal(const std::string & fieldName, std::vec } } +void JsonDeserializer::serializeInternal(const std::string & fieldName, std::map & value) +{ + const JsonMap & data = currentObject->operator[](fieldName).Struct(); + + value.clear(); + + for(const auto & [id, elem] : data) + value[id] = elem.Integer(); +} + void JsonDeserializer::serializeInternal(std::string & value) { value = currentObject->String(); diff --git a/lib/serializer/JsonDeserializer.h b/lib/serializer/JsonDeserializer.h index 9a3aab5ee..98dd058c2 100644 --- a/lib/serializer/JsonDeserializer.h +++ b/lib/serializer/JsonDeserializer.h @@ -32,6 +32,7 @@ protected: void serializeInternal(const std::string & fieldName, si64 & value, const std::optional & defaultValue) override; void serializeInternal(const std::string & fieldName, si32 & value, const std::optional & defaultValue, const std::vector & enumMap) override; void serializeInternal(const std::string & fieldName, std::vector & value) override; + void serializeInternal(const std::string & fieldName, std::map & value) override; void serializeInternal(std::string & value) override; void serializeInternal(int64_t & value) override; diff --git a/lib/serializer/JsonSerializeFormat.h b/lib/serializer/JsonSerializeFormat.h index 3ec30f37c..53b2aa69d 100644 --- a/lib/serializer/JsonSerializeFormat.h +++ b/lib/serializer/JsonSerializeFormat.h @@ -331,6 +331,33 @@ public: } } + /// si32-convertible identifier map <-> Json object of {key: string} + template + void serializeIdMap(const std::string & fieldName, std::map & value) + { + if (saving) + { + std::map fieldValue; + + for (const auto & [key, val] : value) + fieldValue[Key::encode(key.getNum())] = val; + + serializeInternal(fieldName, fieldValue); + } + else + { + const JsonNode & node = getCurrent()[fieldName]; + for (const auto & [keyStr, jsonVal] : node.Struct()) + { + Key key = Key::decode(keyStr); + + LIBRARY->identifiers()->requestIdentifier(node.getModScope(), Key::entityType(), keyStr, [&value, key](int32_t index) { + value[key] = T(index); + }); + } + } + } + ///si32-convertible identifier vector <-> Json array of string template void serializeIdArray(const std::string & fieldName, std::vector & value) @@ -443,6 +470,9 @@ protected: ///String vector <-> Json string vector virtual void serializeInternal(const std::string & fieldName, std::vector & value) = 0; + ///String map <-> Json map of int + virtual void serializeInternal(const std::string & fieldName, std::map & value) = 0; + virtual void pop() = 0; virtual void pushStruct(const std::string & fieldName) = 0; virtual void pushArray(const std::string & fieldName) = 0; diff --git a/lib/serializer/JsonSerializer.cpp b/lib/serializer/JsonSerializer.cpp index adcb3ffd3..2fba350a9 100644 --- a/lib/serializer/JsonSerializer.cpp +++ b/lib/serializer/JsonSerializer.cpp @@ -75,6 +75,17 @@ void JsonSerializer::serializeInternal(const std::string & fieldName, std::vecto data.emplace_back(rawId); } +void JsonSerializer::serializeInternal(const std::string & fieldName, std::map & value) +{ + if(value.empty()) + return; + + JsonMap & data = currentObject->operator[](fieldName).Struct(); + + for(const auto & [rawId, val] : value) + data[rawId].Integer() = val; +} + void JsonSerializer::serializeInternal(std::string & value) { currentObject->String() = value; diff --git a/lib/serializer/JsonSerializer.h b/lib/serializer/JsonSerializer.h index 89bbbf26d..8a29074a6 100644 --- a/lib/serializer/JsonSerializer.h +++ b/lib/serializer/JsonSerializer.h @@ -32,6 +32,7 @@ protected: void serializeInternal(const std::string & fieldName, si64 & value, const std::optional & defaultValue) override; void serializeInternal(const std::string & fieldName, si32 & value, const std::optional & defaultValue, const std::vector & enumMap) override; void serializeInternal(const std::string & fieldName, std::vector & value) override; + void serializeInternal(const std::string & fieldName, std::map & value) override; void serializeInternal(std::string & value) override; void serializeInternal(int64_t & value) override; diff --git a/lib/serializer/JsonUpdater.cpp b/lib/serializer/JsonUpdater.cpp index 0d31638c7..d427cb612 100644 --- a/lib/serializer/JsonUpdater.cpp +++ b/lib/serializer/JsonUpdater.cpp @@ -65,6 +65,11 @@ void JsonUpdater::serializeInternal(const std::string & fieldName, std::vector & value) +{ + // TODO +} + void JsonUpdater::serializeInternal(const std::string & fieldName, double & value, const std::optional & defaultValue) { const JsonNode & data = currentObject->operator[](fieldName); diff --git a/lib/serializer/JsonUpdater.h b/lib/serializer/JsonUpdater.h index e0cd5f508..d517a8e0d 100644 --- a/lib/serializer/JsonUpdater.h +++ b/lib/serializer/JsonUpdater.h @@ -36,6 +36,7 @@ protected: void serializeInternal(const std::string & fieldName, si64 & value, const std::optional & defaultValue) override; void serializeInternal(const std::string & fieldName, si32 & value, const std::optional & defaultValue, const std::vector & enumMap) override; void serializeInternal(const std::string & fieldName, std::vector & value) override; + void serializeInternal(const std::string & fieldName, std::map & value) override; void serializeInternal(std::string & value) override; void serializeInternal(int64_t & value) override; diff --git a/lib/texts/MetaString.cpp b/lib/texts/MetaString.cpp index 60a3375b4..60e037a61 100644 --- a/lib/texts/MetaString.cpp +++ b/lib/texts/MetaString.cpp @@ -14,6 +14,7 @@ #include "entities/artifact/CArtifact.h" #include "entities/faction/CFaction.h" #include "entities/hero/CHero.h" +#include "entities/ResourceTypeHandler.h" #include "texts/CGeneralTextHandler.h" #include "CSkillHandler.h" #include "GameConstants.h" @@ -378,7 +379,7 @@ void MetaString::appendName(const CreatureID & id, TQuantity count) void MetaString::appendName(const GameResID& id) { - appendTextID(TextIdentifier("core.restypes", id.getNum()).get()); + appendTextID(id.toResource()->getNameTextID()); } void MetaString::appendNameSingular(const CreatureID & id) @@ -423,7 +424,7 @@ void MetaString::replaceName(const SpellID & id) void MetaString::replaceName(const GameResID& id) { - replaceTextID(TextIdentifier("core.restypes", id.getNum()).get()); + replaceTextID(id.toResource()->getNameTextID()); } void MetaString::replaceNameSingular(const CreatureID & id) diff --git a/mapeditor/graphics.cpp b/mapeditor/graphics.cpp index 00eb6f558..7dd03e122 100644 --- a/mapeditor/graphics.cpp +++ b/mapeditor/graphics.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include "../lib/filesystem/Filesystem.h" #include "../lib/filesystem/CBinaryReader.h" @@ -342,4 +343,5 @@ void Graphics::initializeImageLists() addImageListEntries(LIBRARY->factions()); addImageListEntries(LIBRARY->spells()); addImageListEntries(LIBRARY->skills()); + addImageListEntries(LIBRARY->resources()); } diff --git a/mapeditor/inspector/questwidget.cpp b/mapeditor/inspector/questwidget.cpp index 697306f2f..5d2d73d5c 100644 --- a/mapeditor/inspector/questwidget.cpp +++ b/mapeditor/inspector/questwidget.cpp @@ -17,6 +17,7 @@ #include "../lib/CCreatureHandler.h" #include "../lib/constants/StringConstants.h" #include "../lib/entities/artifact/CArtHandler.h" +#include "../lib/entities/ResourceTypeHandler.h" #include "../lib/mapping/CMap.h" #include "../lib/mapObjects/CGHeroInstance.h" #include "../lib/mapObjects/CGCreature.h" @@ -40,13 +41,13 @@ QuestWidget::QuestWidget(MapController & _controller, CQuest & _sh, QWidget *par ui->lDayOfWeek->addItem(tr("Day %1").arg(i)); //fill resources - ui->lResources->setRowCount(GameConstants::RESOURCE_QUANTITY - 1); - for(int i = 0; i < GameConstants::RESOURCE_QUANTITY - 1; ++i) + ui->lResources->setRowCount(LIBRARY->resourceTypeHandler->getAllObjects().size() - 1); + for(auto & i : LIBRARY->resourceTypeHandler->getAllObjects()) { MetaString str; str.appendName(GameResID(i)); auto * item = new QTableWidgetItem(QString::fromStdString(str.toString())); - item->setData(Qt::UserRole, QVariant::fromValue(i)); + item->setData(Qt::UserRole, QVariant::fromValue(i.getNum())); ui->lResources->setItem(i, 0, item); auto * spinBox = new QSpinBox; spinBox->setMaximum(i == GameResID::GOLD ? 999999 : 999); @@ -455,8 +456,6 @@ void QuestDelegate::updateModelData(QAbstractItemModel * model, const QModelInde QStringList resourcesList; for(GameResID resource = GameResID::WOOD; resource < GameResID::COUNT ; resource++) { - if(resource == GameResID::MITHRIL) - continue; if(quest.mission.resources[resource] == 0) continue; MetaString str; diff --git a/mapeditor/inspector/rewardswidget.cpp b/mapeditor/inspector/rewardswidget.cpp index 103aa32da..0669e4fb2 100644 --- a/mapeditor/inspector/rewardswidget.cpp +++ b/mapeditor/inspector/rewardswidget.cpp @@ -17,6 +17,7 @@ #include "../lib/CCreatureHandler.h" #include "../lib/constants/StringConstants.h" #include "../lib/entities/artifact/CArtifact.h" +#include "../lib/entities/ResourceTypeHandler.h" #include "../lib/mapping/CMap.h" #include "../lib/modding/IdentifierStorage.h" #include "../lib/modding/ModScope.h" @@ -55,16 +56,16 @@ RewardsWidget::RewardsWidget(CMap & m, CRewardableObject & p, QWidget *parent) : ui->lDayOfWeek->addItem(tr("Day %1").arg(i)); //fill resources - ui->rResources->setRowCount(GameConstants::RESOURCE_QUANTITY - 1); - ui->lResources->setRowCount(GameConstants::RESOURCE_QUANTITY - 1); - for(int i = 0; i < GameConstants::RESOURCE_QUANTITY - 1; ++i) + ui->rResources->setRowCount(LIBRARY->resourceTypeHandler->getAllObjects().size() - 1); + ui->lResources->setRowCount(LIBRARY->resourceTypeHandler->getAllObjects().size() - 1); + for(auto & i : LIBRARY->resourceTypeHandler->getAllObjects()) { MetaString str; str.appendName(GameResID(i)); for(auto * w : {ui->rResources, ui->lResources}) { auto * item = new QTableWidgetItem(QString::fromStdString(str.toString())); - item->setData(Qt::UserRole, QVariant::fromValue(i)); + item->setData(Qt::UserRole, QVariant::fromValue(i.getNum())); w->setItem(i, 0, item); auto * spinBox = new QSpinBox; spinBox->setMaximum(i == GameResID::GOLD ? 999999 : 999); @@ -779,8 +780,6 @@ void RewardsDelegate::updateModelData(QAbstractItemModel * model, const QModelIn QStringList resourcesList; for(GameResID resource = GameResID::WOOD; resource < GameResID::COUNT ; resource++) { - if(resource == GameResID::MITHRIL) - continue; // translated as "Abandoned"? if(vinfo.reward.resources[resource] == 0) continue; MetaString str; diff --git a/mapeditor/inspector/towneventdialog.cpp b/mapeditor/inspector/towneventdialog.cpp index 14724212f..2ed52009c 100644 --- a/mapeditor/inspector/towneventdialog.cpp +++ b/mapeditor/inspector/towneventdialog.cpp @@ -18,6 +18,8 @@ #include "../../lib/entities/faction/CTownHandler.h" #include "../../lib/constants/NumericConstants.h" #include "../../lib/constants/StringConstants.h" +#include "../../lib/GameLibrary.h" +#include "../../lib/entities/ResourceTypeHandler.h" static const int FIRST_DAY_FOR_EVENT = 1; static const int LAST_DAY_FOR_EVENT = 999; @@ -79,9 +81,9 @@ void TownEventDialog::initPlayers() void TownEventDialog::initResources() { - ui->resourcesTable->setRowCount(GameConstants::RESOURCE_QUANTITY); + ui->resourcesTable->setRowCount(LIBRARY->resourceTypeHandler->getAllObjects().size()); auto resourcesMap = params.value("resources").toMap(); - for (int i = 0; i < GameConstants::RESOURCE_QUANTITY; ++i) + for(auto & i : LIBRARY->resourceTypeHandler->getAllObjects()) { MetaString str; str.appendName(GameResID(i)); @@ -91,7 +93,7 @@ void TownEventDialog::initResources() item->setText(name); ui->resourcesTable->setItem(i, 0, item); - int val = resourcesMap.value(QString::fromStdString(GameConstants::RESOURCE_NAMES[i])).toInt(); + int val = resourcesMap.value(QString::fromStdString(i.toResource()->getJsonKey())).toInt(); auto * edit = new QSpinBox(ui->resourcesTable); edit->setMaximum(i == GameResID::GOLD ? MAXIMUM_GOLD_CHANGE : MAXIMUM_RESOURCE_CHANGE); edit->setMinimum(i == GameResID::GOLD ? -MAXIMUM_GOLD_CHANGE : -MAXIMUM_RESOURCE_CHANGE); @@ -228,9 +230,9 @@ QVariant TownEventDialog::playersToVariant() QVariantMap TownEventDialog::resourcesToVariant() { auto res = params.value("resources").toMap(); - for (int i = 0; i < GameConstants::RESOURCE_QUANTITY; ++i) + for(auto & i : LIBRARY->resourceTypeHandler->getAllObjects()) { - auto itemType = QString::fromStdString(GameConstants::RESOURCE_NAMES[i]); + auto itemType = QString::fromStdString(i.toResource()->getJsonKey()); auto * itemQty = static_cast (ui->resourcesTable->cellWidget(i, 1)); res[itemType] = QVariant::fromValue(itemQty->value()); diff --git a/mapeditor/mapsettings/eventsettings.cpp b/mapeditor/mapsettings/eventsettings.cpp index 7eae1b493..63a287863 100644 --- a/mapeditor/mapsettings/eventsettings.cpp +++ b/mapeditor/mapsettings/eventsettings.cpp @@ -14,6 +14,8 @@ #include "../mapcontroller.h" #include "../../lib/constants/NumericConstants.h" #include "../../lib/constants/StringConstants.h" +#include "../../lib/GameLibrary.h" +#include "../../lib/entities/ResourceTypeHandler.h" QString toQString(const PlayerColor & player) { @@ -41,8 +43,8 @@ std::set playersFromVariant(const QVariant & v) QVariant toVariant(const TResources & resources) { QVariantMap result; - for(int i = 0; i < GameConstants::RESOURCE_QUANTITY; ++i) - result[QString::fromStdString(GameConstants::RESOURCE_NAMES[i])] = QVariant::fromValue(resources[i]); + for(auto & i : LIBRARY->resourceTypeHandler->getAllObjects()) + result[QString::fromStdString(i.toResource()->getJsonKey())] = QVariant::fromValue(resources[i]); return result; } @@ -51,7 +53,9 @@ TResources resourcesFromVariant(const QVariant & v) JsonNode vJson; for(auto r : v.toMap().keys()) vJson[r.toStdString()].Integer() = v.toMap().value(r).toInt(); - return TResources(vJson); + ResourceSet res; + res.resolveFromJson(vJson); + return res; } QVariant toVariant(std::vector objects) diff --git a/mapeditor/mapsettings/timedevent.cpp b/mapeditor/mapsettings/timedevent.cpp index 5cbb25ca8..879af496e 100644 --- a/mapeditor/mapsettings/timedevent.cpp +++ b/mapeditor/mapsettings/timedevent.cpp @@ -14,6 +14,8 @@ #include "../mapeditorroles.h" #include "../../lib/constants/EntityIdentifiers.h" #include "../../lib/constants/StringConstants.h" +#include "../../lib/GameLibrary.h" +#include "../../lib/entities/ResourceTypeHandler.h" TimedEvent::TimedEvent(MapController & c, QListWidgetItem * t, QWidget *parent) : controller(c), @@ -45,13 +47,13 @@ TimedEvent::TimedEvent(MapController & c, QListWidgetItem * t, QWidget *parent) ui->playersAffected->addItem(item); } - ui->resources->setRowCount(GameConstants::RESOURCE_QUANTITY); - for(int i = 0; i < GameConstants::RESOURCE_QUANTITY; ++i) + ui->resources->setRowCount(LIBRARY->resourceTypeHandler->getAllObjects().size()); + for(auto & i : LIBRARY->resourceTypeHandler->getAllObjects()) { MetaString str; str.appendName(GameResID(i)); auto name = QString::fromStdString(str.toString()); - int val = params.value("resources").toMap().value(QString::fromStdString(GameConstants::RESOURCE_NAMES[i])).toInt(); + int val = params.value("resources").toMap().value(QString::fromStdString(i.toResource()->getJsonKey())).toInt(); ui->resources->setItem(i, 0, new QTableWidgetItem(name)); auto nval = new QTableWidgetItem(QString::number(val)); nval->setFlags(nval->flags() | Qt::ItemIsEditable); @@ -94,9 +96,9 @@ void TimedEvent::on_TimedEvent_finished(int result) descriptor["players"] = QVariant::fromValue(players); auto res = target->data(Qt::UserRole).toMap().value("resources").toMap(); - for(int i = 0; i < GameConstants::RESOURCE_QUANTITY; ++i) + for(auto & i : LIBRARY->resourceTypeHandler->getAllObjects()) { - auto itemType = QString::fromStdString(GameConstants::RESOURCE_NAMES[i]); + auto itemType = QString::fromStdString(i.toResource()->getJsonKey()); auto * itemQty = ui->resources->item(i, 1); res[itemType] = QVariant::fromValue(itemQty->text().toInt()); } diff --git a/mapeditor/mapsettings/victoryconditions.cpp b/mapeditor/mapsettings/victoryconditions.cpp index ea337b73b..1034dec1b 100644 --- a/mapeditor/mapsettings/victoryconditions.cpp +++ b/mapeditor/mapsettings/victoryconditions.cpp @@ -12,9 +12,11 @@ #include "ui_victoryconditions.h" #include "../mapcontroller.h" +#include "../../lib/GameLibrary.h" #include "../../lib/constants/StringConstants.h" #include "../../lib/entities/artifact/CArtHandler.h" #include "../../lib/entities/faction/CTownHandler.h" +#include "../../lib/entities/ResourceTypeHandler.h" #include "../../lib/mapObjects/CGCreature.h" #include "../../lib/texts/CGeneralTextHandler.h" @@ -406,12 +408,12 @@ void VictoryConditions::on_victoryComboBox_currentIndexChanged(int index) victoryTypeWidget = new QComboBox; ui->victoryParamsLayout->addWidget(victoryTypeWidget); { - for(int resType = 0; resType < GameConstants::RESOURCE_QUANTITY; ++resType) + for(auto & resType : LIBRARY->resourceTypeHandler->getAllObjects()) { MetaString str; str.appendName(GameResID(resType)); auto resName = QString::fromStdString(str.toString()); - victoryTypeWidget->addItem(resName, QVariant::fromValue(resType)); + victoryTypeWidget->addItem(resName, QVariant::fromValue(resType.getNum())); } } diff --git a/mapeditor/templateeditor/graphicelements/CardItem.cpp b/mapeditor/templateeditor/graphicelements/CardItem.cpp index e3770b115..2e5059d05 100644 --- a/mapeditor/templateeditor/graphicelements/CardItem.cpp +++ b/mapeditor/templateeditor/graphicelements/CardItem.cpp @@ -16,6 +16,8 @@ #include "../../../lib/constants/EntityIdentifiers.h" #include "../../../lib/constants/StringConstants.h" #include "../../../lib/rmg/CRmgTemplate.h" +#include "../../../lib/GameLibrary.h" +#include "../../../lib/entities/ResourceTypeHandler.h" QDomElement CardItem::getElementById(const QDomDocument& doc, const QString& id) { @@ -149,11 +151,11 @@ int CardItem::getId() void CardItem::setResAmount(GameResID res, int val) { - auto textElem = getElementById(doc, "text" + QString::fromStdString(GameConstants::RESOURCE_NAMES[res])); + auto textElem = getElementById(doc, "text" + QString::fromStdString(res.toResource()->getJsonKey())); textElem.setAttribute("style", textElem.attribute("style").replace(QRegularExpression("fill:.*?;"), "fill:" + QColor(useBlackText ? Qt::black : Qt::white).name() + ";")); textElem.firstChild().setNodeValue(val ? QString::number(val) : ""); - auto iconElem = getElementById(doc, "icon" + QString::fromStdString(GameConstants::RESOURCE_NAMES[res])); + auto iconElem = getElementById(doc, "icon" + QString::fromStdString(res.toResource()->getJsonKey())); iconElem.setAttribute("opacity", val ? "1.0" : "0.1"); } diff --git a/mapeditor/templateeditor/mineselector.cpp b/mapeditor/templateeditor/mineselector.cpp index fcb2b8176..201e42d3b 100644 --- a/mapeditor/templateeditor/mineselector.cpp +++ b/mapeditor/templateeditor/mineselector.cpp @@ -15,10 +15,12 @@ #include "../../lib/GameLibrary.h" #include "../../lib/texts/CGeneralTextHandler.h" +#include "../../lib/texts/MetaString.h" +#include "../../lib/entities/ResourceTypeHandler.h" -auto resources = std::vector{EGameResID::GOLD, EGameResID::WOOD, EGameResID::MERCURY, EGameResID::ORE, EGameResID::SULFUR, EGameResID::CRYSTAL, EGameResID::GEMS}; +auto resourcesToShow = std::vector{EGameResID::GOLD, EGameResID::WOOD, EGameResID::MERCURY, EGameResID::ORE, EGameResID::SULFUR, EGameResID::CRYSTAL, EGameResID::GEMS}; //todo: configurable resource support -MineSelector::MineSelector(std::map & mines) : +MineSelector::MineSelector(std::map & mines) : ui(new Ui::MineSelector), minesSelected(mines) { @@ -29,18 +31,18 @@ MineSelector::MineSelector(std::map & mines) : setWindowModality(Qt::ApplicationModal); ui->tableWidgetMines->setColumnCount(2); - ui->tableWidgetMines->setRowCount(resources.size()); + ui->tableWidgetMines->setRowCount(resourcesToShow.size()); ui->tableWidgetMines->setHorizontalHeaderLabels({tr("Resource"), tr("Mines")}); - for (int row = 0; row < resources.size(); ++row) + for (int row = 0; row < resourcesToShow.size(); ++row) { - auto name = LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", resources[row].getNum()).get()); + auto name = resourcesToShow[row].toResource()->getNameTranslated(); auto label = new QLabel(QString::fromStdString(name)); label->setAlignment(Qt::AlignCenter); ui->tableWidgetMines->setCellWidget(row, 0, label); auto spinBox = new QSpinBox(); spinBox->setRange(0, 100); - spinBox->setValue(mines[resources[row]]); + spinBox->setValue(mines[resourcesToShow[row]]); ui->tableWidgetMines->setCellWidget(row, 1, spinBox); } ui->tableWidgetMines->resizeColumnsToContents(); @@ -48,7 +50,7 @@ MineSelector::MineSelector(std::map & mines) : show(); } -void MineSelector::showMineSelector(std::map & mines) +void MineSelector::showMineSelector(std::map & mines) { auto * dialog = new MineSelector(mines); dialog->setAttribute(Qt::WA_DeleteOnClose); @@ -57,8 +59,8 @@ void MineSelector::showMineSelector(std::map & mines) void MineSelector::on_buttonBoxResult_accepted() { - for (int row = 0; row < resources.size(); ++row) - minesSelected[resources[row]] = static_cast(ui->tableWidgetMines->cellWidget(row, 1))->value(); + for (int row = 0; row < resourcesToShow.size(); ++row) + minesSelected[resourcesToShow[row]] = static_cast(ui->tableWidgetMines->cellWidget(row, 1))->value(); close(); } diff --git a/mapeditor/templateeditor/mineselector.h b/mapeditor/templateeditor/mineselector.h index 29eac0809..a9a05d5ab 100644 --- a/mapeditor/templateeditor/mineselector.h +++ b/mapeditor/templateeditor/mineselector.h @@ -22,9 +22,9 @@ class MineSelector : public QDialog Q_OBJECT public: - explicit MineSelector(std::map & mines); + explicit MineSelector(std::map & mines); - static void showMineSelector(std::map & mines); + static void showMineSelector(std::map & mines); private slots: void on_buttonBoxResult_accepted(); @@ -33,5 +33,5 @@ private slots: private: Ui::MineSelector *ui; - std::map & minesSelected; + std::map & minesSelected; }; diff --git a/mapeditor/translation/belarusian.ts b/mapeditor/translation/belarusian.ts index 1a8be617a..d0d2bab1f 100644 --- a/mapeditor/translation/belarusian.ts +++ b/mapeditor/translation/belarusian.ts @@ -320,54 +320,63 @@ Фінальнае відэа - + Custom AI-generated, needs review by native speaker; delete this comment afterwards Карыстальніцкае - + Infix AI-generated, needs review by native speaker; delete this comment afterwards Інфікс - + X AI-generated, needs review by native speaker; delete this comment afterwards X - + Y AI-generated, needs review by native speaker; delete this comment afterwards Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards Пазіцыя надпісу X - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards Пазіцыя надпісу Y - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards Менш сцэнараў - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards Новае наладжванне рэгіёнаў падтрымлівае менш сцэнараў, чым раней. Некаторыя будуць выдалены. Працягнуць? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -395,7 +404,7 @@ Выдаліць - + New event AI-generated, needs review by native speaker; delete this comment afterwards Новая падзея @@ -587,31 +596,31 @@ Наладзіць заклёнствы - + Level 1 AI-generated, needs review by native speaker; delete this comment afterwards Узровень 1 - + Level 2 AI-generated, needs review by native speaker; delete this comment afterwards Узровень 2 - + Level 3 AI-generated, needs review by native speaker; delete this comment afterwards Узровень 3 - + Level 4 AI-generated, needs review by native speaker; delete this comment afterwards Узровень 4 - + Level 5 AI-generated, needs review by native speaker; delete this comment afterwards Узровень 5 @@ -678,7 +687,7 @@ MainWindow - + VCMI Map Editor Рэдактар ​​карт VCMI @@ -867,8 +876,6 @@ - - View underground AI-generated, needs review by native speaker; delete this comment afterwards Паказаць падземны ўзровень @@ -1044,9 +1051,9 @@ - - - + + + Update appearance AI-generated, needs review by native speaker; delete this comment afterwards Абнавіць знешні выгляд @@ -1276,284 +1283,322 @@ Ctrl+Shift+= - + Confirmation AI-generated, needs review by native speaker; delete this comment afterwards Пацверджанне - + Unsaved changes will be lost, are you sure? AI-generated, needs review by native speaker; delete this comment afterwards Незахаваныя змены будуць страчаныя, вы ўпэўнены? - + + Surface + + + + + Underground + Падземны ўзровень + + + + Level - %1 + + + + Mods are required AI-generated, needs review by native speaker; delete this comment afterwards Патрабуюцца моды - + Failed to open map AI-generated, needs review by native speaker; delete this comment afterwards Не атрымалася адкрыць мапу - + Open map AI-generated, needs review by native speaker; delete this comment afterwards Адкрыць мапу - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards Усе падтрымліваемыя мапы (*.vmap *.h3m);;Мапы VCMI(*.vmap);;Мапы HoMM3(*.h3m) - + Recently Opened Files AI-generated, needs review by native speaker; delete this comment afterwards Нядаўна адкрытыя файлы - + Map validation AI-generated, needs review by native speaker; delete this comment afterwards Праверка мапы - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Мапа мае крытычныя памылкі і, хутчэй за ўсё, не будзе прайграна. Адкрыйце Валідатар у меню Мапа, каб убачыць знойдзеныя праблемы - + Map has some errors. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Мапа мае памылкі. Адкрыйце Валідатар у меню Мапа, каб убачыць знойдзеныя праблемы - + Failed to save map AI-generated, needs review by native speaker; delete this comment afterwards Не атрымалася захаваць мапу - + Save map AI-generated, needs review by native speaker; delete this comment afterwards Захаваць мапу - + VCMI maps (*.vmap) AI-generated, needs review by native speaker; delete this comment afterwards Мапы VCMI (*.vmap) - + Type AI-generated, needs review by native speaker; delete this comment afterwards Тып - + Towns AI-generated, needs review by native speaker; delete this comment afterwards Гарады - + Objects AI-generated, needs review by native speaker; delete this comment afterwards Аб’екты - + Heroes AI-generated, needs review by native speaker; delete this comment afterwards Героі - + Artifacts AI-generated, needs review by native speaker; delete this comment afterwards Артыфакты - + Resources AI-generated, needs review by native speaker; delete this comment afterwards Рэсурсы - + Banks AI-generated, needs review by native speaker; delete this comment afterwards Банкі - + Dwellings AI-generated, needs review by native speaker; delete this comment afterwards Жыллё - + Grounds AI-generated, needs review by native speaker; delete this comment afterwards Паверхня - + Teleports AI-generated, needs review by native speaker; delete this comment afterwards Тэлепорты - + Mines AI-generated, needs review by native speaker; delete this comment afterwards Руднікі - + Triggers AI-generated, needs review by native speaker; delete this comment afterwards Трыгеры - + Monsters AI-generated, needs review by native speaker; delete this comment afterwards Монстры - + Quests AI-generated, needs review by native speaker; delete this comment afterwards Заданні - + Wog Objects AI-generated, needs review by native speaker; delete this comment afterwards Аб’екты WoG - + Obstacles AI-generated, needs review by native speaker; delete this comment afterwards Перашкоды - + Other AI-generated, needs review by native speaker; delete this comment afterwards Іншае - + Mods loading problem AI-generated, needs review by native speaker; delete this comment afterwards Праблема з загрузкай модаў - + Critical error during Mods loading. Disable invalid mods and restart. AI-generated, needs review by native speaker; delete this comment afterwards Крытычная памылка падчас загрузкі модаў. Адключыце памылковыя моды і перазапусціце. - - - View surface - AI-generated, needs review by native speaker; delete this comment afterwards - Паказаць паверхню + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + AI-generated, needs review by native speaker; delete this comment afterwards + Паказаць паверхню + + + No objects selected AI-generated, needs review by native speaker; delete this comment afterwards Аб’екты не абраныя - + This operation is irreversible. Do you want to continue? AI-generated, needs review by native speaker; delete this comment afterwards Гэта дзеянне незваротнае. Хочаце працягнуць? - + Errors occurred. %1 objects were not updated AI-generated, needs review by native speaker; delete this comment afterwards Адбыліся памылкі. %1 аб’ектаў не былі абноўлены - + Save to image AI-generated, needs review by native speaker; delete this comment afterwards Захаваць як выява - + Select maps to convert AI-generated, needs review by native speaker; delete this comment afterwards Абраць мапы для канвертацыі - + HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards Мапы HoMM3 (*.h3m) - + Choose directory to save converted maps AI-generated, needs review by native speaker; delete this comment afterwards Абраць каталог для захавання пераўтворанных мап - + Operation completed AI-generated, needs review by native speaker; delete this comment afterwards Аперацыя завершана - + Successfully converted %1 maps AI-generated, needs review by native speaker; delete this comment afterwards Паспяхова пераўтворана мапаў: %1 - + Failed to convert the map. Abort operation AI-generated, needs review by native speaker; delete this comment afterwards Не ўдалося пераўтварыць мапу. Аперацыя спынена - + Select campaign to convert AI-generated, needs review by native speaker; delete this comment afterwards Абраць кампанію для канвертацыі - + HoMM3 campaigns (*.h3c) AI-generated, needs review by native speaker; delete this comment afterwards Кампаніі HoMM3 (*.h3c) - + Select destination file AI-generated, needs review by native speaker; delete this comment afterwards Абраць файл прызначэння - + VCMI campaigns (*.vcmp) AI-generated, needs review by native speaker; delete this comment afterwards Кампаніі VCMI (*.vcmp) @@ -1562,19 +1607,19 @@ MapController - + Hero %1 cannot be created as NEUTRAL. AI-generated, needs review by native speaker; delete this comment afterwards Герой %1 не можа быць створаны як НЕЙТРАЛЬНЫ. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards Адсутнічае неабходны мод - + Do you want to do that now ? @@ -1585,7 +1630,7 @@ Do you want to do that now ? Хочаце зрабіць гэта зараз? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards Мод гэтага аб’екта з’яўляецца абавязковым для карэктнай працы мапы. @@ -1771,6 +1816,139 @@ Do you want to do that now ? Моды з поўным зместам + + ObjectSelector + + + Select Objects + + + + + Objects + Аб’екты + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Іншае + + + + All + Усё + + + + None + + + + + Creature bank + + + + + Bonus + Бонус + + + + Dwelling + + + + + Resource + Рэсурс + + + + Resource generator + + + + + Spell scroll + Скрутак заклёна + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Значэнне + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1933,13 +2111,18 @@ Do you want to do that now ? Эксперт - + Default secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Другасныя ўменні па змаўчанні: - + + Random hero secondary skills + + + + Secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Другасныя ўменні: @@ -2357,25 +2540,25 @@ Do you want to do that now ? НЕМАГЧЫМА ПАЗНАЧЫЦЬ - + Can't place object AI-generated, needs review by native speaker; delete this comment afterwards Немагчыма размясціць аб’ект - + There can only be one grail object on the map. AI-generated, needs review by native speaker; delete this comment afterwards На мапе можа быць толькі адзін артэфакт Грааля. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (падмодуль %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2384,21 +2567,21 @@ Add it to the map's required mods in Map->General settings. Дадайце яго ў спіс патрабуемых модаў у Мапа->Агульныя налады. - + Custom Spells: AI-generated, needs review by native speaker; delete this comment afterwards Карыстальніцкія заклёнствы: - + Default Spells AI-generated, needs review by native speaker; delete this comment afterwards Заклёнствы па змаўчанні - + Default AI-generated, needs review by native speaker; delete this comment afterwards Па змаўчанні @@ -2563,7 +2746,7 @@ Add it to the map's required mods in Map->General settings. Забароненыя будынкі: - + Town Events: AI-generated, needs review by native speaker; delete this comment afterwards Падзеі горада: @@ -3673,7 +3856,7 @@ Add it to the map's required mods in Map->General settings. TemplateEditor - + VCMI Template Editor @@ -3704,8 +3887,8 @@ Add it to the map's required mods in Map->General settings. - - + + Add Дадаць @@ -3742,21 +3925,21 @@ Add it to the map's required mods in Map->General settings. - + X X - + Y Y - + Z @@ -3783,14 +3966,14 @@ Add it to the map's required mods in Map->General settings. - - + + None - + Normal Звычайныя @@ -3800,498 +3983,501 @@ Add it to the map's required mods in Map->General settings. Астравы - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type Тып - + Owner Уладальнік - + Zone link - - - + + + Mines Руднікі - - + + Custom objects - - + + Towns Гарады - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Гулец - - - - + + + + Neutral Нейтральны - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Монстры - + Allowed monsters - + Banned monsters - + Strength - + Objects Аб’екты - + Connections - + Open Адкрыць - + Save Захаваць - + New Новы - + Save as... Захаваць як... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Павялічыць маштаб - + Ctrl++ Ctrl++ - + Zoom out Паменшыць маштаб - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Скінуць маштаб - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random - + Weak Слабыя - + Strong Моцныя - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Пацверджанне - + Unsaved changes will be lost, are you sure? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Памылка - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Памылка @@ -4534,7 +4720,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Дзень %1 - %2 @@ -4567,18 +4753,71 @@ Guard: %3 Выдаліць - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Дзень %1 - %2 - + New event AI-generated, needs review by native speaker; delete this comment afterwards Новая падзея + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + Тып + + + + Value + Значэнне + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4729,6 +4968,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4997,13 +5269,13 @@ Guard: %3 XL (144x144) - + Random map AI-generated, needs review by native speaker; delete this comment afterwards Выпадковая мапа - + Players AI-generated, needs review by native speaker; delete this comment afterwards Гульцы @@ -5045,22 +5317,27 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random AI-generated, needs review by native speaker; delete this comment afterwards Выпадкова - + Human teams AI-generated, needs review by native speaker; delete this comment afterwards Каманды людзей - + Computer teams AI-generated, needs review by native speaker; delete this comment afterwards Каманды ШІ @@ -5078,141 +5355,150 @@ Guard: %3 Адвольны памер - Underground AI-generated, needs review by native speaker; delete this comment afterwards - Падземны ўзровень + Падземны ўзровень - + Humans AI-generated, needs review by native speaker; delete this comment afterwards Людзі - + Computers AI-generated, needs review by native speaker; delete this comment afterwards Камп’ютары - + Monster strength AI-generated, needs review by native speaker; delete this comment afterwards Сіла монстраў - + Weak AI-generated, needs review by native speaker; delete this comment afterwards Слабыя - - + + Normal AI-generated, needs review by native speaker; delete this comment afterwards Звычайныя - + Strong AI-generated, needs review by native speaker; delete this comment afterwards Моцныя - + Water content AI-generated, needs review by native speaker; delete this comment afterwards Колькасць вады - + None AI-generated, needs review by native speaker; delete this comment afterwards Няма - + Islands AI-generated, needs review by native speaker; delete this comment afterwards Астравы - + Roads AI-generated, needs review by native speaker; delete this comment afterwards Дарогі - + Dirt AI-generated, needs review by native speaker; delete this comment afterwards Зямля - + Gravel AI-generated, needs review by native speaker; delete this comment afterwards Жвір - + Cobblestone AI-generated, needs review by native speaker; delete this comment afterwards Машонка - - + + Template AI-generated, needs review by native speaker; delete this comment afterwards Шаблон - + Custom seed AI-generated, needs review by native speaker; delete this comment afterwards Адвольнае зерне - + Generate random map AI-generated, needs review by native speaker; delete this comment afterwards Стварыць выпадковую мапу - + OK AI-generated, needs review by native speaker; delete this comment afterwards ОК - + Cancel AI-generated, needs review by native speaker; delete this comment afterwards Скасаваць - + No template AI-generated, needs review by native speaker; delete this comment afterwards Няма шаблона - + No template for parameters specified. Random map cannot be generated. AI-generated, needs review by native speaker; delete this comment afterwards Няма шаблона для зададзеных параметраў. Немагчыма стварыць выпадковую мапу. - + RMG failure AI-generated, needs review by native speaker; delete this comment afterwards Сбой генератара мапы (RMG) - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] AI-generated, needs review by native speaker; delete this comment afterwards [па змаўчанні] diff --git a/mapeditor/translation/bulgarian.ts b/mapeditor/translation/bulgarian.ts index 5abd51b46..fc1ceb14e 100644 --- a/mapeditor/translation/bulgarian.ts +++ b/mapeditor/translation/bulgarian.ts @@ -320,52 +320,61 @@ Аутро видео - + Custom AI-generated, needs review by native speaker; delete this comment afterwards Персонализирано - + Infix AI-generated, needs review by native speaker; delete this comment afterwards Инфикс - + X - + Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards Позиция на етикета X - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards Позиция на етикета Y - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards По-малко сценарии - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards Новата конфигурация на региона поддържа по-малко сценарии. Някои ще бъдат премахнати. Да продължа ли? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -393,7 +402,7 @@ Премахни - + New event AI-generated, needs review by native speaker; delete this comment afterwards Ново събитие @@ -585,31 +594,31 @@ Персонализирай заклинанията - + Level 1 AI-generated, needs review by native speaker; delete this comment afterwards Ниво 1 - + Level 2 AI-generated, needs review by native speaker; delete this comment afterwards Ниво 2 - + Level 3 AI-generated, needs review by native speaker; delete this comment afterwards Ниво 3 - + Level 4 AI-generated, needs review by native speaker; delete this comment afterwards Ниво 4 - + Level 5 AI-generated, needs review by native speaker; delete this comment afterwards Ниво 5 @@ -676,7 +685,7 @@ MainWindow - + VCMI Map Editor Редактор на карти VCMI @@ -865,8 +874,6 @@ - - View underground AI-generated, needs review by native speaker; delete this comment afterwards Преглед на подземие @@ -1042,9 +1049,9 @@ - - - + + + Update appearance AI-generated, needs review by native speaker; delete this comment afterwards Обнови външния вид @@ -1274,284 +1281,322 @@ Ctrl+Shift+= - + Confirmation AI-generated, needs review by native speaker; delete this comment afterwards Потвърждение - + Unsaved changes will be lost, are you sure? AI-generated, needs review by native speaker; delete this comment afterwards Незаписаните промени ще бъдат загубени, сигурни ли сте? - + + Surface + + + + + Underground + Подземие + + + + Level - %1 + + + + Mods are required AI-generated, needs review by native speaker; delete this comment afterwards Необходими са модове - + Failed to open map AI-generated, needs review by native speaker; delete this comment afterwards Неуспешно отваряне на карта - + Open map AI-generated, needs review by native speaker; delete this comment afterwards Отвори карта - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards Всички поддържани карти (*.vmap *.h3m);;VCMI карти(*.vmap);;HoMM3 карти(*.h3m) - + Recently Opened Files AI-generated, needs review by native speaker; delete this comment afterwards Последно отворени файлове - + Map validation AI-generated, needs review by native speaker; delete this comment afterwards Валидиране на картата - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Картата има критични проблеми и най-вероятно няма да бъде игрална. Отворете Валидатора от менюто Карта, за да видите намерените проблеми - + Map has some errors. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Картата има някои грешки. Отворете Валидатора от менюто Карта, за да видите намерените проблеми - + Failed to save map AI-generated, needs review by native speaker; delete this comment afterwards Неуспешно запазване на картата - + Save map AI-generated, needs review by native speaker; delete this comment afterwards Запази карта - + VCMI maps (*.vmap) AI-generated, needs review by native speaker; delete this comment afterwards VCMI карти (*.vmap) - + Type AI-generated, needs review by native speaker; delete this comment afterwards Тип - + Towns AI-generated, needs review by native speaker; delete this comment afterwards Градове - + Objects AI-generated, needs review by native speaker; delete this comment afterwards Обекти - + Heroes AI-generated, needs review by native speaker; delete this comment afterwards Герои - + Artifacts AI-generated, needs review by native speaker; delete this comment afterwards Артефакти - + Resources AI-generated, needs review by native speaker; delete this comment afterwards Ресурси - + Banks AI-generated, needs review by native speaker; delete this comment afterwards Банки - + Dwellings AI-generated, needs review by native speaker; delete this comment afterwards Жилища - + Grounds AI-generated, needs review by native speaker; delete this comment afterwards Терен - + Teleports AI-generated, needs review by native speaker; delete this comment afterwards Телепорти - + Mines AI-generated, needs review by native speaker; delete this comment afterwards Мини - + Triggers AI-generated, needs review by native speaker; delete this comment afterwards Тригери - + Monsters AI-generated, needs review by native speaker; delete this comment afterwards Чудовища - + Quests AI-generated, needs review by native speaker; delete this comment afterwards Мисии - + Wog Objects AI-generated, needs review by native speaker; delete this comment afterwards Wog обекти - + Obstacles AI-generated, needs review by native speaker; delete this comment afterwards Препятствия - + Other AI-generated, needs review by native speaker; delete this comment afterwards Други - + Mods loading problem AI-generated, needs review by native speaker; delete this comment afterwards Проблем при зареждане на модове - + Critical error during Mods loading. Disable invalid mods and restart. AI-generated, needs review by native speaker; delete this comment afterwards Критична грешка при зареждане на модове. Изключете невалидните модове и рестартирайте. - - - View surface - AI-generated, needs review by native speaker; delete this comment afterwards - Преглед на повърхността + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + AI-generated, needs review by native speaker; delete this comment afterwards + Преглед на повърхността + + + No objects selected AI-generated, needs review by native speaker; delete this comment afterwards Няма избрани обекти - + This operation is irreversible. Do you want to continue? AI-generated, needs review by native speaker; delete this comment afterwards Тази операция е необратима. Искате ли да продължите? - + Errors occurred. %1 objects were not updated AI-generated, needs review by native speaker; delete this comment afterwards Възникнаха грешки. %1 обекта не бяха обновени - + Save to image AI-generated, needs review by native speaker; delete this comment afterwards Запази като изображение - + Select maps to convert AI-generated, needs review by native speaker; delete this comment afterwards Изберете карти за конвертиране - + HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards HoMM3 карти (*.h3m) - + Choose directory to save converted maps AI-generated, needs review by native speaker; delete this comment afterwards Изберете директория за запазване на конвертираните карти - + Operation completed AI-generated, needs review by native speaker; delete this comment afterwards Операцията завърши - + Successfully converted %1 maps AI-generated, needs review by native speaker; delete this comment afterwards Успешно конвертирани %1 карти - + Failed to convert the map. Abort operation AI-generated, needs review by native speaker; delete this comment afterwards Неуспешно конвертиране на карта. Прекъсване на операцията - + Select campaign to convert AI-generated, needs review by native speaker; delete this comment afterwards Изберете кампания за конвертиране - + HoMM3 campaigns (*.h3c) AI-generated, needs review by native speaker; delete this comment afterwards HoMM3 кампании (*.h3c) - + Select destination file AI-generated, needs review by native speaker; delete this comment afterwards Изберете целеви файл - + VCMI campaigns (*.vcmp) AI-generated, needs review by native speaker; delete this comment afterwards VCMI кампании (*.vcmp) @@ -1560,19 +1605,19 @@ MapController - + Hero %1 cannot be created as NEUTRAL. AI-generated, needs review by native speaker; delete this comment afterwards Герой %1 не може да бъде създаден като НЕУТРАЛЕН. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards Липсващ необходим мод - + Do you want to do that now ? @@ -1583,7 +1628,7 @@ Do you want to do that now ? Желаете ли да го направите сега? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards Модът на този обект е задължителен, за да остане картата валидна. @@ -1769,6 +1814,139 @@ Do you want to do that now ? Модове с пълно съдържание + + ObjectSelector + + + Select Objects + + + + + Objects + Обекти + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Други + + + + All + Всички + + + + None + + + + + Creature bank + + + + + Bonus + Бонус + + + + Dwelling + + + + + Resource + Ресурс + + + + Resource generator + + + + + Spell scroll + Свитък със заклинание + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Стойност + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1929,13 +2107,18 @@ Do you want to do that now ? Експерт - + Default secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Стандартни вторични умения: - + + Random hero secondary skills + + + + Secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Вторични умения: @@ -2352,25 +2535,25 @@ Do you want to do that now ? НЕОЗНАЧИМ - + Can't place object AI-generated, needs review by native speaker; delete this comment afterwards Не може да се постави обект - + There can only be one grail object on the map. AI-generated, needs review by native speaker; delete this comment afterwards На картата може да има само един обект на граала. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (подмодул на %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2379,21 +2562,21 @@ Add it to the map's required mods in Map->General settings. Добавете го към задължителните модове в Настройки → Общи. - + Custom Spells: AI-generated, needs review by native speaker; delete this comment afterwards Персонализирани заклинания: - + Default Spells AI-generated, needs review by native speaker; delete this comment afterwards Стандартни заклинания - + Default AI-generated, needs review by native speaker; delete this comment afterwards По подразбиране @@ -2558,7 +2741,7 @@ Add it to the map's required mods in Map->General settings. Забранени сгради: - + Town Events: AI-generated, needs review by native speaker; delete this comment afterwards Събития в града: @@ -3665,7 +3848,7 @@ Add it to the map's required mods in Map->General settings. TemplateEditor - + VCMI Template Editor @@ -3696,8 +3879,8 @@ Add it to the map's required mods in Map->General settings. - - + + Add Добави @@ -3734,21 +3917,21 @@ Add it to the map's required mods in Map->General settings. - + X - + Y - + Z @@ -3775,14 +3958,14 @@ Add it to the map's required mods in Map->General settings. - - + + None - + Normal Нормална @@ -3792,498 +3975,501 @@ Add it to the map's required mods in Map->General settings. Острови - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type Тип - + Owner Собственик - + Zone link - - - + + + Mines Мини - - + + Custom objects - - + + Towns Градове - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Играч - - - - + + + + Neutral Неутрален - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Чудовища - + Allowed monsters - + Banned monsters - + Strength - + Objects Обекти - + Connections - + Open Отвори - + Save Запази - + New Нов - + Save as... Запази като... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Увеличи - + Ctrl++ Ctrl++ - + Zoom out Намали - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Нулирай мащаба - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random - + Weak Слаба - + Strong Силна - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Потвърждение - + Unsaved changes will be lost, are you sure? Незаписаните промени ще бъдат загубени, сигурни ли сте? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Грешка - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Грешка @@ -4526,7 +4712,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Ден %1 - %2 @@ -4559,18 +4745,71 @@ Guard: %3 Премахни - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Ден %1 - %2 - + New event AI-generated, needs review by native speaker; delete this comment afterwards Ново събитие + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + Тип + + + + Value + Стойност + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4721,6 +4960,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4989,13 +5261,13 @@ Guard: %3 XL (144x144) - + Random map AI-generated, needs review by native speaker; delete this comment afterwards Случайна карта - + Players AI-generated, needs review by native speaker; delete this comment afterwards Играч(и) @@ -5037,22 +5309,27 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random AI-generated, needs review by native speaker; delete this comment afterwards Случайно - + Human teams AI-generated, needs review by native speaker; delete this comment afterwards Човешки отбори - + Computer teams AI-generated, needs review by native speaker; delete this comment afterwards Компютърни отбори @@ -5070,141 +5347,150 @@ Guard: %3 Потребителски размер - Underground AI-generated, needs review by native speaker; delete this comment afterwards - Подземие + Подземие - + Humans AI-generated, needs review by native speaker; delete this comment afterwards Хора - + Computers AI-generated, needs review by native speaker; delete this comment afterwards Компютри - + Monster strength AI-generated, needs review by native speaker; delete this comment afterwards Сила на чудовищата - + Weak AI-generated, needs review by native speaker; delete this comment afterwards Слаба - - + + Normal AI-generated, needs review by native speaker; delete this comment afterwards Нормална - + Strong AI-generated, needs review by native speaker; delete this comment afterwards Силна - + Water content AI-generated, needs review by native speaker; delete this comment afterwards Водно съдържание - + None AI-generated, needs review by native speaker; delete this comment afterwards Няма - + Islands AI-generated, needs review by native speaker; delete this comment afterwards Острови - + Roads AI-generated, needs review by native speaker; delete this comment afterwards Пътища - + Dirt AI-generated, needs review by native speaker; delete this comment afterwards Пръст - + Gravel AI-generated, needs review by native speaker; delete this comment afterwards Чакъл - + Cobblestone AI-generated, needs review by native speaker; delete this comment afterwards Паваж - - + + Template AI-generated, needs review by native speaker; delete this comment afterwards Шаблон - + Custom seed AI-generated, needs review by native speaker; delete this comment afterwards Потребителско семе - + Generate random map AI-generated, needs review by native speaker; delete this comment afterwards Генерирай случайна карта - + OK AI-generated, needs review by native speaker; delete this comment afterwards ОК - + Cancel AI-generated, needs review by native speaker; delete this comment afterwards Отказ - + No template AI-generated, needs review by native speaker; delete this comment afterwards Няма шаблон - + No template for parameters specified. Random map cannot be generated. AI-generated, needs review by native speaker; delete this comment afterwards Няма шаблон за зададените параметри. Не може да се генерира случайна карта. - + RMG failure AI-generated, needs review by native speaker; delete this comment afterwards Грешка при генерация на карта - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] AI-generated, needs review by native speaker; delete this comment afterwards [по подразбиране] diff --git a/mapeditor/translation/chinese.ts b/mapeditor/translation/chinese.ts index e2def42d5..5c599cde0 100644 --- a/mapeditor/translation/chinese.ts +++ b/mapeditor/translation/chinese.ts @@ -270,46 +270,55 @@ 结尾动画 - + Custom 自定义 - + Infix 中缀 - + X X - + Y Y - + Label Pos X 标签坐标X - + Label Pos Y 标签坐标Y - + Fewer Scenarios 场景减少 - + New Region setup supports fewer scenarios than before. Some will removed. Continue? 新的区域设置支持的场景数量减少,部分场景将会被移除。是否继续? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -333,7 +342,7 @@ 移除 - + New event 新事件 @@ -500,27 +509,27 @@ 自定义魔法 - + Level 1 1级 - + Level 2 2级 - + Level 3 3级 - + Level 4 4级 - + Level 5 5级 @@ -577,7 +586,7 @@ MainWindow - + VCMI Map Editor VCMI地图编辑器 @@ -737,8 +746,6 @@ - - View underground 查看地下 @@ -885,9 +892,9 @@ - - - + + + Update appearance 更新外观 @@ -1079,238 +1086,276 @@ Ctrl+Shift+= - + Confirmation 确认 - + Unsaved changes will be lost, are you sure? 未保存的改动会丢失,你确定要这么做吗? - + + Surface + + + + + Underground + 双层地图 + + + + Level - %1 + + + + Mods are required 需要模组 - + Failed to open map 打开地图失败 - + Open map 打开地图 - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) 所有支持的地图类型(*.vmap *.h3m);;VCMI地图(*.vmap);;英雄无敌3地图(*.h3m) - + Recently Opened Files 最近打开文件 - + Map validation 地图校验 - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found 地图有致命问题,很可能无法游玩。打开地图菜单的校验功能以定位问题 - + Map has some errors. Open Validator from the Map menu to see issues found 地图有一些错误,打开地图菜单的校验功能以定位问题 - + Failed to save map 保存地图失败 - + Save map 保存地图 - + VCMI maps (*.vmap) VCMI地图(*.vmap) - + Type 类型 - + Towns 城镇 - + Objects 物体 - + Heroes 英雄 - + Artifacts 宝物 - + Resources 资源 - + Banks 宝屋 - + Dwellings 巢穴 - + Grounds 地面 - + Teleports 传送门 - + Mines 矿井 - + Triggers 触发器 - + Monsters 怪物 - + Quests 任务 - + Wog Objects Wog物体 - + Obstacles 障碍物 - + Other 其他 - + Mods loading problem 模组加载遇到问题 - + Critical error during Mods loading. Disable invalid mods and restart. 加载模组时遇到致命错误,请关闭无效模组后重启。 - - - View surface - 查看地上 + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + 查看地上 + + + No objects selected 未选择任何物体 - + This operation is irreversible. Do you want to continue? 此操作无法被撤销,你确定要继续么? - + Errors occurred. %1 objects were not updated 发生错误!%1 物体未完成更新 - + Save to image 保存为图片 - + Select maps to convert 选择待转换的地图 - + HoMM3 maps(*.h3m) 英雄无敌3地图文件(*.h3m) - + Choose directory to save converted maps 选择保存转换地图的目录 - + Operation completed 操作完成 - + Successfully converted %1 maps 成功转换 %1 地图 - + Failed to convert the map. Abort operation 转换地图失败,操作终止 - + Select campaign to convert 选择待转换的战役 - + HoMM3 campaigns (*.h3c) 英雄无敌3战役文件(*.h3c) - + Select destination file 选择目标文件 - + VCMI campaigns (*.vcmp) VCMI战役文件(*.vcmp) @@ -1318,18 +1363,18 @@ MapController - + Hero %1 cannot be created as NEUTRAL. 英雄 %1 无法在中立阵营被创建。 - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards 缺少必需的模组 - + Do you want to do that now ? @@ -1338,7 +1383,7 @@ Do you want to do that now ? 你现在要这么做吗? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards 该对象的模组是地图保持有效所必需的。 @@ -1500,6 +1545,139 @@ Do you want to do that now ? 所有模组 + + ObjectSelector + + + Select Objects + + + + + Objects + 物体 + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + 行动 + + + + Other + 其他 + + + + All + 全选 + + + + None + + + + + Creature bank + + + + + Bonus + 奖励 + + + + Dwelling + + + + + Resource + 资源 + + + + Resource generator + + + + + Spell scroll + 魔法卷轴 + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + 删除 + + + + + Object + + + + + Value + + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1642,12 +1820,17 @@ Do you want to do that now ? 高级 - + Default secondary skills: 默认辅助技能: - + + Random hero secondary skills + + + + Secondary skills: 辅助技能: @@ -2003,22 +2186,22 @@ Do you want to do that now ? 没有旗帜 - + Can't place object 无法放置物体 - + There can only be one grail object on the map. 只能放置一个神器在地图上。 - + (submod of %1) (子模组%1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2026,19 +2209,19 @@ Add it to the map's required mods in Map->General settings. 请在地图->常规设置中将其添加为必需模组。 - + Custom Spells: 自定义魔法: - + Default Spells 默认魔法 - + Default 默认 @@ -2177,7 +2360,7 @@ Add it to the map's required mods in Map->General settings. 禁止建筑: - + Town Events: 城镇事件: @@ -3115,7 +3298,7 @@ Add it to the map's required mods in Map->General settings. TemplateEditor - + VCMI Template Editor VCMI模版编辑器 @@ -3146,8 +3329,8 @@ Add it to the map's required mods in Map->General settings. - - + + Add 添加 @@ -3184,21 +3367,21 @@ Add it to the map's required mods in Map->General settings. - + X X - + Y Y - + Z Z @@ -3225,14 +3408,14 @@ Add it to the map's required mods in Map->General settings. - - + + None - + Normal 普通 @@ -3242,406 +3425,431 @@ Add it to the map's required mods in Map->General settings. 岛屿 - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone 区域 - + Visualisation 可视化 - + Position 位置 - - + + Size 尺寸 - + ID ID - - + + Type 类型 - + Owner 所有者 - + Zone link 区域连接 - - - + + + Mines 矿井 - - + + Custom objects 自定义物体 - - + + Towns 城镇 - - + + Terrain 地形 - - - - + + + + Treasure 财宝 - + Town info 城镇信息 - + Town count 城镇数量 - - - - + + + + Player 玩家 - - - - + + + + Neutral 中立 - + Castle count 城堡数量 - + Town density 城镇密度 - + Castle density 城堡密度 - + Match terrain to town 城镇匹配地形 - + Terrain types 地形类型 - + Banned terrain types 禁用地形类型 - + Towns are same type 城镇是同一类型 - + Allowed towns 允许城镇 - + Banned towns 禁用城镇 - + Town hints 城镇提示 - + Monsters 怪物 - + Allowed monsters 允许怪物 - + Banned monsters 禁用怪物 - + Strength 强度 - + Objects 物体 - + Connections 连接 - + Open 打开 - + Save 保存 - + New 新建 - + Save as... 另存为 - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone 添加区域 - + Remove zone 移除区域 - - + + Del Del - + Auto position 自动选择位置 - + Ctrl+P Ctrl+P - + Zoom in 放大 - + Ctrl++ Ctrl++ - + Zoom out 缩小 - + Ctrl+- Ctrl+- - + Zoom auto 自动缩放 - + Ctrl+Shift+: Ctrl+Shift+: - + Zoom reset 重置缩放 - + Ctrl+Shift+= Ctrl+Shift+= - + Min 最小 - + Max 最大 - + Action 行动 - - + + Delete 删除 - + ID: %1 ID: %1 - + Max treasure: %1 最大资源:%1 - + Player start 玩家起始区域 - + CPU start 电脑起始区域 - + Junction 交汇处 - + Water 水域 - + Sealed 封闭区 - - + + Random 随机 - + Weak - + Strong - + Zone A 区域A - + Zone B 区域B - + Guard 守卫 - + Road 道路 - + Guarded 有守卫的 - + Fictive 虚拟的 - + Repulsive 排斥的 - + Wide 宽阔的 - + Force portal 强制传送门 - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 @@ -3650,92 +3858,85 @@ Guard: %3 守卫:%3 - + Confirmation 确认 - + Unsaved changes will be lost, are you sure? 未保存的改动会丢失,你确定要这么做吗? - + Open template 打开模版 - + VCMI templates(*.json) VCMI模版(*.json) - + Save template 保存模版 - + VCMI templates (*.json) VCMI模版(*.json) - - + + Enter Name 输入名字 - - + + Name: 名字: - + Already existing! 已存在! - + A template with this name is already existing. 同名模版已存在。 - + To few templates! 模版过少! - + At least one template should remain after removing. 移除后最少需要保留一个模版。 - - Error - 错误 + 错误 - - Not implemented yet! - 尚未实现! + 尚未实现! TerrainSelector - - Select Terrains - 选择地形 + 选择地形 - Terrain Selector - 地形选择器 + 地形选择器 @@ -3940,7 +4141,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 %1 - %2 日 @@ -3968,16 +4169,69 @@ Guard: %3 移除 - + Day %1 - %2 %1 - %2 日 - + New event 新事件 + + TownHintSelector + + + Select Town hints + + + + + Town hints + 城镇提示 + + + + Town hint Selector + + + + + Type + 类型 + + + + Value + + + + + Action + 行动 + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + 删除 + + TownSpellsWidget @@ -4111,6 +4365,39 @@ Guard: %3 Action 行动 + + + Delete + 删除 + + + + Ts + + + Terrain Selector + 地形选择器 + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4336,12 +4623,12 @@ Guard: %3 特大(144x144) - + Random map 随机地图 - + Players 玩家 @@ -4376,20 +4663,25 @@ Guard: %3 超巨 (252x252) - - - - + + Levels + + + + + + + Random 随机 - + Human teams 人类队伍 - + Computer teams 电脑队伍 @@ -4404,119 +4696,128 @@ Guard: %3 自定义大小 - Underground - 双层地图 + 双层地图 - + Humans 人类 - + Computers 电脑 - + Monster strength 怪物强度 - + Weak - - + + Normal 普通 - + Strong - + Water content 水域 - + None - + Islands 岛屿 - + Roads 道路 - + Dirt 泥土 - + Gravel 砂砾 - + Cobblestone 鹅卵石 - - + + Template 模版 - + Custom seed 自定义种子 - + Generate random map 生成随机地图 - + OK 确定 - + Cancel 取消 - + No template 缺少模版 - + No template for parameters specified. Random map cannot be generated. 未指定任一模版作为参数,随机地图无法生成。 - + RMG failure 随机地图生成失败 - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] [默认] diff --git a/mapeditor/translation/czech.ts b/mapeditor/translation/czech.ts index f92f51dea..7d8190638 100644 --- a/mapeditor/translation/czech.ts +++ b/mapeditor/translation/czech.ts @@ -270,46 +270,55 @@ Závěrečné video - + Custom Vlastní - + Infix Vsuvka - + X X - + Y Y - + Label Pos X Pozice popisku X - + Label Pos Y Pozice popisku Y - + Fewer Scenarios Méně scénářů - + New Region setup supports fewer scenarios than before. Some will removed. Continue? Nové nastavení oblasti podporuje méně scénářů než dříve. Některé budou odstraněny. Pokračovat? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -333,7 +342,7 @@ Odebrat - + New event Nová událost @@ -501,27 +510,27 @@ Přizpůsobit kouzla - + Level 1 Úroveň 1 - + Level 2 Úroveň 2 - + Level 3 Úroveň 3 - + Level 4 Úroveň 4 - + Level 5 Úroveň 5 @@ -578,7 +587,7 @@ MainWindow - + VCMI Map Editor Editor map VCMI @@ -738,8 +747,6 @@ - - View underground Zobrazit podzemí @@ -886,9 +893,9 @@ - - - + + + Update appearance Aktualizovat vzhled @@ -1080,238 +1087,276 @@ Ctrl+Shift+= - + Confirmation Potvrzení - + Unsaved changes will be lost, are you sure? Neuložené změny budou ztraceny, jste si jisti? - + + Surface + + + + + Underground + Podzemí + + + + Level - %1 + + + + Mods are required Vyžadované modifikace - + Failed to open map Otevření mapy se nezdařilo - + Open map Otevřít mapu - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) Všechny podporované mapy (*.vmap *.h3m);; Mapy VCMI(*.vmap);;Mapy HoMM3(*.h3m) - + Recently Opened Files Naposledny otevřené soubory - + Map validation Kontrola mapy - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found Mapa obsahuje kritické problémy a pravděpodobně nebude hratelná. Otevřete Validátor z nabídky Mapa, abyste zobrazili nalezené chyby - + Map has some errors. Open Validator from the Map menu to see issues found Mapa obsahuje chyby. Otevřete Validátor z nabídky Mapa, abyste zobrazili nalezené problémy - + Failed to save map Nepodařilo se uložit mapu - + Save map Uložit mapu - + VCMI maps (*.vmap) Mapy VCMI (*.vmap) - + Type Druh - + Towns Města - + Objects Objekty - + Heroes Hrdinové - + Artifacts Artefakty - + Resources Suroviny - + Banks Zásobárny - + Dwellings Obydlí - + Grounds Země - + Teleports Teleporty - + Mines Doly - + Triggers Spouštěče - + Monsters Jednotky - + Quests Úkoly - + Wog Objects WoG objekty - + Obstacles Překážky - + Other Ostatní - + Mods loading problem Problém s načítáním modifikací - + Critical error during Mods loading. Disable invalid mods and restart. Kritická chyba při načítání modifikací. Deaktivujte neplatné modifikace a restartujte. - - - View surface - Zobrazit povrch + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + Zobrazit povrch + + + No objects selected Nejsou vybrány žádné objekty - + This operation is irreversible. Do you want to continue? Tento úkon je nezvratný. Chcete pokračovat? - + Errors occurred. %1 objects were not updated Nastaly chyby. Nebylo aktualizováno %1 objektů - + Save to image Uložit do obrázku - + Select maps to convert Vyberte mapy pro převod - + HoMM3 maps(*.h3m) Mapy HoMM3 (*.h3m) - + Choose directory to save converted maps Vyberte složku pro uložení převedených map - + Operation completed Operace dokončena - + Successfully converted %1 maps Úspěšně převedeno %1 map - + Failed to convert the map. Abort operation Převod map selhal. Úkon zrušen - + Select campaign to convert Vyberte kampaň ke konverzi - + HoMM3 campaigns (*.h3c) Kampaně HoMM3 (*.h3c) - + Select destination file Vyberte cílový soubor - + VCMI campaigns (*.vcmp) Kampaně VCMI (*.vcmp) @@ -1319,18 +1364,18 @@ MapController - + Hero %1 cannot be created as NEUTRAL. Hrdina %1 nemůže být vytvořen jako NEUTRÁLNÍ. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards Chybějící povinný mod - + Do you want to do that now ? @@ -1341,7 +1386,7 @@ Do you want to do that now ? Chcete to udělat nyní? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards Mod tohoto objektu je povinný, aby mapa zůstala platná. @@ -1503,6 +1548,139 @@ Chcete to udělat nyní? Modifikace s kompletním herním obsahem + + ObjectSelector + + + Select Objects + + + + + Objects + Objekty + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Ostatní + + + + All + Vše + + + + None + + + + + Creature bank + + + + + Bonus + Bonus + + + + Dwelling + + + + + Resource + Surovina + + + + Resource generator + + + + + Spell scroll + "Kouzelný svitek + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Hodnota + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1648,12 +1826,17 @@ Chcete to udělat nyní? Expert - + Default secondary skills: Výchozí dovednosti: - + + Random hero secondary skills + + + + Secondary skills: Dovednosti: @@ -2011,23 +2194,23 @@ Chcete to udělat nyní? NEOZNAČITELNÝ - + Can't place object Objekt nelze umístit - + There can only be one grail object on the map. Na mapě může být pouze jeden grál. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (submodul %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2036,19 +2219,19 @@ Add it to the map's required mods in Map->General settings. Přidejte ho do povinných modů mapy v nabídce Mapa->Obecné nastavení. - + Custom Spells: Vlastní kouzla: - + Default Spells Výchozí kouzla - + Default Výchozí @@ -2187,7 +2370,7 @@ Přidejte ho do povinných modů mapy v nabídce Mapa->Obecné nastavení.Zakázané budovy: - + Town Events: Události města: @@ -3125,7 +3308,7 @@ Přidejte ho do povinných modů mapy v nabídce Mapa->Obecné nastavení.TemplateEditor - + VCMI Template Editor @@ -3156,8 +3339,8 @@ Přidejte ho do povinných modů mapy v nabídce Mapa->Obecné nastavení. - - + + Add Přidat @@ -3194,21 +3377,21 @@ Přidejte ho do povinných modů mapy v nabídce Mapa->Obecné nastavení. - + X X - + Y Y - + Z @@ -3235,14 +3418,14 @@ Přidejte ho do povinných modů mapy v nabídce Mapa->Obecné nastavení. - - + + None - + Normal Normální @@ -3252,498 +3435,501 @@ Přidejte ho do povinných modů mapy v nabídce Mapa->Obecné nastavení.Ostrovy - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type - + Owner Vlastník - + Zone link - - - + + + Mines Doly - - + + Custom objects - - + + Towns Města - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Hráč - - - - + + + + Neutral Neutrální - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Jednotky - + Allowed monsters - + Banned monsters - + Strength - + Objects Objekty - + Connections - + Open Otevřít - + Save Uložit - + New - + Save as... Uložit jako... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Přiblížit - + Ctrl++ Ctrl++ - + Zoom out Oddálit - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Zrušit přiblížení - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random - + Weak Slabá - + Strong Silná - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Potvrzení - + Unsaved changes will be lost, are you sure? Neuložené změny budou ztraceny, jste si jisti? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Chyba - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Chyba @@ -3948,7 +4134,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 Den %1 - %2 @@ -3976,16 +4162,69 @@ Guard: %3 Odebrat - + Day %1 - %2 Den %1 - %2 - + New event Nová událost + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + + + + + Value + Hodnota + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4119,6 +4358,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4346,12 +4618,12 @@ Guard: %3 XL (144x144) - + Random map Náhodná mapa - + Players Hráči @@ -4386,20 +4658,25 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random Náhodně - + Human teams Týmy lidí - + Computer teams Týmy počítače @@ -4414,119 +4691,128 @@ Guard: %3 Vlastní velikost - Underground - Podzemí + Podzemí - + Humans Lidé - + Computers Počítače - + Monster strength Síla jednotek - + Weak Slabá - - + + Normal Normální - + Strong Silná - + Water content Množství vody - + None Žádná - + Islands Ostrovy - + Roads Cesty - + Dirt Hlína - + Gravel Štěrk - + Cobblestone Dlažba - - + + Template Šablona - + Custom seed Vlastní semínko - + Generate random map Vygenerovat náhodnou mapu - + OK OK - + Cancel Zrušit - + No template Bez šablony - + No template for parameters specified. Random map cannot be generated. Žádná šablona pro vybrané parametry. Náhodná mapa nemůže být vygenerována. - + RMG failure Chyba RMG - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] [výchozí] diff --git a/mapeditor/translation/english.ts b/mapeditor/translation/english.ts index 59ebecf31..8dee0cb95 100644 --- a/mapeditor/translation/english.ts +++ b/mapeditor/translation/english.ts @@ -270,46 +270,55 @@ - + Custom - + Infix - + X - + Y - + Label Pos X - + Label Pos Y - + Fewer Scenarios - + New Region setup supports fewer scenarios than before. Some will removed. Continue? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -333,7 +342,7 @@ - + New event @@ -500,27 +509,27 @@ - + Level 1 - + Level 2 - + Level 3 - + Level 4 - + Level 5 @@ -577,7 +586,7 @@ MainWindow - + VCMI Map Editor @@ -737,8 +746,6 @@ - - View underground @@ -885,9 +892,9 @@ - - - + + + Update appearance @@ -1079,238 +1086,272 @@ - + Confirmation - + Unsaved changes will be lost, are you sure? - + + Surface + + + + + Underground + + + + + Level - %1 + + + + Mods are required - + Failed to open map - + Open map - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) - + Recently Opened Files - + Map validation - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found - + Map has some errors. Open Validator from the Map menu to see issues found - + Failed to save map - + Save map - + VCMI maps (*.vmap) - + Type - + Towns - + Objects - + Heroes - + Artifacts - + Resources - + Banks - + Dwellings - + Grounds - + Teleports - + Mines - + Triggers - + Monsters - + Quests - + Wog Objects - + Obstacles - + Other - + Mods loading problem - + Critical error during Mods loading. Disable invalid mods and restart. - - - View surface + + Undo clicked - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + No objects selected - + This operation is irreversible. Do you want to continue? - + Errors occurred. %1 objects were not updated - + Save to image - + Select maps to convert - + HoMM3 maps(*.h3m) - + Choose directory to save converted maps - + Operation completed - + Successfully converted %1 maps - + Failed to convert the map. Abort operation - + Select campaign to convert - + HoMM3 campaigns (*.h3c) - + Select destination file - + VCMI campaigns (*.vcmp) @@ -1318,24 +1359,24 @@ MapController - + Hero %1 cannot be created as NEUTRAL. - + Missing Required Mod - + Do you want to do that now ? - + This object's mod is mandatory for map to remain valid. @@ -1496,6 +1537,139 @@ Do you want to do that now ? + + ObjectSelector + + + Select Objects + + + + + Objects + + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + + + + + All + + + + + None + + + + + Creature bank + + + + + Bonus + + + + + Dwelling + + + + + Resource + + + + + Resource generator + + + + + Spell scroll + + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1637,12 +1811,17 @@ Do you want to do that now ? - + Default secondary skills: - + + Random hero secondary skills + + + + Secondary skills: @@ -1999,41 +2178,41 @@ Do you want to do that now ? - + Can't place object - + There can only be one grail object on the map. - + (submod of %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation - + Custom Spells: - + Default Spells - + Default @@ -2172,7 +2351,7 @@ Add it to the map's required mods in Map->General settings. - + Town Events: @@ -3110,7 +3289,7 @@ Add it to the map's required mods in Map->General settings. TemplateEditor - + VCMI Template Editor @@ -3141,8 +3320,8 @@ Add it to the map's required mods in Map->General settings. - - + + Add @@ -3179,21 +3358,21 @@ Add it to the map's required mods in Map->General settings. - + X - + Y - + Z @@ -3220,14 +3399,14 @@ Add it to the map's required mods in Map->General settings. - - + + None - + Normal @@ -3237,499 +3416,498 @@ Add it to the map's required mods in Map->General settings. - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID - - + + Type - + Owner - + Zone link - - - + + + Mines - - + + Custom objects - - + + Towns - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player - - - - + + + + Neutral - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters - + Allowed monsters - + Banned monsters - + Strength - + Objects - + Connections - + Open - + Save - + New - + Save as... - + Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del - + Auto position - + Ctrl+P - + Zoom in - + Ctrl++ - + Zoom out - + Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset - + Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random - + Weak - + Strong - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation - + Unsaved changes will be lost, are you sure? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - - - Error - - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - - TimedEvent @@ -3933,7 +4111,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 @@ -3961,16 +4139,69 @@ Guard: %3 - + Day %1 - %2 - + New event + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + + + + + Value + + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4104,6 +4335,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4329,12 +4593,12 @@ Guard: %3 - + Random map - + Players @@ -4369,20 +4633,25 @@ Guard: %3 - - - - + + Levels + + + + + + + Random - + Human teams - + Computer teams @@ -4397,119 +4666,124 @@ Guard: %3 - - Underground - - - - + Humans - + Computers - + Monster strength - + Weak - - + + Normal - + Strong - + Water content - + None - + Islands - + Roads - + Dirt - + Gravel - + Cobblestone - - + + Template - + Custom seed - + Generate random map - + OK - + Cancel - + No template - + No template for parameters specified. Random map cannot be generated. - + RMG failure - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] diff --git a/mapeditor/translation/finnish.ts b/mapeditor/translation/finnish.ts index 756792efb..47c7780c4 100644 --- a/mapeditor/translation/finnish.ts +++ b/mapeditor/translation/finnish.ts @@ -320,54 +320,63 @@ Lopetusvideo - + Custom AI-generated, needs review by native speaker; delete this comment afterwards Mukautettu - + Infix AI-generated, needs review by native speaker; delete this comment afterwards Väliosa - + X AI-generated, needs review by native speaker; delete this comment afterwards X - + Y AI-generated, needs review by native speaker; delete this comment afterwards Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards Tekstin sijainti X - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards Tekstin sijainti Y - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards Vähemmän skenaarioita - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards Uusi alueasetus tukee vähemmän skenaarioita kuin aiemmin. Jotkut poistetaan. Jatketaanko? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -395,7 +404,7 @@ Poista - + New event AI-generated, needs review by native speaker; delete this comment afterwards Uusi tapahtuma @@ -587,31 +596,31 @@ Mukauta loitsuja - + Level 1 AI-generated, needs review by native speaker; delete this comment afterwards Taso 1 - + Level 2 AI-generated, needs review by native speaker; delete this comment afterwards Taso 2 - + Level 3 AI-generated, needs review by native speaker; delete this comment afterwards Taso 3 - + Level 4 AI-generated, needs review by native speaker; delete this comment afterwards Taso 4 - + Level 5 AI-generated, needs review by native speaker; delete this comment afterwards Taso 5 @@ -678,7 +687,7 @@ MainWindow - + VCMI Map Editor VCMI-karttaeditori @@ -867,8 +876,6 @@ - - View underground AI-generated, needs review by native speaker; delete this comment afterwards Näytä maanalainen @@ -1044,9 +1051,9 @@ - - - + + + Update appearance AI-generated, needs review by native speaker; delete this comment afterwards Päivitä ulkoasu @@ -1276,284 +1283,322 @@ Ctrl+Shift+= - + Confirmation AI-generated, needs review by native speaker; delete this comment afterwards Vahvistus - + Unsaved changes will be lost, are you sure? AI-generated, needs review by native speaker; delete this comment afterwards Tallentamattomat muutokset menetetään,oletko varma? - + + Surface + + + + + Underground + Maanalainen + + + + Level - %1 + + + + Mods are required AI-generated, needs review by native speaker; delete this comment afterwards Modit vaaditaan - + Failed to open map AI-generated, needs review by native speaker; delete this comment afterwards Karttaa ei voitu avata - + Open map AI-generated, needs review by native speaker; delete this comment afterwards Avaa kartta - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards Kaikki tuetut kartat (*.vmap *.h3m);;VCMI-kartat(*.vmap);;HoMM3-kartat(*.h3m) - + Recently Opened Files AI-generated, needs review by native speaker; delete this comment afterwards Viimeksi avatut tiedostot - + Map validation AI-generated, needs review by native speaker; delete this comment afterwards Kartan tarkistus - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Kartassa on kriittisiä ongelmia,eikä se todennäköisesti ole pelattavissa. Avaa tarkistus Kartta-valikosta nähdäksesi löydetyt virheet - + Map has some errors. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Kartassa on joitakin virheitä. Avaa tarkistus Kartta-valikosta nähdäksesi löydetyt virheet - + Failed to save map AI-generated, needs review by native speaker; delete this comment afterwards Karttaa ei voitu tallentaa - + Save map AI-generated, needs review by native speaker; delete this comment afterwards Tallenna kartta - + VCMI maps (*.vmap) AI-generated, needs review by native speaker; delete this comment afterwards VCMI-kartat (*.vmap) - + Type AI-generated, needs review by native speaker; delete this comment afterwards Tyyppi - + Towns AI-generated, needs review by native speaker; delete this comment afterwards Kaupungit - + Objects AI-generated, needs review by native speaker; delete this comment afterwards Objektit - + Heroes AI-generated, needs review by native speaker; delete this comment afterwards Sankarit - + Artifacts AI-generated, needs review by native speaker; delete this comment afterwards Artefaktit - + Resources AI-generated, needs review by native speaker; delete this comment afterwards Resurssit - + Banks AI-generated, needs review by native speaker; delete this comment afterwards Pankit - + Dwellings AI-generated, needs review by native speaker; delete this comment afterwards Asuinpaikat - + Grounds AI-generated, needs review by native speaker; delete this comment afterwards Maastot - + Teleports AI-generated, needs review by native speaker; delete this comment afterwards Teleportit - + Mines AI-generated, needs review by native speaker; delete this comment afterwards Kaivokset - + Triggers AI-generated, needs review by native speaker; delete this comment afterwards Laukaisimet - + Monsters AI-generated, needs review by native speaker; delete this comment afterwards Hirviöt - + Quests AI-generated, needs review by native speaker; delete this comment afterwards Tehtävät - + Wog Objects AI-generated, needs review by native speaker; delete this comment afterwards WoG-objektit - + Obstacles AI-generated, needs review by native speaker; delete this comment afterwards Esteet - + Other AI-generated, needs review by native speaker; delete this comment afterwards Muut - + Mods loading problem AI-generated, needs review by native speaker; delete this comment afterwards Modien latausongelma - + Critical error during Mods loading. Disable invalid mods and restart. AI-generated, needs review by native speaker; delete this comment afterwards Kriittinen virhe modien latauksessa. Poista virheelliset modit käytöstä ja käynnistä uudelleen. - - - View surface - AI-generated, needs review by native speaker; delete this comment afterwards - Näytä pinta + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + AI-generated, needs review by native speaker; delete this comment afterwards + Näytä pinta + + + No objects selected AI-generated, needs review by native speaker; delete this comment afterwards Ei valittuja objekteja - + This operation is irreversible. Do you want to continue? AI-generated, needs review by native speaker; delete this comment afterwards Tätä toimintoa ei voi perua. Haluatko jatkaa? - + Errors occurred. %1 objects were not updated AI-generated, needs review by native speaker; delete this comment afterwards Tapahtui virheitä. %1 objektia ei päivitetty - + Save to image AI-generated, needs review by native speaker; delete this comment afterwards Tallenna kuvana - + Select maps to convert AI-generated, needs review by native speaker; delete this comment afterwards Valitse kartat muunnettavaksi - + HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards HoMM3-kartat (*.h3m) - + Choose directory to save converted maps AI-generated, needs review by native speaker; delete this comment afterwards Valitse hakemisto muunnettujen karttojen tallennukseen - + Operation completed AI-generated, needs review by native speaker; delete this comment afterwards Toiminto suoritettu - + Successfully converted %1 maps AI-generated, needs review by native speaker; delete this comment afterwards %1 karttaa muunnettiin onnistuneesti - + Failed to convert the map. Abort operation AI-generated, needs review by native speaker; delete this comment afterwards Kartan muuntaminen epäonnistui. Keskeytetään - + Select campaign to convert AI-generated, needs review by native speaker; delete this comment afterwards Valitse muunnettava kampanja - + HoMM3 campaigns (*.h3c) AI-generated, needs review by native speaker; delete this comment afterwards HoMM3-kampanjat (*.h3c) - + Select destination file AI-generated, needs review by native speaker; delete this comment afterwards Valitse kohdetiedosto - + VCMI campaigns (*.vcmp) AI-generated, needs review by native speaker; delete this comment afterwards VCMI-kampanjat (*.vcmp) @@ -1562,19 +1607,19 @@ MapController - + Hero %1 cannot be created as NEUTRAL. AI-generated, needs review by native speaker; delete this comment afterwards Sankaria %1 ei voida luoda NEUTRAALINA. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards Vaadittu modi puuttuu - + Do you want to do that now ? @@ -1585,7 +1630,7 @@ Do you want to do that now ? Haluatko tehdä sen nyt? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards Tämän objektin modi on pakollinen,jotta kartta pysyy kelvollisena. @@ -1771,6 +1816,139 @@ Haluatko tehdä sen nyt? Täyden sisällön modit + + ObjectSelector + + + Select Objects + + + + + Objects + Objektit + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Muut + + + + All + Kaikki + + + + None + + + + + Creature bank + + + + + Bonus + Bonus + + + + Dwelling + + + + + Resource + Resurssi + + + + Resource generator + + + + + Spell scroll + Loitsukäärö + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Arvo + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1933,13 +2111,18 @@ Haluatko tehdä sen nyt? Asiantuntija - + Default secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Oletustoissijaiset taidot: - + + Random hero secondary skills + + + + Secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Toissijaiset taidot: @@ -2356,25 +2539,25 @@ Haluatko tehdä sen nyt? EI LIPUTETTAVISSA - + Can't place object AI-generated, needs review by native speaker; delete this comment afterwards Objektia ei voi sijoittaa - + There can only be one grail object on the map. AI-generated, needs review by native speaker; delete this comment afterwards Kartalla voi olla vain yksi Graali-objekti. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (alalisäosa %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2383,21 +2566,21 @@ Add it to the map's required mods in Map->General settings. Lisää se kartan vaadittuihin lisäosiin valikosta Kartta → Yleiset asetukset. - + Custom Spells: AI-generated, needs review by native speaker; delete this comment afterwards Mukautetut loitsut: - + Default Spells AI-generated, needs review by native speaker; delete this comment afterwards Oletusloitsut - + Default AI-generated, needs review by native speaker; delete this comment afterwards Oletus @@ -2562,7 +2745,7 @@ Lisää se kartan vaadittuihin lisäosiin valikosta Kartta → Yleiset asetukset Kielletyt rakennukset: - + Town Events: AI-generated, needs review by native speaker; delete this comment afterwards Kaupunkitapahtumat: @@ -3672,7 +3855,7 @@ Lisää se kartan vaadittuihin lisäosiin valikosta Kartta → Yleiset asetukset TemplateEditor - + VCMI Template Editor @@ -3703,8 +3886,8 @@ Lisää se kartan vaadittuihin lisäosiin valikosta Kartta → Yleiset asetukset - - + + Add Lisää @@ -3741,21 +3924,21 @@ Lisää se kartan vaadittuihin lisäosiin valikosta Kartta → Yleiset asetukset - + X X - + Y Y - + Z @@ -3782,14 +3965,14 @@ Lisää se kartan vaadittuihin lisäosiin valikosta Kartta → Yleiset asetukset - - + + None - + Normal Normaali @@ -3799,498 +3982,501 @@ Lisää se kartan vaadittuihin lisäosiin valikosta Kartta → Yleiset asetukset Saaristo - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type Tyyppi - + Owner Omistaja - + Zone link - - - + + + Mines Kaivokset - - + + Custom objects - - + + Towns Kaupungit - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Pelaaja - - - - + + + + Neutral Neutraali - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Hirviöt - + Allowed monsters - + Banned monsters - + Strength - + Objects Objektit - + Connections - + Open Avaa - + Save Tallenna - + New Uusi - + Save as... Tallenna nimellä... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Lähennä - + Ctrl++ Ctrl++ - + Zoom out Loitonna - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Palauta zoomaus - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random Satunnainen - + Weak Heikko - + Strong Vahva - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Vahvistus - + Unsaved changes will be lost, are you sure? Tallentamattomat muutokset menetetään,oletko varma? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Virhe - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Virhe @@ -4533,7 +4719,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Päivä %1 - %2 @@ -4566,18 +4752,71 @@ Guard: %3 Poista - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Päivä %1 - %2 - + New event AI-generated, needs review by native speaker; delete this comment afterwards Uusi tapahtuma + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + Tyyppi + + + + Value + Arvo + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4728,6 +4967,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4996,13 +5268,13 @@ Guard: %3 XL (144x144) - + Random map AI-generated, needs review by native speaker; delete this comment afterwards Satunnainen kartta - + Players AI-generated, needs review by native speaker; delete this comment afterwards Pelaajat @@ -5044,22 +5316,27 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random AI-generated, needs review by native speaker; delete this comment afterwards Satunnainen - + Human teams AI-generated, needs review by native speaker; delete this comment afterwards Ihmistiimit - + Computer teams AI-generated, needs review by native speaker; delete this comment afterwards Tietokoneen tiimit @@ -5077,141 +5354,150 @@ Guard: %3 Mukautettu koko - Underground AI-generated, needs review by native speaker; delete this comment afterwards - Maanalainen + Maanalainen - + Humans AI-generated, needs review by native speaker; delete this comment afterwards Ihmiset - + Computers AI-generated, needs review by native speaker; delete this comment afterwards Tietokoneet - + Monster strength AI-generated, needs review by native speaker; delete this comment afterwards Hirviöiden vahvuus - + Weak AI-generated, needs review by native speaker; delete this comment afterwards Heikko - - + + Normal AI-generated, needs review by native speaker; delete this comment afterwards Normaali - + Strong AI-generated, needs review by native speaker; delete this comment afterwards Vahva - + Water content AI-generated, needs review by native speaker; delete this comment afterwards Vesimäärä - + None AI-generated, needs review by native speaker; delete this comment afterwards Ei ollenkaan - + Islands AI-generated, needs review by native speaker; delete this comment afterwards Saaristo - + Roads AI-generated, needs review by native speaker; delete this comment afterwards Tiet - + Dirt AI-generated, needs review by native speaker; delete this comment afterwards Multa - + Gravel AI-generated, needs review by native speaker; delete this comment afterwards Sora - + Cobblestone AI-generated, needs review by native speaker; delete this comment afterwards Kivitie - - + + Template AI-generated, needs review by native speaker; delete this comment afterwards Pohja - + Custom seed AI-generated, needs review by native speaker; delete this comment afterwards Mukautettu siemen - + Generate random map AI-generated, needs review by native speaker; delete this comment afterwards Luo satunnainen kartta - + OK AI-generated, needs review by native speaker; delete this comment afterwards OK - + Cancel AI-generated, needs review by native speaker; delete this comment afterwards Peruuta - + No template AI-generated, needs review by native speaker; delete this comment afterwards Ei pohjaa - + No template for parameters specified. Random map cannot be generated. AI-generated, needs review by native speaker; delete this comment afterwards Parametrien mukaisia pohjia ei ole. Satunnaista karttaa ei voi luoda. - + RMG failure AI-generated, needs review by native speaker; delete this comment afterwards RMG epäonnistui - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] AI-generated, needs review by native speaker; delete this comment afterwards [oletus] diff --git a/mapeditor/translation/french.ts b/mapeditor/translation/french.ts index b91af30db..fb2dc1c19 100644 --- a/mapeditor/translation/french.ts +++ b/mapeditor/translation/french.ts @@ -299,52 +299,61 @@ Vidéo de fin - + Custom AI-generated, needs review by native speaker; delete this comment afterwards Personnalisé - + Infix AI-generated, needs review by native speaker; delete this comment afterwards Infixe - + X - + Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards Position de l’étiquette X - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards Position de l’étiquette Y - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards Moins de scénarios - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards La nouvelle configuration de région prend en charge moins de scénarios qu’auparavant. Certains seront supprimés. Continuer ? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -368,7 +377,7 @@ Supprimer - + New event Nouvel évènement @@ -539,27 +548,27 @@ Personnaliser les sorts - + Level 1 Niveau 1 - + Level 2 Niveau 2 - + Level 3 Niveau 3 - + Level 4 Niveau 4 - + Level 5 Niveau 5 @@ -616,7 +625,7 @@ MainWindow - + VCMI Map Editor Éditeur de carte VCMI @@ -782,8 +791,6 @@ - - View underground Voir le sous-sol @@ -943,9 +950,9 @@ - - - + + + Update appearance Mettre à jour l'apparence @@ -1150,265 +1157,303 @@ Ctrl+Maj+= - + Confirmation Confirmation - + Unsaved changes will be lost, are you sure? Les modifications non sauvegardées seront perdues. Êtes-vous sûr ? - + + Surface + + + + + Underground + Souterrain + + + + Level - %1 + + + + Mods are required AI-generated, needs review by native speaker; delete this comment afterwards Des mods sont requis - + Failed to open map AI-generated, needs review by native speaker; delete this comment afterwards Échec de l’ouverture de la carte - + Open map Ouvrir une carte - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) Toutes les cartes prises en charge (*.vmap *.h3m);;Cartes VCMI (*.vmap);;Cartes HoMM3 (*.h3m) - + Recently Opened Files AI-generated, needs review by native speaker; delete this comment afterwards Fichiers récemment ouverts - + Map validation AI-generated, needs review by native speaker; delete this comment afterwards Validation de la carte - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards La carte comporte des problèmes critiques et ne sera probablement pas jouable. Ouvrez le validateur depuis le menu Carte pour voir les problèmes détectés - + Map has some errors. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards La carte comporte certaines erreurs. Ouvrez le validateur depuis le menu Carte pour voir les problèmes détectés - + Failed to save map AI-generated, needs review by native speaker; delete this comment afterwards Échec de l’enregistrement de la carte - + Save map Enregistrer la carte - + VCMI maps (*.vmap) Cartes VCMI (*.vmap) - + Type Type - + Towns AI-generated, needs review by native speaker; delete this comment afterwards Villes - + Objects AI-generated, needs review by native speaker; delete this comment afterwards Objets - + Heroes Héros - + Artifacts AI-generated, needs review by native speaker; delete this comment afterwards Artefacts - + Resources AI-generated, needs review by native speaker; delete this comment afterwards Ressources - + Banks AI-generated, needs review by native speaker; delete this comment afterwards Banques - + Dwellings AI-generated, needs review by native speaker; delete this comment afterwards Habitations - + Grounds AI-generated, needs review by native speaker; delete this comment afterwards Terrains - + Teleports AI-generated, needs review by native speaker; delete this comment afterwards Téléporteurs - + Mines AI-generated, needs review by native speaker; delete this comment afterwards Mines - + Triggers AI-generated, needs review by native speaker; delete this comment afterwards Déclencheurs - + Monsters AI-generated, needs review by native speaker; delete this comment afterwards Monstres - + Quests AI-generated, needs review by native speaker; delete this comment afterwards Quêtes - + Wog Objects AI-generated, needs review by native speaker; delete this comment afterwards Objets WoG - + Obstacles AI-generated, needs review by native speaker; delete this comment afterwards Obstacles - + Other AI-generated, needs review by native speaker; delete this comment afterwards Autres - + Mods loading problem AI-generated, needs review by native speaker; delete this comment afterwards Problème de chargement des mods - + Critical error during Mods loading. Disable invalid mods and restart. AI-generated, needs review by native speaker; delete this comment afterwards Erreur critique lors du chargement des mods. Désactivez les mods invalides et redémarrez. - - - View surface - Afficher la surface + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + Afficher la surface + + + No objects selected Pas d'objets sélectionnés - + This operation is irreversible. Do you want to continue? Cette opération est irreversible. Voulez-vous continuer ? - + Errors occurred. %1 objects were not updated Erreur rencontrée. %1 objets n'ont pas étés mis à jour - + Save to image Sauvegarder en tant qu'image - + Select maps to convert Sélectionner les cartes à convertir - + HoMM3 maps(*.h3m) Cartes HoMM3(*.h3m) - + Choose directory to save converted maps Sélectionner le dossier ou sauvegarder les cartes converties - + Operation completed Opération terminée - + Successfully converted %1 maps Conversion éffectuée avec succès des %1 cartes - + Failed to convert the map. Abort operation Erreur de conversion de carte. Opération annulée - + Select campaign to convert AI-generated, needs review by native speaker; delete this comment afterwards Sélectionner une campagne à convertir - + HoMM3 campaigns (*.h3c) AI-generated, needs review by native speaker; delete this comment afterwards Campagnes HoMM3 (*.h3c) - + Select destination file AI-generated, needs review by native speaker; delete this comment afterwards Sélectionner le fichier de destination - + VCMI campaigns (*.vcmp) AI-generated, needs review by native speaker; delete this comment afterwards Campagnes VCMI (*.vcmp) @@ -1417,18 +1462,18 @@ MapController - + Hero %1 cannot be created as NEUTRAL. Le héro %1 ne peut pas être créé en tant que NEUTRE. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards Mod requis manquant - + Do you want to do that now ? @@ -1439,7 +1484,7 @@ Do you want to do that now ? Voulez-vous le faire maintenant ? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards Le mod de cet objet est obligatoire pour que la carte reste valide. @@ -1601,6 +1646,139 @@ Voulez-vous le faire maintenant ? Mods de conteniu complete + + ObjectSelector + + + Select Objects + + + + + Objects + Objets + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Autres + + + + All + Tous + + + + None + Aucune + + + + Creature bank + + + + + Bonus + Bonus + + + + Dwelling + + + + + Resource + Ressource + + + + Resource generator + + + + + Spell scroll + Parchemin de sort + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Valeur + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1747,13 +1925,18 @@ Voulez-vous le faire maintenant ? Expert - + Default secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Compétences secondaires par défaut : - + + Random hero secondary skills + + + + Secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Compétences secondaires : @@ -2156,23 +2339,23 @@ Voulez-vous le faire maintenant ? INCLASSABLE - + Can't place object Impossible de placer l'objet - + There can only be one grail object on the map. Il ne peut y avoir qu'un objet Graal sur la carte. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (sous-mod de %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2181,21 +2364,21 @@ Add it to the map's required mods in Map->General settings. Ajoutez-le aux mods requis dans Carte → Paramètres généraux. - + Custom Spells: AI-generated, needs review by native speaker; delete this comment afterwards Sorts personnalisés : - + Default Spells AI-generated, needs review by native speaker; delete this comment afterwards Sorts par défaut - + Default Défaut @@ -2359,7 +2542,7 @@ Ajoutez-le aux mods requis dans Carte → Paramètres généraux. Bâtiments interdits : - + Town Events: AI-generated, needs review by native speaker; delete this comment afterwards Événements de ville : @@ -3374,7 +3557,7 @@ Ajoutez-le aux mods requis dans Carte → Paramètres généraux. TemplateEditor - + VCMI Template Editor @@ -3405,8 +3588,8 @@ Ajoutez-le aux mods requis dans Carte → Paramètres généraux. - - + + Add Ajouter @@ -3443,21 +3626,21 @@ Ajoutez-le aux mods requis dans Carte → Paramètres généraux. - + X - + Y - + Z @@ -3484,14 +3667,14 @@ Ajoutez-le aux mods requis dans Carte → Paramètres généraux. - - + + None Aucune - + Normal Normal @@ -3501,498 +3684,501 @@ Ajoutez-le aux mods requis dans Carte → Paramètres généraux. Îles - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type Type - + Owner Propriétaire - + Zone link - - - + + + Mines Mines - - + + Custom objects - - + + Towns Villes - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Joueur - - - - + + + + Neutral Neutre - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Monstres - + Allowed monsters - + Banned monsters - + Strength - + Objects Objets - + Connections - + Open Ouvrir - + Save Enregistrer - + New Nouveau - + Save as... Enregistrer sous... - + Ctrl+Shift+S Ctrl+Maj+S - + Add zone - + Remove zone - - + + Del Suppr - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Zoom avant - + Ctrl++ Ctrl++ - + Zoom out Zoom arrière - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Remise à zéro du zoom - + Ctrl+Shift+= Ctrl+Maj+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random Aléatoire - + Weak Faible - + Strong Forte - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Confirmation - + Unsaved changes will be lost, are you sure? Les modifications non sauvegardées seront perdues. Êtes-vous sûr ? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Erreur - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Erreur @@ -4198,7 +4384,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 Jour %1 - %2 @@ -4226,16 +4412,69 @@ Guard: %3 Supprimer - + Day %1 - %2 Jour %1 - %2 - + New event Nouvel évènement + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + Type + + + + Value + Valeur + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4370,6 +4609,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4598,12 +4870,12 @@ Guard: %3 Très grande (144x144) - + Random map Carte aléatoire - + Players Joueurs @@ -4638,20 +4910,25 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random Aléatoire - + Human teams Équipes humaines - + Computer teams Équipes d'ordinateur @@ -4668,125 +4945,134 @@ Guard: %3 Taille personnalisée - Underground AI-generated, needs review by native speaker; delete this comment afterwards - Souterrain + Souterrain - + Humans AI-generated, needs review by native speaker; delete this comment afterwards Humains - + Computers AI-generated, needs review by native speaker; delete this comment afterwards Ordinateurs - + Monster strength Force des monstres - + Weak Faible - - + + Normal Normal - + Strong Forte - + Water content Proportion en eau - + None Aucune - + Islands Îles - + Roads Routes - + Dirt AI-generated, needs review by native speaker; delete this comment afterwards Terre - + Gravel AI-generated, needs review by native speaker; delete this comment afterwards Gravier - + Cobblestone AI-generated, needs review by native speaker; delete this comment afterwards Pavés - - + + Template Modèle - + Custom seed Graine personnalisée - + Generate random map Générer une carte aléatoire - + OK OK - + Cancel Annuler - + No template Pas de modèle - + No template for parameters specified. Random map cannot be generated. Pas de modèles pour les paramètres spécifiés. La carte aléatoire ne peut pas être générée. - + RMG failure Echec de RMG - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] AI-generated, needs review by native speaker; delete this comment afterwards [défaut] diff --git a/mapeditor/translation/german.ts b/mapeditor/translation/german.ts index b14b19ecb..86b22f6bb 100644 --- a/mapeditor/translation/german.ts +++ b/mapeditor/translation/german.ts @@ -270,46 +270,55 @@ Outro-Video - + Custom Benutzerdefiniert - + Infix Infix - + X X - + Y Y - + Label Pos X Label Pos X - + Label Pos Y Label Pos Y - + Fewer Scenarios Weniger Szenarien - + New Region setup supports fewer scenarios than before. Some will removed. Continue? Neues Region-Setup unterstützt weniger Szenarien als zuvor. Es werden welche entfernt. Fortfahren? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -333,7 +342,7 @@ Entfernen - + New event Neues Ereignis @@ -500,27 +509,27 @@ Zaubersprüche anpassen - + Level 1 Level 1 - + Level 2 Level 2 - + Level 3 Level 3 - + Level 4 Level 4 - + Level 5 Level 5 @@ -577,7 +586,7 @@ MainWindow - + VCMI Map Editor VCMI-Karteneditor @@ -737,8 +746,6 @@ - - View underground Ansicht Untergrund @@ -885,9 +892,9 @@ - - - + + + Update appearance Aussehen aktualisieren @@ -1079,238 +1086,276 @@ Strg+Umschalt+= - + Confirmation Bestätigung - + Unsaved changes will be lost, are you sure? Ungespeicherte Änderungen gehen verloren, sind sie sicher? - + + Surface + + + + + Underground + Untergrund + + + + Level - %1 + + + + Mods are required Mods sind erforderlich - + Failed to open map Karte konnte nicht geöffnet werden - + Open map Karte öffnen - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) Alle unterstützten Karten (*.vmap *.h3m);;VCMI-Karten (*.vmap);;HoMM3-Karten (*.h3m) - + Recently Opened Files Kürzlich geöffnete Dateien - + Map validation Validierung der Karte - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found Die Karte hat kritische Probleme und wird höchstwahrscheinlich nicht spielbar sein. Öffnen Sie den Validator aus dem Kartenmenü, um die gefundenen Probleme zu sehen - + Map has some errors. Open Validator from the Map menu to see issues found Karte hat einige Fehler. Öffnen Sie den Validator aus dem Kartenmenü, um die gefundenen Probleme zu sehen - + Failed to save map Karte konnte nicht gespeichert werden - + Save map Karte speichern - + VCMI maps (*.vmap) VCMI-Karten (*.vmap) - + Type Typ - + Towns Städte - + Objects Objekte - + Heroes Helden - + Artifacts Artefakte - + Resources Ressourcen - + Banks Bänke - + Dwellings Unterkünfte - + Grounds Gelände - + Teleports Teleporter - + Mines Minen - + Triggers Trigger - + Monsters Monster - + Quests Aufgaben - + Wog Objects Wog Objekte - + Obstacles Hindernisse - + Other Anderes - + Mods loading problem Problem beim Laden von Mods - + Critical error during Mods loading. Disable invalid mods and restart. Kritischer Fehler beim Laden von Mods. Deaktivieren Sie ungültige Mods und starten Sie neu. - - - View surface - Oberfläche anzeigen + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + Oberfläche anzeigen + + + No objects selected Keine Objekte selektiert - + This operation is irreversible. Do you want to continue? Diese Operation ist unumkehrbar. Möchten sie fortsetzen? - + Errors occurred. %1 objects were not updated Fehler sind aufgetreten. %1 Objekte konnten nicht aktualisiert werden - + Save to image Als Bild speichern - + Select maps to convert Zu konvertierende Karten auswählen - + HoMM3 maps(*.h3m) HoMM3-Karten (*.h3m) - + Choose directory to save converted maps Verzeichnis zum Speichern der konvertierten Karten wählen - + Operation completed Vorgang abgeschlossen - + Successfully converted %1 maps Erfolgreiche Konvertierung von %1 Karten - + Failed to convert the map. Abort operation Die Karte konnte nicht konvertiert werden. Vorgang abgebrochen - + Select campaign to convert Kampagne zur Konvertierung auswählen - + HoMM3 campaigns (*.h3c) HoMM3-Kampagnen (*.h3c) - + Select destination file Zieldatei auswählen - + VCMI campaigns (*.vcmp) VCMI-Kampagnen (*.vcmp) @@ -1318,17 +1363,17 @@ MapController - + Hero %1 cannot be created as NEUTRAL. Held %1 kann nicht als NEUTRAL erstellt werden. - + Missing Required Mod Erforderliche Mod fehlt - + Do you want to do that now ? @@ -1337,7 +1382,7 @@ Do you want to do that now ? Möchten Sie das jetzt tun? - + This object's mod is mandatory for map to remain valid. Die Mod dieses Objekts ist erforderlich, damit die Karte gültig bleibt. @@ -1498,6 +1543,139 @@ Möchten Sie das jetzt tun? Vollwertige Mods + + ObjectSelector + + + Select Objects + + + + + Objects + Objekte + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + Aktion + + + + Other + Anderes + + + + All + Alle + + + + None + Keine + + + + Creature bank + + + + + Bonus + Bonus + + + + Dwelling + + + + + Resource + Ressource + + + + Resource generator + + + + + Spell scroll + Zauberrolle + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + Entfernen + + + + + Object + + + + + Value + Wert + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1639,12 +1817,17 @@ Möchten Sie das jetzt tun? Experte - + Default secondary skills: Standard-Sekundärfähigkeiten: - + + Random hero secondary skills + + + + Secondary skills: Sekundärfähigkeiten: @@ -2001,22 +2184,22 @@ Möchten Sie das jetzt tun? UNFLAGGBAR - + Can't place object Objekt kann nicht platziert werden - + There can only be one grail object on the map. Es kann sich nur ein Gral auf der Karte befinden. - + (submod of %1) (Submodul von %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2024,19 +2207,19 @@ Add it to the map's required mods in Map->General settings. Fügen Sie sie zu den erforderlichen Mods unter Karte → Allgemeine Einstellungen hinzu. - + Custom Spells: Benutzerdefinierte Zaubersprüche: - + Default Spells Standard-Zaubersprüche - + Default Standard @@ -2175,7 +2358,7 @@ Fügen Sie sie zu den erforderlichen Mods unter Karte → Allgemeine Einstellung Verbotene Gebäude: - + Town Events: Stadt-Ereignisse: @@ -3113,7 +3296,7 @@ Fügen Sie sie zu den erforderlichen Mods unter Karte → Allgemeine Einstellung TemplateEditor - + VCMI Template Editor VCMI Template-Editor @@ -3144,8 +3327,8 @@ Fügen Sie sie zu den erforderlichen Mods unter Karte → Allgemeine Einstellung - - + + Add Hinzufügen @@ -3182,21 +3365,21 @@ Fügen Sie sie zu den erforderlichen Mods unter Karte → Allgemeine Einstellung - + X X - + Y Y - + Z Z @@ -3223,14 +3406,14 @@ Fügen Sie sie zu den erforderlichen Mods unter Karte → Allgemeine Einstellung - - + + None Keine - + Normal Normal @@ -3240,406 +3423,431 @@ Fügen Sie sie zu den erforderlichen Mods unter Karte → Allgemeine Einstellung Inseln - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone Zone - + Visualisation Visualisierung - + Position Position - - + + Size Größe - + ID ID - - + + Type Typ - + Owner Besitzer - + Zone link Zonen-Verknüpfung - - - + + + Mines Minen - - + + Custom objects Benutzerdefinierte Objekte - - + + Towns Städte - - + + Terrain Terrain - - - - + + + + Treasure Schatz - + Town info Stadtinfo - + Town count Stadtanzahl - - - - + + + + Player Spieler - - - - + + + + Neutral Neutral - + Castle count Schlossanzahl - + Town density Stadtdichte - + Castle density Schlossdichte - + Match terrain to town Terrain der Stadt anpassen - + Terrain types Terraintypen - + Banned terrain types Verbotene Terraintypen - + Towns are same type Städte sind vom gleichen Typ - + Allowed towns Erlaubte Städte - + Banned towns Verbotene Städte - + Town hints Stadt-Hinweise - + Monsters Monster - + Allowed monsters Erlaubte Monster - + Banned monsters Verbotene Monster - + Strength Stärke - + Objects Objekte - + Connections Verbindungen - + Open Öffnen - + Save Speichern - + New Neu - + Save as... Speichern unter... - + Ctrl+Shift+S Strg+Shift+S - + Add zone Zone hinzufügen - + Remove zone Zone entfernen - - + + Del Entf - + Auto position Auto-Positionierung - + Ctrl+P Strg+P - + Zoom in Heranzoomen - + Ctrl++ Strg++ - + Zoom out Herauszoomen - + Ctrl+- Strg+- - + Zoom auto Autozoom - + Ctrl+Shift+: Strg+Shift+: - + Zoom reset Zoom zurücksetzen - + Ctrl+Shift+= Strg+Umschalt+= - + Min Min - + Max Max - + Action Aktion - - + + Delete Entfernen - + ID: %1 ID: %1 - + Max treasure: %1 Max Schatz: %1 - + Player start Spieler-Start - + CPU start CPU-Start - + Junction Kreuzung - + Water Wasser - + Sealed Versiegelt - - + + Random Zufall - + Weak Schwach - + Strong Stark - + Zone A Zone A - + Zone B Zone B - + Guard Wächter - + Road Straße - + Guarded Bewacht - + Fictive Fiktiv - + Repulsive Abstoßend - + Wide Weit - + Force portal Portal erzwingen - + Yes Ja - + No Nein - + Zone A: %1 Zone B: %2 Guard: %3 @@ -3648,92 +3856,85 @@ Zone B: %2 Wächter: %3 - + Confirmation Bestätigung - + Unsaved changes will be lost, are you sure? Nicht gespeicherte Änderungen gehen verloren, seid Ihr sicher? - + Open template Template öffnen - + VCMI templates(*.json) VCMI-Templates(*.json) - + Save template Template speichern - + VCMI templates (*.json) VCMI-Templates (*.json) - - + + Enter Name Namen eingeben - - + + Name: Name: - + Already existing! Bereits vorhanden! - + A template with this name is already existing. Ein Template mit diesem Namen ist bereits vorhanden. - + To few templates! Zu wenig Templates! - + At least one template should remain after removing. Nach dem Entfernen sollte mindestens ein Template übrig bleiben. - - Error - Fehler + Fehler - - Not implemented yet! - Noch nicht implementiert! + Noch nicht implementiert! TerrainSelector - - Select Terrains - Terrain auswählen + Terrain auswählen - Terrain Selector - Terrain-Wähler + Terrain-Wähler @@ -3938,7 +4139,7 @@ Wächter: %3 TownEventsDelegate - + Day %1 - %2 Tag %1 - %2 @@ -3966,16 +4167,69 @@ Wächter: %3 Entfernen - + Day %1 - %2 Tag %1 - %2 - + New event Neues Ereignis + + TownHintSelector + + + Select Town hints + + + + + Town hints + Stadt-Hinweise + + + + Town hint Selector + + + + + Type + Typ + + + + Value + Wert + + + + Action + Aktion + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + Entfernen + + TownSpellsWidget @@ -4109,6 +4363,39 @@ Wächter: %3 Action Aktion + + + Delete + Entfernen + + + + Ts + + + Terrain Selector + Terrain-Wähler + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4334,12 +4621,12 @@ Wächter: %3 XL (144x144) - + Random map Zufallsgenerierte Karte - + Players Spieler @@ -4374,20 +4661,25 @@ Wächter: %3 G (252x252) - - - - + + Levels + + + + + + + Random Zufall - + Human teams Menschliche Teams - + Computer teams Computer Teams @@ -4402,119 +4694,128 @@ Wächter: %3 Benutzerdefinierte Größe - Underground - Untergrund + Untergrund - + Humans Menschen - + Computers Computer - + Monster strength Monster-Stärke - + Weak Schwach - - + + Normal Normal - + Strong Stark - + Water content Wasseranteil - + None Keine - + Islands Inseln - + Roads Straßen - + Dirt Erde - + Gravel Kies - + Cobblestone Kopfsteinpflaster - - + + Template Vorlage - + Custom seed Benutzerdefiniertes Seed - + Generate random map Zufällige Karte generieren - + OK OK - + Cancel Abbrechen - + No template Kein Template - + No template for parameters specified. Random map cannot be generated. Es wurde kein Template für Parameter erstellt. Zufällige Karte kann nicht generiert werden. - + RMG failure RMG-Fehler - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] [Standard] diff --git a/mapeditor/translation/greek.ts b/mapeditor/translation/greek.ts index e80b8e28b..11f98b58f 100644 --- a/mapeditor/translation/greek.ts +++ b/mapeditor/translation/greek.ts @@ -320,52 +320,61 @@ Τελικό βίντεο - + Custom AI-generated, needs review by native speaker; delete this comment afterwards Προσαρμοσμένο - + Infix AI-generated, needs review by native speaker; delete this comment afterwards Ενδιάμεσο - + X - + Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards Θέση ετικέτας Χ - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards Θέση ετικέτας Υ - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards Λιγότερα σενάρια - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards Η νέα ρύθμιση περιοχής υποστηρίζει λιγότερα σενάρια από πριν. Μερικά θα αφαιρεθούν. Συνέχεια; + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -393,7 +402,7 @@ Αφαίρεση - + New event AI-generated, needs review by native speaker; delete this comment afterwards Νέο γεγονός @@ -585,31 +594,31 @@ Προσαρμογή ξορκιών - + Level 1 AI-generated, needs review by native speaker; delete this comment afterwards Επίπεδο 1 - + Level 2 AI-generated, needs review by native speaker; delete this comment afterwards Επίπεδο 2 - + Level 3 AI-generated, needs review by native speaker; delete this comment afterwards Επίπεδο 3 - + Level 4 AI-generated, needs review by native speaker; delete this comment afterwards Επίπεδο 4 - + Level 5 AI-generated, needs review by native speaker; delete this comment afterwards Επίπεδο 5 @@ -676,7 +685,7 @@ MainWindow - + VCMI Map Editor Επεξεργαστής χάρτη VCMI @@ -865,8 +874,6 @@ - - View underground AI-generated, needs review by native speaker; delete this comment afterwards Προβολή υπόγειου @@ -1042,9 +1049,9 @@ - - - + + + Update appearance AI-generated, needs review by native speaker; delete this comment afterwards Ενημέρωση εμφάνισης @@ -1274,284 +1281,322 @@ Ctrl+Maj+= - + Confirmation AI-generated, needs review by native speaker; delete this comment afterwards Επιβεβαίωση - + Unsaved changes will be lost, are you sure? AI-generated, needs review by native speaker; delete this comment afterwards Οι μη αποθηκευμένες αλλαγές θα χαθούν, είστε βέβαιοι; - + + Surface + + + + + Underground + Υπόγειο + + + + Level - %1 + + + + Mods are required AI-generated, needs review by native speaker; delete this comment afterwards Απαιτούνται mods - + Failed to open map AI-generated, needs review by native speaker; delete this comment afterwards Αποτυχία ανοίγματος χάρτη - + Open map AI-generated, needs review by native speaker; delete this comment afterwards Άνοιγμα χάρτη - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards Όλοι οι υποστηριζόμενοι χάρτες (*.vmap *.h3m);;Χάρτες VCMI(*.vmap);;Χάρτες HoMM3(*.h3m) - + Recently Opened Files AI-generated, needs review by native speaker; delete this comment afterwards Πρόσφατα Ανοιγμένα Αρχεία - + Map validation AI-generated, needs review by native speaker; delete this comment afterwards Επικύρωση χάρτη - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Ο χάρτης έχει κρίσιμα προβλήματα και πιθανότατα δεν θα είναι αναπαίξιμος. Ανοίξτε τον Επικυρωτή από το μενού Χάρτης για να δείτε τα προβλήματα - + Map has some errors. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Ο χάρτης έχει κάποια σφάλματα. Ανοίξτε τον Επικυρωτή από το μενού Χάρτης για να δείτε τα προβλήματα - + Failed to save map AI-generated, needs review by native speaker; delete this comment afterwards Αποτυχία αποθήκευσης χάρτη - + Save map AI-generated, needs review by native speaker; delete this comment afterwards Αποθήκευση χάρτη - + VCMI maps (*.vmap) AI-generated, needs review by native speaker; delete this comment afterwards Χάρτες VCMI (*.vmap) - + Type AI-generated, needs review by native speaker; delete this comment afterwards Τύπος - + Towns AI-generated, needs review by native speaker; delete this comment afterwards Πόλεις - + Objects AI-generated, needs review by native speaker; delete this comment afterwards Αντικείμενα - + Heroes AI-generated, needs review by native speaker; delete this comment afterwards Ήρωες - + Artifacts AI-generated, needs review by native speaker; delete this comment afterwards Τεχνουργήματα - + Resources AI-generated, needs review by native speaker; delete this comment afterwards Πόροι - + Banks AI-generated, needs review by native speaker; delete this comment afterwards Τράπεζες - + Dwellings AI-generated, needs review by native speaker; delete this comment afterwards Κατοικίες - + Grounds AI-generated, needs review by native speaker; delete this comment afterwards Εδάφη - + Teleports AI-generated, needs review by native speaker; delete this comment afterwards Τηλεμεταφορές - + Mines AI-generated, needs review by native speaker; delete this comment afterwards Ορυχεία - + Triggers AI-generated, needs review by native speaker; delete this comment afterwards Ενεργοποιητές - + Monsters AI-generated, needs review by native speaker; delete this comment afterwards Τέρατα - + Quests AI-generated, needs review by native speaker; delete this comment afterwards Αποστολές - + Wog Objects AI-generated, needs review by native speaker; delete this comment afterwards Αντικείμενα Wog - + Obstacles AI-generated, needs review by native speaker; delete this comment afterwards Εμπόδια - + Other AI-generated, needs review by native speaker; delete this comment afterwards Άλλα - + Mods loading problem AI-generated, needs review by native speaker; delete this comment afterwards Πρόβλημα φόρτωσης Mods - + Critical error during Mods loading. Disable invalid mods and restart. AI-generated, needs review by native speaker; delete this comment afterwards Κρίσιμο σφάλμα κατά τη φόρτωση των Mods. Απενεργοποιήστε τα άκυρα mods και επανεκκινήστε. - - - View surface - AI-generated, needs review by native speaker; delete this comment afterwards - Προβολή επιφάνειας + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + AI-generated, needs review by native speaker; delete this comment afterwards + Προβολή επιφάνειας + + + No objects selected AI-generated, needs review by native speaker; delete this comment afterwards Δεν επιλέχθηκαν αντικείμενα - + This operation is irreversible. Do you want to continue? AI-generated, needs review by native speaker; delete this comment afterwards Αυτή η ενέργεια είναι μη αναστρέψιμη. Θέλετε να συνεχίσετε; - + Errors occurred. %1 objects were not updated AI-generated, needs review by native speaker; delete this comment afterwards Παρουσιάστηκαν σφάλματα. %1 αντικείμενα δεν ενημερώθηκαν - + Save to image AI-generated, needs review by native speaker; delete this comment afterwards Αποθήκευση ως εικόνα - + Select maps to convert AI-generated, needs review by native speaker; delete this comment afterwards Επιλέξτε χάρτες για μετατροπή - + HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards Χάρτες HoMM3(*.h3m) - + Choose directory to save converted maps AI-generated, needs review by native speaker; delete this comment afterwards Επιλέξτε κατάλογο για αποθήκευση μετατρεπόμενων χαρτών - + Operation completed AI-generated, needs review by native speaker; delete this comment afterwards Η λειτουργία ολοκληρώθηκε - + Successfully converted %1 maps AI-generated, needs review by native speaker; delete this comment afterwards Μετατράπηκαν επιτυχώς %1 χάρτες - + Failed to convert the map. Abort operation AI-generated, needs review by native speaker; delete this comment afterwards Αποτυχία μετατροπής του χάρτη. Διακοπή λειτουργίας - + Select campaign to convert AI-generated, needs review by native speaker; delete this comment afterwards Επιλέξτε καμπάνια για μετατροπή - + HoMM3 campaigns (*.h3c) AI-generated, needs review by native speaker; delete this comment afterwards Καμπάνιες HoMM3 (*.h3c) - + Select destination file AI-generated, needs review by native speaker; delete this comment afterwards Επιλέξτε αρχείο προορισμού - + VCMI campaigns (*.vcmp) AI-generated, needs review by native speaker; delete this comment afterwards Καμπάνιες VCMI (*.vcmp) @@ -1560,19 +1605,19 @@ MapController - + Hero %1 cannot be created as NEUTRAL. AI-generated, needs review by native speaker; delete this comment afterwards Ο Ήρωας %1 δεν μπορεί να δημιουργηθεί ως ΟΥΔΕΤΕΡΟΣ. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards Λείπει απαιτούμενο Mod - + Do you want to do that now ? @@ -1583,7 +1628,7 @@ Do you want to do that now ? Θέλετε να το κάνετε τώρα ; - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards Το mod αυτού του αντικειμένου είναι υποχρεωτικό για να παραμείνει ο χάρτης έγκυρος. @@ -1769,6 +1814,139 @@ Do you want to do that now ? Mods με πλήρες περιεχόμενο + + ObjectSelector + + + Select Objects + + + + + Objects + Αντικείμενα + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Άλλα + + + + All + Όλα + + + + None + + + + + Creature bank + + + + + Bonus + Μπόνους + + + + Dwelling + + + + + Resource + Πόρος + + + + Resource generator + + + + + Spell scroll + Κύλινδρος ξορκιού + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Τιμή + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1929,13 +2107,18 @@ Do you want to do that now ? Ειδικός - + Default secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Προεπιλεγμένες δευτερεύουσες ικανότητες: - + + Random hero secondary skills + + + + Secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Δευτερεύουσες ικανότητες: @@ -2352,25 +2535,25 @@ Do you want to do that now ? ΧΩΡΙΣ ΣΗΜΑΙΑ - + Can't place object AI-generated, needs review by native speaker; delete this comment afterwards Αδυναμία τοποθέτησης αντικειμένου - + There can only be one grail object on the map. AI-generated, needs review by native speaker; delete this comment afterwards Μπορεί να υπάρχει μόνο ένα αντικείμενο Γκράαλ στον χάρτη. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (υπο-τροποποίηση του %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2379,21 +2562,21 @@ Add it to the map's required mods in Map->General settings. Προσθέστε την στις απαιτούμενες τροποποιήσεις του χάρτη στις Γενικές ρυθμίσεις. - + Custom Spells: AI-generated, needs review by native speaker; delete this comment afterwards Προσαρμοσμένα Ξόρκια: - + Default Spells AI-generated, needs review by native speaker; delete this comment afterwards Προεπιλεγμένα Ξόρκια - + Default AI-generated, needs review by native speaker; delete this comment afterwards Προεπιλογή @@ -2558,7 +2741,7 @@ Add it to the map's required mods in Map->General settings. Απαγορευμένα κτίρια: - + Town Events: AI-generated, needs review by native speaker; delete this comment afterwards Γεγονότα πόλης: @@ -3665,7 +3848,7 @@ Add it to the map's required mods in Map->General settings. TemplateEditor - + VCMI Template Editor @@ -3696,8 +3879,8 @@ Add it to the map's required mods in Map->General settings. - - + + Add Προσθήκη @@ -3734,21 +3917,21 @@ Add it to the map's required mods in Map->General settings. - + X - + Y - + Z @@ -3775,14 +3958,14 @@ Add it to the map's required mods in Map->General settings. - - + + None - + Normal Κανονική @@ -3792,498 +3975,501 @@ Add it to the map's required mods in Map->General settings. Νησιά - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type Τύπος - + Owner Ιδιοκτήτης - + Zone link - - - + + + Mines Ορυχεία - - + + Custom objects - - + + Towns Πόλεις - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Παίκτης - - - - + + + + Neutral Ουδέτερος - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Τέρατα - + Allowed monsters - + Banned monsters - + Strength - + Objects Αντικείμενα - + Connections - + Open Άνοιγμα - + Save Αποθήκευση - + New Νέο - + Save as... Αποθήκευση ως... - + Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Μεγέθυνση - + Ctrl++ Ctrl++ - + Zoom out Σμίκρυνση - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Επαναφορά ζουμ - + Ctrl+Shift+= Ctrl+Maj+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random - + Weak Αδύναμη - + Strong Δυνατή - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Επιβεβαίωση - + Unsaved changes will be lost, are you sure? Οι μη αποθηκευμένες αλλαγές θα χαθούν, είστε βέβαιοι; - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Σφάλμα - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Σφάλμα @@ -4526,7 +4712,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Ημέρα %1 - %2 @@ -4559,18 +4745,71 @@ Guard: %3 Αφαίρεση - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Ημέρα %1 - %2 - + New event AI-generated, needs review by native speaker; delete this comment afterwards Νέο γεγονός + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + Τύπος + + + + Value + Τιμή + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4721,6 +4960,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4989,13 +5261,13 @@ Guard: %3 XL (144x144) - + Random map AI-generated, needs review by native speaker; delete this comment afterwards Τυχαίος χάρτης - + Players AI-generated, needs review by native speaker; delete this comment afterwards Παίκτες @@ -5037,22 +5309,27 @@ Guard: %3 Γ (252x252) - - - - + + Levels + + + + + + + Random AI-generated, needs review by native speaker; delete this comment afterwards Τυχαίο - + Human teams AI-generated, needs review by native speaker; delete this comment afterwards Ομάδες ανθρώπων - + Computer teams AI-generated, needs review by native speaker; delete this comment afterwards Ομάδες υπολογιστή @@ -5070,141 +5347,150 @@ Guard: %3 Προσαρμοσμένο μέγεθος - Underground AI-generated, needs review by native speaker; delete this comment afterwards - Υπόγειο + Υπόγειο - + Humans AI-generated, needs review by native speaker; delete this comment afterwards Άνθρωποι - + Computers AI-generated, needs review by native speaker; delete this comment afterwards Υπολογιστές - + Monster strength AI-generated, needs review by native speaker; delete this comment afterwards Ισχύς τεράτων - + Weak AI-generated, needs review by native speaker; delete this comment afterwards Αδύναμη - - + + Normal AI-generated, needs review by native speaker; delete this comment afterwards Κανονική - + Strong AI-generated, needs review by native speaker; delete this comment afterwards Δυνατή - + Water content AI-generated, needs review by native speaker; delete this comment afterwards Ποσότητα νερού - + None AI-generated, needs review by native speaker; delete this comment afterwards Καθόλου - + Islands AI-generated, needs review by native speaker; delete this comment afterwards Νησιά - + Roads AI-generated, needs review by native speaker; delete this comment afterwards Δρόμοι - + Dirt AI-generated, needs review by native speaker; delete this comment afterwards Χώμα - + Gravel AI-generated, needs review by native speaker; delete this comment afterwards Χαλίκι - + Cobblestone AI-generated, needs review by native speaker; delete this comment afterwards Λιθόστρωτο - - + + Template AI-generated, needs review by native speaker; delete this comment afterwards Πρότυπο - + Custom seed AI-generated, needs review by native speaker; delete this comment afterwards Προσαρμοσμένος σπόρος - + Generate random map AI-generated, needs review by native speaker; delete this comment afterwards Δημιουργία τυχαίου χάρτη - + OK AI-generated, needs review by native speaker; delete this comment afterwards OK - + Cancel AI-generated, needs review by native speaker; delete this comment afterwards Ακύρωση - + No template AI-generated, needs review by native speaker; delete this comment afterwards Χωρίς πρότυπο - + No template for parameters specified. Random map cannot be generated. AI-generated, needs review by native speaker; delete this comment afterwards Δεν υπάρχει πρότυπο για τις καθορισμένες παραμέτρους. Δεν μπορεί να δημιουργηθεί τυχαίος χάρτης. - + RMG failure AI-generated, needs review by native speaker; delete this comment afterwards Αποτυχία RMG - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] AI-generated, needs review by native speaker; delete this comment afterwards [προεπιλογή] diff --git a/mapeditor/translation/hungarian.ts b/mapeditor/translation/hungarian.ts index 577eac67b..b695975ee 100644 --- a/mapeditor/translation/hungarian.ts +++ b/mapeditor/translation/hungarian.ts @@ -296,52 +296,61 @@ Záró videó - + Custom AI-generated, needs review by native speaker; delete this comment afterwards Egyéni - + Infix AI-generated, needs review by native speaker; delete this comment afterwards Köztag - + X - + Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards Címke X pozíció - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards Címke Y pozíció - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards Kevesebb szintró - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards Az új régióbeállítás kevesebb szintrót támogat, mint korábban. Néhány törlésre kerül. Folytatja? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -365,7 +374,7 @@ Eltávolítás - + New event Új esemény @@ -532,27 +541,27 @@ Varázslatok testreszabása - + Level 1 1. szint - + Level 2 2. szint - + Level 3 3. szint - + Level 4 4. szint - + Level 5 5. szint @@ -609,7 +618,7 @@ MainWindow - + VCMI Map Editor VCMI térképszerkesztő @@ -773,8 +782,6 @@ - - View underground Földalatti nézet @@ -934,9 +941,9 @@ - - - + + + Update appearance Megjelenés frissítése @@ -1140,238 +1147,276 @@ Ctrl+Shift+= - + Confirmation Megerősítés - + Unsaved changes will be lost, are you sure? Nem mentett változások el fognak veszni, biztos benne? - + + Surface + + + + + Underground + Földalatti + + + + Level - %1 + + + + Mods are required Modok szükségesek - + Failed to open map Nem sikerült a térkép megnyitása - + Open map Térkép megnyitása - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) Minden támogatott térkép (*.vmap *.h3m);;VCMI térképek (*.vmap);;HoMM3 térképek (*.h3m) - + Recently Opened Files Legutóbb megnyitott fájlok - + Map validation Térkép érvényesítése - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found A térképen kritikus hibák vannak, és valószínűleg nem játszható. Nyissa meg az Ellenőrzőt a Térkép menüből, hogy megnézze a hibákat - + Map has some errors. Open Validator from the Map menu to see issues found A térképen hibák vannak. Nyissa meg az Ellenőrzőt a Térkép menüből, hogy megnézze a hibákat - + Failed to save map Nem sikerült a térkép mentése - + Save map Térkép mentése - + VCMI maps (*.vmap) VCMI térképek (*.vmap) - + Type Típus - + Towns Városok - + Objects Objektumok - + Heroes Hősök - + Artifacts Tárgyak - + Resources Erőforrások - + Banks Bankok - + Dwellings Lakhelyek - + Grounds Talajok - + Teleports Teleportok - + Mines Bányák - + Triggers Indítók - + Monsters Szörnyek - + Quests Küldetések - + Wog Objects Wog Objektumok - + Obstacles Akadályok - + Other Egyéb - + Mods loading problem Mod betöltési probléma - + Critical error during Mods loading. Disable invalid mods and restart. Kritikus hiba történt a Modok betöltése során. Tiltsa le az érvénytelen modokat és indítsa újra. - - - View surface - Felszín megtekintése + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + Felszín megtekintése + + + No objects selected Nincs kiválasztott objektum - + This operation is irreversible. Do you want to continue? Ez a művelet visszafordíthatatlan. Folytatja? - + Errors occurred. %1 objects were not updated Hibák történtek. %1 objektum nem lett frissítve - + Save to image Mentés képként - + Select maps to convert Térképek kiválasztása konvertáláshoz - + HoMM3 maps(*.h3m) HoMM3 térképek (*.h3m) - + Choose directory to save converted maps Könyvtár kiválasztása a konvertált térképek mentéséhez - + Operation completed Művelet befejezve - + Successfully converted %1 maps Sikeresen konvertálva: %1 térkép - + Failed to convert the map. Abort operation Nem sikerült a térkép konvertálása. Művelet megszakítva - + Select campaign to convert Kampány kiválasztása konvertáláshoz - + HoMM3 campaigns (*.h3c) HoMM3 kampányok (*.h3c) - + Select destination file Célfájl kiválasztása - + VCMI campaigns (*.vcmp) VCMI kampányok (*.vcmp) @@ -1379,18 +1424,18 @@ MapController - + Hero %1 cannot be created as NEUTRAL. A(z) %1 hős nem hozható létre SEMLEGESKÉNT. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards Hiányzó szükséges mod - + Do you want to do that now ? @@ -1401,7 +1446,7 @@ Do you want to do that now ? Szeretnéd ezt most megtenni? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards Ennek az objektumnak a modja kötelező ahhoz, hogy a térkép érvényes maradjon. @@ -1563,6 +1608,139 @@ Szeretnéd ezt most megtenni? Teljes tartalom modok + + ObjectSelector + + + Select Objects + + + + + Objects + Objektumok + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Egyéb + + + + All + Összes + + + + None + Nincs + + + + Creature bank + + + + + Bonus + Bónusz + + + + Dwelling + + + + + Resource + Erőforrás + + + + Resource generator + + + + + Spell scroll + Varázstekercs + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Érték + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1708,12 +1886,17 @@ Szeretnéd ezt most megtenni? Szakértő - + Default secondary skills: Alapértelmezett másodlagos képességek: - + + Random hero secondary skills + + + + Secondary skills: Másodlagos képességek: @@ -2069,23 +2252,23 @@ Szeretnéd ezt most megtenni? NEM ZÁSZLÓZHATÓ - + Can't place object Nem lehet objektumot elhelyezni - + There can only be one grail object on the map. Csak egy Szent Grál objektum lehet a térképen. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (%1 almodulja) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2094,19 +2277,19 @@ Add it to the map's required mods in Map->General settings. Add hozzá a térkép kötelező moduljaihoz a Térkép → Általános beállításokban. - + Custom Spells: Egyéni varázslatok: - + Default Spells Alapértelmezett varázslatok - + Default Alapértelmezett @@ -2245,7 +2428,7 @@ Add hozzá a térkép kötelező moduljaihoz a Térkép → Általános beállí Tiltott épületek: - + Town Events: Városi események: @@ -3251,7 +3434,7 @@ Add hozzá a térkép kötelező moduljaihoz a Térkép → Általános beállí TemplateEditor - + VCMI Template Editor @@ -3282,8 +3465,8 @@ Add hozzá a térkép kötelező moduljaihoz a Térkép → Általános beállí - - + + Add Hozzáadás @@ -3320,21 +3503,21 @@ Add hozzá a térkép kötelező moduljaihoz a Térkép → Általános beállí - + X - + Y - + Z @@ -3361,14 +3544,14 @@ Add hozzá a térkép kötelező moduljaihoz a Térkép → Általános beállí - - + + None Nincs - + Normal Normál @@ -3378,498 +3561,501 @@ Add hozzá a térkép kötelező moduljaihoz a Térkép → Általános beállí Szigetek - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type Típus - + Owner Tulajdonos - + Zone link - - - + + + Mines Bányák - - + + Custom objects - - + + Towns Városok - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Játékos - - - - + + + + Neutral Semleges - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Szörnyek - + Allowed monsters - + Banned monsters - + Strength - + Objects Objektumok - + Connections - + Open Megnyitás - + Save Mentés - + New Új - + Save as... Mentés másként... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Nagyítás - + Ctrl++ Ctrl++ - + Zoom out Kicsinyítés - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Nagyítás alaphelyzetbe - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random Véletlen - + Weak Gyenge - + Strong Erős - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Megerősítés - + Unsaved changes will be lost, are you sure? Nem mentett változások el fognak veszni, biztos benne? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Hiba - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Hiba @@ -4074,7 +4260,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 Nap %1 - %2 @@ -4102,16 +4288,69 @@ Guard: %3 Eltávolítás - + Day %1 - %2 Nap %1 - %2 - + New event Új esemény + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + Típus + + + + Value + Érték + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4245,6 +4484,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4472,12 +4744,12 @@ Guard: %3 XL (144x144) - + Random map Véletlen térkép - + Players Játékosok @@ -4512,20 +4784,25 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random Véletlen - + Human teams Emberi csapatok - + Computer teams Számítógépes csapatok @@ -4540,119 +4817,128 @@ Guard: %3 Egyedi méret - Underground - Földalatti + Földalatti - + Humans Emberek - + Computers Számítógépek - + Monster strength Szörnyek ereje - + Weak Gyenge - - + + Normal Normál - + Strong Erős - + Water content Víz tartalom - + None Nincs - + Islands Szigetek - + Roads Utak - + Dirt Föld - + Gravel Kavics - + Cobblestone Macskakő - - + + Template Sablon - + Custom seed Egyedi mag - + Generate random map Véletlen térkép generálása - + OK OK - + Cancel Mégse - + No template Nincs sablon - + No template for parameters specified. Random map cannot be generated. Nincs sablon a megadott paraméterekhez. Véletlen térkép nem generálható. - + RMG failure Véletlen térkép generálási hiba - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] [alapértelmezett] diff --git a/mapeditor/translation/italian.ts b/mapeditor/translation/italian.ts index 4a054b769..bf0863ffb 100644 --- a/mapeditor/translation/italian.ts +++ b/mapeditor/translation/italian.ts @@ -296,52 +296,61 @@ Video finale - + Custom AI-generated, needs review by native speaker; delete this comment afterwards Personalizzato - + Infix AI-generated, needs review by native speaker; delete this comment afterwards Intersuffisso - + X - + Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards Posizione etichetta X - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards Posizione etichetta Y - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards Meno scenari - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards La nuova configurazione della regione supporta meno scenari di prima. Alcuni verranno rimossi. Continuare? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -365,7 +374,7 @@ Rimuovi - + New event Nuovo evento @@ -532,27 +541,27 @@ Personalizza incantesimi - + Level 1 Livello 1 - + Level 2 Livello 2 - + Level 3 Livello 3 - + Level 4 Livello 4 - + Level 5 Livello 5 @@ -609,7 +618,7 @@ MainWindow - + VCMI Map Editor Editor di mappe VCMI @@ -773,8 +782,6 @@ - - View underground Visualizza sottosuolo @@ -934,9 +941,9 @@ - - - + + + Update appearance Aggiorna aspetto @@ -1140,238 +1147,276 @@ Ctrl+Shift+= - + Confirmation Conferma - + Unsaved changes will be lost, are you sure? Le modifiche non salvate andranno perse, sei sicuro? - + + Surface + + + + + Underground + Sotterraneo + + + + Level - %1 + + + + Mods are required Mod richiesti - + Failed to open map Impossibile aprire la mappa - + Open map Apri mappa - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) Tutte le mappe supportate (*.vmap *.h3m);;Mappe VCMI(*.vmap);;Mappe HoMM3(*.h3m) - + Recently Opened Files File recenti - + Map validation Validazione mappa - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found La mappa ha problemi critici e probabilmente non sarà giocabile. Apri il Validatore dal menu Mappa per vedere i problemi rilevati - + Map has some errors. Open Validator from the Map menu to see issues found La mappa ha alcuni errori. Apri il Validatore dal menu Mappa per vedere i problemi rilevati - + Failed to save map Salvataggio della mappa fallito - + Save map Salva mappa - + VCMI maps (*.vmap) Mappe VCMI (*.vmap) - + Type Tipo - + Towns Città - + Objects Oggetti - + Heroes Eroi - + Artifacts Artefatti - + Resources Risorse - + Banks Banche - + Dwellings Dimore - + Grounds Terreni - + Teleports Teletrasporti - + Mines Miniere - + Triggers Trigger - + Monsters Mostri - + Quests Missioni - + Wog Objects Oggetti Wog - + Obstacles Ostacoli - + Other Altro - + Mods loading problem Problema nel caricamento dei mod - + Critical error during Mods loading. Disable invalid mods and restart. Errore critico durante il caricamento dei mod. Disabilita i mod non validi e riavvia. - - - View surface - Visualizza superficie + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + Visualizza superficie + + + No objects selected Nessun oggetto selezionato - + This operation is irreversible. Do you want to continue? Questa operazione è irreversibile. Vuoi continuare? - + Errors occurred. %1 objects were not updated Si sono verificati errori. %1 oggetti non sono stati aggiornati - + Save to image Salva come immagine - + Select maps to convert Seleziona mappe da convertire - + HoMM3 maps(*.h3m) Mappe HoMM3(*.h3m) - + Choose directory to save converted maps Scegli la directory per salvare le mappe convertite - + Operation completed Operazione completata - + Successfully converted %1 maps Convertite con successo %1 mappe - + Failed to convert the map. Abort operation Impossibile convertire la mappa. Operazione annullata - + Select campaign to convert Seleziona la campagna da convertire - + HoMM3 campaigns (*.h3c) Campagne HoMM3 (*.h3c) - + Select destination file Seleziona il file di destinazione - + VCMI campaigns (*.vcmp) Campagne VCMI (*.vcmp) @@ -1379,18 +1424,18 @@ MapController - + Hero %1 cannot be created as NEUTRAL. L'eroe %1 non può essere creato come NEUTRALE. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards Mod mancante richiesto - + Do you want to do that now ? @@ -1401,7 +1446,7 @@ Do you want to do that now ? Vuoi farlo ora? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards La mod di questo oggetto è obbligatoria affinché la mappa rimanga valida. @@ -1563,6 +1608,139 @@ Vuoi farlo ora? Mod di contenuto completo + + ObjectSelector + + + Select Objects + + + + + Objects + Oggetti + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Altro + + + + All + Tutti + + + + None + Nessuno + + + + Creature bank + + + + + Bonus + Bonus + + + + Dwelling + + + + + Resource + Risorsa + + + + Resource generator + + + + + Spell scroll + Pergamena magica + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Valore + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1708,12 +1886,17 @@ Vuoi farlo ora? Esperto - + Default secondary skills: Abilità secondarie predefinite: - + + Random hero secondary skills + + + + Secondary skills: Abilità secondarie: @@ -2070,23 +2253,23 @@ Vuoi farlo ora? NON FLAGGABILE - + Can't place object Impossibile posizionare l'oggetto - + There can only be one grail object on the map. Può esserci solo un oggetto Graal sulla mappa. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (sottomodulo di %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2095,19 +2278,19 @@ Add it to the map's required mods in Map->General settings. Aggiungila alle mod richieste della mappa in Mappa->Impostazioni generali. - + Custom Spells: Incantesimi personalizzati: - + Default Spells Incantesimi predefiniti - + Default Predefinito @@ -2246,7 +2429,7 @@ Aggiungila alle mod richieste della mappa in Mappa->Impostazioni generali.Edifici proibiti: - + Town Events: Eventi città: @@ -3252,7 +3435,7 @@ Aggiungila alle mod richieste della mappa in Mappa->Impostazioni generali.TemplateEditor - + VCMI Template Editor @@ -3283,8 +3466,8 @@ Aggiungila alle mod richieste della mappa in Mappa->Impostazioni generali. - - + + Add Aggiungi @@ -3321,21 +3504,21 @@ Aggiungila alle mod richieste della mappa in Mappa->Impostazioni generali. - + X - + Y - + Z @@ -3362,14 +3545,14 @@ Aggiungila alle mod richieste della mappa in Mappa->Impostazioni generali. - - + + None Nessuno - + Normal Normale @@ -3379,498 +3562,501 @@ Aggiungila alle mod richieste della mappa in Mappa->Impostazioni generali.Isole - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type Tipo - + Owner Proprietario - + Zone link - - - + + + Mines Miniere - - + + Custom objects - - + + Towns Città - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Giocatore - - - - + + + + Neutral Neutrale - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Mostri - + Allowed monsters - + Banned monsters - + Strength - + Objects Oggetti - + Connections - + Open Apri - + Save Salva - + New Nuovo - + Save as... Salva con nome... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Canc - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Zoom avanti - + Ctrl++ Ctrl++ - + Zoom out Zoom indietro - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Reimposta zoom - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random Casuale - + Weak Debole - + Strong Forte - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Conferma - + Unsaved changes will be lost, are you sure? Le modifiche non salvate andranno perse, sei sicuro? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Errore - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Errore @@ -4075,7 +4261,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 Giorno %1 - %2 @@ -4103,16 +4289,69 @@ Guard: %3 Rimuovi - + Day %1 - %2 Giorno %1 - %2 - + New event Nuovo evento + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + Tipo + + + + Value + Valore + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4246,6 +4485,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4473,12 +4745,12 @@ Guard: %3 XL (144x144) - + Random map Mappa casuale - + Players Giocatori @@ -4513,20 +4785,25 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random Casuale - + Human teams Squadre umane - + Computer teams Squadre IA @@ -4541,119 +4818,128 @@ Guard: %3 Dimensione personalizzata - Underground - Sotterraneo + Sotterraneo - + Humans Umani - + Computers Computer - + Monster strength Forza mostri - + Weak Debole - - + + Normal Normale - + Strong Forte - + Water content Contenuto d'acqua - + None Nessuno - + Islands Isole - + Roads Strade - + Dirt Terra - + Gravel Ghiaia - + Cobblestone Ciottoli - - + + Template Modello - + Custom seed Seed personalizzato - + Generate random map Genera mappa casuale - + OK OK - + Cancel Annulla - + No template Nessun modello - + No template for parameters specified. Random map cannot be generated. Nessun modello per i parametri specificati. Impossibile generare una mappa casuale. - + RMG failure Errore nella generazione della mappa casuale - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] [predefinito] diff --git a/mapeditor/translation/japanese.ts b/mapeditor/translation/japanese.ts index 09cc99d39..9cf418448 100644 --- a/mapeditor/translation/japanese.ts +++ b/mapeditor/translation/japanese.ts @@ -320,52 +320,61 @@ アウトロビデオ - + Custom AI-generated, needs review by native speaker; delete this comment afterwards カスタム - + Infix AI-generated, needs review by native speaker; delete this comment afterwards 中間語 - + X - + Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards ラベル位置X - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards ラベル位置Y - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards シナリオ数の削減 - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards 新しい地域設定では以前より少ないシナリオ数に対応しています。一部が削除されます。続行しますか? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -393,7 +402,7 @@ 削除 - + New event AI-generated, needs review by native speaker; delete this comment afterwards 新しいイベント @@ -585,31 +594,31 @@ 呪文をカスタマイズ - + Level 1 AI-generated, needs review by native speaker; delete this comment afterwards レベル 1 - + Level 2 AI-generated, needs review by native speaker; delete this comment afterwards レベル 2 - + Level 3 AI-generated, needs review by native speaker; delete this comment afterwards レベル 3 - + Level 4 AI-generated, needs review by native speaker; delete this comment afterwards レベル 4 - + Level 5 AI-generated, needs review by native speaker; delete this comment afterwards レベル 5 @@ -676,7 +685,7 @@ MainWindow - + VCMI Map Editor VCMIマップエディター @@ -865,8 +874,6 @@ - - View underground AI-generated, needs review by native speaker; delete this comment afterwards 地下を表示 @@ -1042,9 +1049,9 @@ - - - + + + Update appearance AI-generated, needs review by native speaker; delete this comment afterwards 外観を更新 @@ -1274,284 +1281,322 @@ Ctrl+Shift+= - + Confirmation AI-generated, needs review by native speaker; delete this comment afterwards 確認 - + Unsaved changes will be lost, are you sure? AI-generated, needs review by native speaker; delete this comment afterwards 保存されていない変更は失われます。よろしいですか? - + + Surface + + + + + Underground + 地下 + + + + Level - %1 + + + + Mods are required AI-generated, needs review by native speaker; delete this comment afterwards 必要なModがあります - + Failed to open map AI-generated, needs review by native speaker; delete this comment afterwards マップを開くのに失敗しました - + Open map AI-generated, needs review by native speaker; delete this comment afterwards マップを開く - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards すべての対応マップ (*.vmap *.h3m);;VCMIマップ(*.vmap);;HoMM3マップ(*.h3m) - + Recently Opened Files AI-generated, needs review by native speaker; delete this comment afterwards 最近開いたファイル - + Map validation AI-generated, needs review by native speaker; delete this comment afterwards マップの検証 - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards マップに重大な問題があり、プレイできない可能性があります。マップメニューからバリデータを開いて問題を確認してください - + Map has some errors. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards マップにいくつかのエラーがあります。マップメニューからバリデータを開いて問題を確認してください - + Failed to save map AI-generated, needs review by native speaker; delete this comment afterwards マップの保存に失敗しました - + Save map AI-generated, needs review by native speaker; delete this comment afterwards マップを保存 - + VCMI maps (*.vmap) AI-generated, needs review by native speaker; delete this comment afterwards VCMIマップ (*.vmap) - + Type AI-generated, needs review by native speaker; delete this comment afterwards 種類 - + Towns AI-generated, needs review by native speaker; delete this comment afterwards - + Objects AI-generated, needs review by native speaker; delete this comment afterwards オブジェクト - + Heroes AI-generated, needs review by native speaker; delete this comment afterwards ヒーロー - + Artifacts AI-generated, needs review by native speaker; delete this comment afterwards アーティファクト - + Resources AI-generated, needs review by native speaker; delete this comment afterwards 資源 - + Banks AI-generated, needs review by native speaker; delete this comment afterwards バンク - + Dwellings AI-generated, needs review by native speaker; delete this comment afterwards 住居 - + Grounds AI-generated, needs review by native speaker; delete this comment afterwards 地形 - + Teleports AI-generated, needs review by native speaker; delete this comment afterwards テレポート - + Mines AI-generated, needs review by native speaker; delete this comment afterwards 鉱山 - + Triggers AI-generated, needs review by native speaker; delete this comment afterwards トリガー - + Monsters AI-generated, needs review by native speaker; delete this comment afterwards モンスター - + Quests AI-generated, needs review by native speaker; delete this comment afterwards クエスト - + Wog Objects AI-generated, needs review by native speaker; delete this comment afterwards Wogオブジェクト - + Obstacles AI-generated, needs review by native speaker; delete this comment afterwards 障害物 - + Other AI-generated, needs review by native speaker; delete this comment afterwards その他 - + Mods loading problem AI-generated, needs review by native speaker; delete this comment afterwards Modの読み込み問題 - + Critical error during Mods loading. Disable invalid mods and restart. AI-generated, needs review by native speaker; delete this comment afterwards Mod読み込み中に重大なエラーが発生しました。無効なModを無効にして再起動してください。 - - - View surface - AI-generated, needs review by native speaker; delete this comment afterwards - 地上を表示 + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + AI-generated, needs review by native speaker; delete this comment afterwards + 地上を表示 + + + No objects selected AI-generated, needs review by native speaker; delete this comment afterwards オブジェクトが選択されていません - + This operation is irreversible. Do you want to continue? AI-generated, needs review by native speaker; delete this comment afterwards この操作は元に戻せません。本当に続行しますか? - + Errors occurred. %1 objects were not updated AI-generated, needs review by native speaker; delete this comment afterwards エラーが発生しました。%1 個のオブジェクトが更新されませんでした - + Save to image AI-generated, needs review by native speaker; delete this comment afterwards 画像として保存 - + Select maps to convert AI-generated, needs review by native speaker; delete this comment afterwards 変換するマップを選択 - + HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards HoMM3マップ (*.h3m) - + Choose directory to save converted maps AI-generated, needs review by native speaker; delete this comment afterwards 変換されたマップを保存するディレクトリを選択 - + Operation completed AI-generated, needs review by native speaker; delete this comment afterwards 操作が完了しました - + Successfully converted %1 maps AI-generated, needs review by native speaker; delete this comment afterwards %1 個のマップが正常に変換されました - + Failed to convert the map. Abort operation AI-generated, needs review by native speaker; delete this comment afterwards マップの変換に失敗しました。操作を中止します - + Select campaign to convert AI-generated, needs review by native speaker; delete this comment afterwards 変換するキャンペーンを選択 - + HoMM3 campaigns (*.h3c) AI-generated, needs review by native speaker; delete this comment afterwards HoMM3キャンペーン (*.h3c) - + Select destination file AI-generated, needs review by native speaker; delete this comment afterwards 保存先ファイルを選択 - + VCMI campaigns (*.vcmp) AI-generated, needs review by native speaker; delete this comment afterwards VCMIキャンペーン (*.vcmp) @@ -1560,19 +1605,19 @@ MapController - + Hero %1 cannot be created as NEUTRAL. AI-generated, needs review by native speaker; delete this comment afterwards ヒーロー %1 は中立 (NEUTRAL) として作成できません。 - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards 必要なModが見つかりません - + Do you want to do that now ? @@ -1583,7 +1628,7 @@ Do you want to do that now ? 今すぐ行いますか? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards このオブジェクトのModはマップを有効な状態に保つために必須です。 @@ -1769,6 +1814,139 @@ Do you want to do that now ? フルコンテンツMod + + ObjectSelector + + + Select Objects + + + + + Objects + オブジェクト + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + その他 + + + + All + すべて + + + + None + なし + + + + Creature bank + + + + + Bonus + ボーナス + + + + Dwelling + + + + + Resource + 資源 + + + + Resource generator + + + + + Spell scroll + 魔法の巻物 + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1929,13 +2107,18 @@ Do you want to do that now ? エキスパート - + Default secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards デフォルトの副次スキル: - + + Random hero secondary skills + + + + Secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards 副次スキル: @@ -2350,25 +2533,25 @@ Do you want to do that now ? フラグ不可 - + Can't place object AI-generated, needs review by native speaker; delete this comment afterwards オブジェクトを配置できません - + There can only be one grail object on the map. AI-generated, needs review by native speaker; delete this comment afterwards マップ上に聖杯オブジェクトは1つだけ配置できます。 - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (%1 のサブMod) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2377,21 +2560,21 @@ Add it to the map's required mods in Map->General settings. マップ→一般設定で必須Modとして追加してください。 - + Custom Spells: AI-generated, needs review by native speaker; delete this comment afterwards カスタム魔法: - + Default Spells AI-generated, needs review by native speaker; delete this comment afterwards デフォルトの魔法 - + Default AI-generated, needs review by native speaker; delete this comment afterwards デフォルト @@ -2556,7 +2739,7 @@ Add it to the map's required mods in Map->General settings. 禁止された建物: - + Town Events: AI-generated, needs review by native speaker; delete this comment afterwards 町のイベント: @@ -3663,7 +3846,7 @@ Add it to the map's required mods in Map->General settings. TemplateEditor - + VCMI Template Editor @@ -3694,8 +3877,8 @@ Add it to the map's required mods in Map->General settings. - - + + Add 追加 @@ -3732,21 +3915,21 @@ Add it to the map's required mods in Map->General settings. - + X - + Y - + Z @@ -3773,14 +3956,14 @@ Add it to the map's required mods in Map->General settings. - - + + None なし - + Normal 普通 @@ -3790,498 +3973,501 @@ Add it to the map's required mods in Map->General settings. - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type 種類 - + Owner 所有者 - + Zone link - - - + + + Mines 鉱山 - - + + Custom objects - - + + Towns - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player プレイヤー - - - - + + + + Neutral 中立 - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters モンスター - + Allowed monsters - + Banned monsters - + Strength - + Objects オブジェクト - + Connections - + Open 開く - + Save 保存 - + New 新規作成 - + Save as... 名前を付けて保存... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in ズームイン - + Ctrl++ Ctrl++ - + Zoom out ズームアウト - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset ズームリセット - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random ランダム - + Weak 弱い - + Strong 強い - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation 確認 - + Unsaved changes will be lost, are you sure? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - エラー - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + エラー @@ -4524,7 +4710,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards 日 %1 - %2 @@ -4557,18 +4743,71 @@ Guard: %3 削除 - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards 日 %1 - %2 - + New event AI-generated, needs review by native speaker; delete this comment afterwards 新しいイベント + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + 種類 + + + + Value + + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4719,6 +4958,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4987,13 +5259,13 @@ Guard: %3 XL(144×144) - + Random map AI-generated, needs review by native speaker; delete this comment afterwards ランダムマップ - + Players AI-generated, needs review by native speaker; delete this comment afterwards プレイヤー @@ -5035,22 +5307,27 @@ Guard: %3 G(252×252) - - - - + + Levels + + + + + + + Random AI-generated, needs review by native speaker; delete this comment afterwards ランダム - + Human teams AI-generated, needs review by native speaker; delete this comment afterwards 人間チーム - + Computer teams AI-generated, needs review by native speaker; delete this comment afterwards コンピューターチーム @@ -5068,141 +5345,150 @@ Guard: %3 カスタムサイズ - Underground AI-generated, needs review by native speaker; delete this comment afterwards - 地下 + 地下 - + Humans AI-generated, needs review by native speaker; delete this comment afterwards 人間 - + Computers AI-generated, needs review by native speaker; delete this comment afterwards コンピューター - + Monster strength AI-generated, needs review by native speaker; delete this comment afterwards モンスターの強さ - + Weak AI-generated, needs review by native speaker; delete this comment afterwards 弱い - - + + Normal AI-generated, needs review by native speaker; delete this comment afterwards 普通 - + Strong AI-generated, needs review by native speaker; delete this comment afterwards 強い - + Water content AI-generated, needs review by native speaker; delete this comment afterwards 水の量 - + None AI-generated, needs review by native speaker; delete this comment afterwards なし - + Islands AI-generated, needs review by native speaker; delete this comment afterwards - + Roads AI-generated, needs review by native speaker; delete this comment afterwards 道路 - + Dirt AI-generated, needs review by native speaker; delete this comment afterwards - + Gravel AI-generated, needs review by native speaker; delete this comment afterwards 砂利 - + Cobblestone AI-generated, needs review by native speaker; delete this comment afterwards 石畳 - - + + Template AI-generated, needs review by native speaker; delete this comment afterwards テンプレート - + Custom seed AI-generated, needs review by native speaker; delete this comment afterwards カスタムシード - + Generate random map AI-generated, needs review by native speaker; delete this comment afterwards ランダムマップを生成 - + OK AI-generated, needs review by native speaker; delete this comment afterwards OK - + Cancel AI-generated, needs review by native speaker; delete this comment afterwards キャンセル - + No template AI-generated, needs review by native speaker; delete this comment afterwards テンプレートなし - + No template for parameters specified. Random map cannot be generated. AI-generated, needs review by native speaker; delete this comment afterwards 指定されたパラメータに対応するテンプレートがありません。ランダムマップを生成できません。 - + RMG failure AI-generated, needs review by native speaker; delete this comment afterwards RMG失敗 - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] AI-generated, needs review by native speaker; delete this comment afterwards [デフォルト] diff --git a/mapeditor/translation/korean.ts b/mapeditor/translation/korean.ts index 5a2137271..1ab534a95 100644 --- a/mapeditor/translation/korean.ts +++ b/mapeditor/translation/korean.ts @@ -320,52 +320,61 @@ 아웃트로 비디오 - + Custom AI-generated, needs review by native speaker; delete this comment afterwards 사용자 정의 - + Infix AI-generated, needs review by native speaker; delete this comment afterwards 중간 삽입어 - + X - + Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards 라벨 위치 X - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards 라벨 위치 Y - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards 시나리오 수 감소 - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards 새로운 지역 설정은 이전보다 시나리오 수가 적습니다. 일부가 제거됩니다. 계속하시겠습니까? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -393,7 +402,7 @@ 제거 - + New event AI-generated, needs review by native speaker; delete this comment afterwards 새 이벤트 @@ -585,31 +594,31 @@ 주문 사용자 정의 - + Level 1 AI-generated, needs review by native speaker; delete this comment afterwards 레벨 1 - + Level 2 AI-generated, needs review by native speaker; delete this comment afterwards 레벨 2 - + Level 3 AI-generated, needs review by native speaker; delete this comment afterwards 레벨 3 - + Level 4 AI-generated, needs review by native speaker; delete this comment afterwards 레벨 4 - + Level 5 AI-generated, needs review by native speaker; delete this comment afterwards 레벨 5 @@ -676,7 +685,7 @@ MainWindow - + VCMI Map Editor VCMI 맵 편집기 @@ -865,8 +874,6 @@ - - View underground AI-generated, needs review by native speaker; delete this comment afterwards 지하 보기 @@ -1042,9 +1049,9 @@ - - - + + + Update appearance AI-generated, needs review by native speaker; delete this comment afterwards 외형 업데이트 @@ -1274,263 +1281,301 @@ Ctrl+Shift+= - + Confirmation AI-generated, needs review by native speaker; delete this comment afterwards 확인 - + Unsaved changes will be lost, are you sure? AI-generated, needs review by native speaker; delete this comment afterwards 저장되지 않은 변경 사항이 손실됩니다. 계속하시겠습니까? - + + Surface + + + + + Underground + 지하 + + + + Level - %1 + + + + Mods are required AI-generated, needs review by native speaker; delete this comment afterwards 필수 모드가 필요합니다 - + Failed to open map AI-generated, needs review by native speaker; delete this comment afterwards 맵 열기에 실패했습니다 - + Open map AI-generated, needs review by native speaker; delete this comment afterwards 맵 열기 - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards 지원되는 모든 맵 (*.vmap *.h3m);;VCMI 맵(*.vmap);;HoMM3 맵(*.h3m) - + Recently Opened Files AI-generated, needs review by native speaker; delete this comment afterwards 최근에 연 파일 - + Map validation AI-generated, needs review by native speaker; delete this comment afterwards 맵 유효성 검사 - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards 맵에 치명적인 문제가 있어 플레이할 수 없 - + Map has some errors. Open Validator from the Map menu to see issues found - + Failed to save map - + Save map 맵 저장 - + VCMI maps (*.vmap) - + Type - + Towns - + Objects - + Heroes 영웅 - + Artifacts 아티팩트 - + Resources 자원 - + Banks - + Dwellings - + Grounds - + Teleports - + Mines - + Triggers - + Monsters - + Quests - + Wog Objects - + Obstacles - + Other - + Mods loading problem AI-generated, needs review by native speaker; delete this comment afterwards 모드 로딩 문제 - + Critical error during Mods loading. Disable invalid mods and restart. AI-generated, needs review by native speaker; delete this comment afterwards 모드를 불러오는 중 치명적인 오류가 발생했습니다. 잘못된 모드를 비활성화하고 다시 시작하세요. - - - View surface - AI-generated, needs review by native speaker; delete this comment afterwards - 지상 보기 + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + AI-generated, needs review by native speaker; delete this comment afterwards + 지상 보기 + + + No objects selected AI-generated, needs review by native speaker; delete this comment afterwards 선택된 오브젝트 없음 - + This operation is irreversible. Do you want to continue? AI-generated, needs review by native speaker; delete this comment afterwards 이 작업은 되돌릴 수 없습니다. 계속하시겠습니까? - + Errors occurred. %1 objects were not updated AI-generated, needs review by native speaker; delete this comment afterwards 오류가 발생했습니다. %1개의 오브젝트가 업데이트되지 않았습니다 - + Save to image AI-generated, needs review by native speaker; delete this comment afterwards 이미지로 저장 - + Select maps to convert AI-generated, needs review by native speaker; delete this comment afterwards 변환할 맵 선택 - + HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards HoMM3 맵(*.h3m) - + Choose directory to save converted maps AI-generated, needs review by native speaker; delete this comment afterwards 변환된 맵을 저장할 디렉토리 선택 - + Operation completed AI-generated, needs review by native speaker; delete this comment afterwards 작업 완료 - + Successfully converted %1 maps AI-generated, needs review by native speaker; delete this comment afterwards %1개의 맵이 성공적으로 변환되었습니다 - + Failed to convert the map. Abort operation AI-generated, needs review by native speaker; delete this comment afterwards 맵 변환 실패. 작업을 중단합니다 - + Select campaign to convert AI-generated, needs review by native speaker; delete this comment afterwards 변환할 캠페인 선택 - + HoMM3 campaigns (*.h3c) AI-generated, needs review by native speaker; delete this comment afterwards HoMM3 캠페인 (*.h3c) - + Select destination file AI-generated, needs review by native speaker; delete this comment afterwards 대상 파일 선택 - + VCMI campaigns (*.vcmp) AI-generated, needs review by native speaker; delete this comment afterwards VCMI 캠페인 (*.vcmp) @@ -1539,19 +1584,19 @@ MapController - + Hero %1 cannot be created as NEUTRAL. AI-generated, needs review by native speaker; delete this comment afterwards 영웅 %1은(는) 중립으로 생성할 수 없습니다. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards 필수 모드 누락 - + Do you want to do that now ? @@ -1562,7 +1607,7 @@ Do you want to do that now ? 지금 실행하시겠습니까? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards 이 오브젝트의 모드는 맵의 유효성을 유지하기 위해 필수입니다. @@ -1748,6 +1793,139 @@ Do you want to do that now ? 전체 콘텐츠 모드 + + ObjectSelector + + + Select Objects + + + + + Objects + + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + + + + + All + 전체 + + + + None + 없음 + + + + Creature bank + + + + + Bonus + 보너스 + + + + Dwelling + + + + + Resource + 자원 + + + + Resource generator + + + + + Spell scroll + 주문서 + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1908,13 +2086,18 @@ Do you want to do that now ? 전문가 - + Default secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards 기본 보조 기술: - + + Random hero secondary skills + + + + Secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards 보조 기술: @@ -2329,25 +2512,25 @@ Do you want to do that now ? 깃발 불가 - + Can't place object AI-generated, needs review by native speaker; delete this comment afterwards 오브젝트를 배치할 수 없습니다 - + There can only be one grail object on the map. AI-generated, needs review by native speaker; delete this comment afterwards 맵에는 성배 오브젝트가 하나만 존재할 수 있습니다. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (%1의 서브모드) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2356,21 +2539,21 @@ Add it to the map's required mods in Map->General settings. 맵 -> 일반 설정에서 해당 모드를 필수 모드로 추가하세요. - + Custom Spells: AI-generated, needs review by native speaker; delete this comment afterwards 사용자 지정 주문: - + Default Spells AI-generated, needs review by native speaker; delete this comment afterwards 기본 주문 - + Default AI-generated, needs review by native speaker; delete this comment afterwards 기본값 @@ -2535,7 +2718,7 @@ Add it to the map's required mods in Map->General settings. 금지된 건물: - + Town Events: AI-generated, needs review by native speaker; delete this comment afterwards 도시 이벤트: @@ -3642,7 +3825,7 @@ Add it to the map's required mods in Map->General settings. TemplateEditor - + VCMI Template Editor @@ -3673,8 +3856,8 @@ Add it to the map's required mods in Map->General settings. - - + + Add 추가 @@ -3711,21 +3894,21 @@ Add it to the map's required mods in Map->General settings. - + X - + Y - + Z @@ -3752,14 +3935,14 @@ Add it to the map's required mods in Map->General settings. - - + + None 없음 - + Normal 보통 @@ -3769,498 +3952,501 @@ Add it to the map's required mods in Map->General settings. - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type - + Owner 소유자 - + Zone link - - - + + + Mines - - + + Custom objects - - + + Towns - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player 플레이어 - - - - + + + + Neutral 중립 - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters - + Allowed monsters - + Banned monsters - + Strength - + Objects - + Connections - + Open 열기 - + Save 저장 - + New 새로 만들기 - + Save as... 다른 이름으로 저장... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in 확대 - + Ctrl++ Ctrl++ - + Zoom out 축소 - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset 확대 초기화 - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random 무작위 - + Weak 약함 - + Strong 강함 - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation 확인 - + Unsaved changes will be lost, are you sure? 저장되지 않은 변경 사항이 손실됩니다. 계속하시겠습니까? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - 오류 - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + 오류 @@ -4503,7 +4689,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards 일 %1 - %2 @@ -4536,18 +4722,71 @@ Guard: %3 제거 - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards 일 %1 - %2 - + New event AI-generated, needs review by native speaker; delete this comment afterwards 새 이벤트 + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + + + + + Value + + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4698,6 +4937,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4966,13 +5238,13 @@ Guard: %3 XL (144x144) - + Random map AI-generated, needs review by native speaker; delete this comment afterwards 무작위 맵 - + Players AI-generated, needs review by native speaker; delete this comment afterwards 플레이어 @@ -5014,22 +5286,27 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random AI-generated, needs review by native speaker; delete this comment afterwards 무작위 - + Human teams AI-generated, needs review by native speaker; delete this comment afterwards 인간 팀 - + Computer teams AI-generated, needs review by native speaker; delete this comment afterwards 컴퓨터 팀 @@ -5047,141 +5324,150 @@ Guard: %3 사용자 지정 크기 - Underground AI-generated, needs review by native speaker; delete this comment afterwards - 지하 + 지하 - + Humans AI-generated, needs review by native speaker; delete this comment afterwards 인간 - + Computers AI-generated, needs review by native speaker; delete this comment afterwards 컴퓨터 - + Monster strength AI-generated, needs review by native speaker; delete this comment afterwards 몬스터 강도 - + Weak AI-generated, needs review by native speaker; delete this comment afterwards 약함 - - + + Normal AI-generated, needs review by native speaker; delete this comment afterwards 보통 - + Strong AI-generated, needs review by native speaker; delete this comment afterwards 강함 - + Water content AI-generated, needs review by native speaker; delete this comment afterwards 수분 함량 - + None AI-generated, needs review by native speaker; delete this comment afterwards 없음 - + Islands AI-generated, needs review by native speaker; delete this comment afterwards - + Roads AI-generated, needs review by native speaker; delete this comment afterwards 도로 - + Dirt AI-generated, needs review by native speaker; delete this comment afterwards - + Gravel AI-generated, needs review by native speaker; delete this comment afterwards 자갈 - + Cobblestone AI-generated, needs review by native speaker; delete this comment afterwards 자갈돌 - - + + Template AI-generated, needs review by native speaker; delete this comment afterwards 템플릿 - + Custom seed AI-generated, needs review by native speaker; delete this comment afterwards 사용자 지정 시드 - + Generate random map AI-generated, needs review by native speaker; delete this comment afterwards 무작위 맵 생성 - + OK AI-generated, needs review by native speaker; delete this comment afterwards 확인 - + Cancel AI-generated, needs review by native speaker; delete this comment afterwards 취소 - + No template AI-generated, needs review by native speaker; delete this comment afterwards 템플릿 없음 - + No template for parameters specified. Random map cannot be generated. AI-generated, needs review by native speaker; delete this comment afterwards 지정된 매개변수에 맞는 템플릿이 없습니다. 무작위 맵을 생성할 수 없습니다. - + RMG failure AI-generated, needs review by native speaker; delete this comment afterwards RMG 실패 - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] AI-generated, needs review by native speaker; delete this comment afterwards [기본값] diff --git a/mapeditor/translation/norwegian.ts b/mapeditor/translation/norwegian.ts index 30b115382..fd64a581d 100644 --- a/mapeditor/translation/norwegian.ts +++ b/mapeditor/translation/norwegian.ts @@ -320,52 +320,61 @@ Utrovideo - + Custom AI-generated, needs review by native speaker; delete this comment afterwards Egendefinert - + Infix AI-generated, needs review by native speaker; delete this comment afterwards Infix - + X - + Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards Etikettposisjon X - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards Etikettposisjon Y - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards Færre scenarier - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards Ny regionoppsett støtter færre scenarier enn før. Noen vil bli fjernet. Fortsette? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -393,7 +402,7 @@ Fjern - + New event AI-generated, needs review by native speaker; delete this comment afterwards Ny hendelse @@ -585,31 +594,31 @@ Tilpass trylleformularer - + Level 1 AI-generated, needs review by native speaker; delete this comment afterwards Nivå 1 - + Level 2 AI-generated, needs review by native speaker; delete this comment afterwards Nivå 2 - + Level 3 AI-generated, needs review by native speaker; delete this comment afterwards Nivå 3 - + Level 4 AI-generated, needs review by native speaker; delete this comment afterwards Nivå 4 - + Level 5 AI-generated, needs review by native speaker; delete this comment afterwards Nivå 5 @@ -676,7 +685,7 @@ MainWindow - + VCMI Map Editor VCMI-kartredigeringsprogram @@ -865,8 +874,6 @@ - - View underground AI-generated, needs review by native speaker; delete this comment afterwards Vis underjordisk @@ -1042,9 +1049,9 @@ - - - + + + Update appearance AI-generated, needs review by native speaker; delete this comment afterwards Oppdater utseende @@ -1274,284 +1281,322 @@ Ctrl+Shift+= - + Confirmation AI-generated, needs review by native speaker; delete this comment afterwards Bekreftelse - + Unsaved changes will be lost, are you sure? AI-generated, needs review by native speaker; delete this comment afterwards Ulagrede endringer vil gå tapt, er du sikker? - + + Surface + + + + + Underground + Underjordisk + + + + Level - %1 + + + + Mods are required AI-generated, needs review by native speaker; delete this comment afterwards Modifikasjoner kreves - + Failed to open map AI-generated, needs review by native speaker; delete this comment afterwards Kunne ikke åpne kart - + Open map AI-generated, needs review by native speaker; delete this comment afterwards Åpne kart - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards Alle støttede kart (*.vmap *.h3m);;VCMI-kart(*.vmap);;HoMM3-kart(*.h3m) - + Recently Opened Files AI-generated, needs review by native speaker; delete this comment afterwards Nylig åpnete filer - + Map validation AI-generated, needs review by native speaker; delete this comment afterwards Kartvalidering - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Kartet har kritiske problemer og vil sannsynligvis ikke være spillbart. Åpne Validator fra Kart-menyen for å se funnene - + Map has some errors. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Kartet har noen feil. Åpne Validator fra Kart-menyen for å se funnene - + Failed to save map AI-generated, needs review by native speaker; delete this comment afterwards Kunne ikke lagre kart - + Save map AI-generated, needs review by native speaker; delete this comment afterwards Lagre kart - + VCMI maps (*.vmap) AI-generated, needs review by native speaker; delete this comment afterwards VCMI-kart (*.vmap) - + Type AI-generated, needs review by native speaker; delete this comment afterwards Type - + Towns AI-generated, needs review by native speaker; delete this comment afterwards Byer - + Objects AI-generated, needs review by native speaker; delete this comment afterwards Objekter - + Heroes AI-generated, needs review by native speaker; delete this comment afterwards Helter - + Artifacts AI-generated, needs review by native speaker; delete this comment afterwards Gjenstander - + Resources AI-generated, needs review by native speaker; delete this comment afterwards Ressurser - + Banks AI-generated, needs review by native speaker; delete this comment afterwards Banker - + Dwellings AI-generated, needs review by native speaker; delete this comment afterwards Boliger - + Grounds AI-generated, needs review by native speaker; delete this comment afterwards Bakker - + Teleports AI-generated, needs review by native speaker; delete this comment afterwards Teleportere - + Mines AI-generated, needs review by native speaker; delete this comment afterwards Gruver - + Triggers AI-generated, needs review by native speaker; delete this comment afterwards Utløsere - + Monsters AI-generated, needs review by native speaker; delete this comment afterwards Monstre - + Quests AI-generated, needs review by native speaker; delete this comment afterwards Oppdrag - + Wog Objects AI-generated, needs review by native speaker; delete this comment afterwards Wog-objekter - + Obstacles AI-generated, needs review by native speaker; delete this comment afterwards Hindringer - + Other AI-generated, needs review by native speaker; delete this comment afterwards Annet - + Mods loading problem AI-generated, needs review by native speaker; delete this comment afterwards Problem med lasting av modifikasjoner - + Critical error during Mods loading. Disable invalid mods and restart. AI-generated, needs review by native speaker; delete this comment afterwards Kritisk feil under lasting av modifikasjoner. Deaktiver ugyldige mods og start på nytt. - - - View surface - AI-generated, needs review by native speaker; delete this comment afterwards - Vis overflate + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + AI-generated, needs review by native speaker; delete this comment afterwards + Vis overflate + + + No objects selected AI-generated, needs review by native speaker; delete this comment afterwards Ingen objekter valgt - + This operation is irreversible. Do you want to continue? AI-generated, needs review by native speaker; delete this comment afterwards Denne handlingen kan ikke angres. Vil du fortsette? - + Errors occurred. %1 objects were not updated AI-generated, needs review by native speaker; delete this comment afterwards Det oppsto feil. %1 objekter ble ikke oppdatert - + Save to image AI-generated, needs review by native speaker; delete this comment afterwards Lagre som bilde - + Select maps to convert AI-generated, needs review by native speaker; delete this comment afterwards Velg kart å konvertere - + HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards HoMM3-kart (*.h3m) - + Choose directory to save converted maps AI-generated, needs review by native speaker; delete this comment afterwards Velg mappe for å lagre konverterte kart - + Operation completed AI-generated, needs review by native speaker; delete this comment afterwards Operasjon fullført - + Successfully converted %1 maps AI-generated, needs review by native speaker; delete this comment afterwards Vellykket konvertering av %1 kart - + Failed to convert the map. Abort operation AI-generated, needs review by native speaker; delete this comment afterwards Kunne ikke konvertere kartet. Avbryter operasjonen - + Select campaign to convert AI-generated, needs review by native speaker; delete this comment afterwards Velg kampanje å konvertere - + HoMM3 campaigns (*.h3c) AI-generated, needs review by native speaker; delete this comment afterwards HoMM3-kampanjer (*.h3c) - + Select destination file AI-generated, needs review by native speaker; delete this comment afterwards Velg måldokument - + VCMI campaigns (*.vcmp) AI-generated, needs review by native speaker; delete this comment afterwards VCMI-kampanjer (*.vcmp) @@ -1560,19 +1605,19 @@ MapController - + Hero %1 cannot be created as NEUTRAL. AI-generated, needs review by native speaker; delete this comment afterwards Helt %1 kan ikke opprettes som NØYTRAL. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards Manglende påkrevd modifikasjon - + Do you want to do that now ? @@ -1583,7 +1628,7 @@ Do you want to do that now ? Vil du gjøre det nå? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards Denne gjenstandens modifikasjon er obligatorisk for at kartet skal være gyldig. @@ -1769,6 +1814,139 @@ Vil du gjøre det nå? Modifikasjoner med fullt innhold + + ObjectSelector + + + Select Objects + + + + + Objects + Objekter + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Annet + + + + All + Alle + + + + None + Ingen + + + + Creature bank + + + + + Bonus + Bonus + + + + Dwelling + + + + + Resource + Ressurs + + + + Resource generator + + + + + Spell scroll + Trylleformularrull + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Verdi + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1929,13 +2107,18 @@ Vil du gjøre det nå? Ekspert - + Default secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Standard sekundære ferdigheter: - + + Random hero secondary skills + + + + Secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Sekundære ferdigheter: @@ -2352,25 +2535,25 @@ Vil du gjøre det nå? KAN IKKE FLAGGES - + Can't place object AI-generated, needs review by native speaker; delete this comment afterwards Kan ikke plassere objekt - + There can only be one grail object on the map. AI-generated, needs review by native speaker; delete this comment afterwards Det kan kun være én gral på kartet. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (under-modifikasjon av %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2379,21 +2562,21 @@ Add it to the map's required mods in Map->General settings. Legg den til i kartets påkrevde modifikasjoner under Kart→Generelle innstillinger. - + Custom Spells: AI-generated, needs review by native speaker; delete this comment afterwards Egendefinerte trylleformularer: - + Default Spells AI-generated, needs review by native speaker; delete this comment afterwards Standard trylleformularer - + Default AI-generated, needs review by native speaker; delete this comment afterwards Standard @@ -2558,7 +2741,7 @@ Legg den til i kartets påkrevde modifikasjoner under Kart→Generelle innstilli Forbudte bygninger: - + Town Events: AI-generated, needs review by native speaker; delete this comment afterwards Byhendelser: @@ -3665,7 +3848,7 @@ Legg den til i kartets påkrevde modifikasjoner under Kart→Generelle innstilli TemplateEditor - + VCMI Template Editor @@ -3696,8 +3879,8 @@ Legg den til i kartets påkrevde modifikasjoner under Kart→Generelle innstilli - - + + Add Legg til @@ -3734,21 +3917,21 @@ Legg den til i kartets påkrevde modifikasjoner under Kart→Generelle innstilli - + X - + Y - + Z @@ -3775,14 +3958,14 @@ Legg den til i kartets påkrevde modifikasjoner under Kart→Generelle innstilli - - + + None Ingen - + Normal Normal @@ -3792,498 +3975,501 @@ Legg den til i kartets påkrevde modifikasjoner under Kart→Generelle innstilli Øyer - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type Type - + Owner Eier - + Zone link - - - + + + Mines Gruver - - + + Custom objects - - + + Towns Byer - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Spiller - - - - + + + + Neutral Nøytral - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Monstre - + Allowed monsters - + Banned monsters - + Strength - + Objects Objekter - + Connections - + Open Åpne - + Save Lagre - + New Ny - + Save as... Lagre som... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Zoom inn - + Ctrl++ Ctrl++ - + Zoom out Zoom ut - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Nullstill zoom - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random Tilfeldig - + Weak Svak - + Strong Sterk - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Bekreftelse - + Unsaved changes will be lost, are you sure? Ulagrede endringer vil gå tapt, er du sikker? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Feil - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Feil @@ -4526,7 +4712,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Dag %1 - %2 @@ -4559,18 +4745,71 @@ Guard: %3 Fjern - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Dag %1 - %2 - + New event AI-generated, needs review by native speaker; delete this comment afterwards Ny hendelse + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + Type + + + + Value + Verdi + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4721,6 +4960,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4989,13 +5261,13 @@ Guard: %3 XL (144x144) - + Random map AI-generated, needs review by native speaker; delete this comment afterwards Tilfeldig kart - + Players AI-generated, needs review by native speaker; delete this comment afterwards Spillere @@ -5037,22 +5309,27 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random AI-generated, needs review by native speaker; delete this comment afterwards Tilfeldig - + Human teams AI-generated, needs review by native speaker; delete this comment afterwards Menneskelige lag - + Computer teams AI-generated, needs review by native speaker; delete this comment afterwards Datamaskinlag @@ -5070,141 +5347,150 @@ Guard: %3 Egendefinert størrelse - Underground AI-generated, needs review by native speaker; delete this comment afterwards - Underjordisk + Underjordisk - + Humans AI-generated, needs review by native speaker; delete this comment afterwards Mennesker - + Computers AI-generated, needs review by native speaker; delete this comment afterwards Datamaskiner - + Monster strength AI-generated, needs review by native speaker; delete this comment afterwards Monsterstyrke - + Weak AI-generated, needs review by native speaker; delete this comment afterwards Svak - - + + Normal AI-generated, needs review by native speaker; delete this comment afterwards Normal - + Strong AI-generated, needs review by native speaker; delete this comment afterwards Sterk - + Water content AI-generated, needs review by native speaker; delete this comment afterwards Vanninnhold - + None AI-generated, needs review by native speaker; delete this comment afterwards Ingen - + Islands AI-generated, needs review by native speaker; delete this comment afterwards Øyer - + Roads AI-generated, needs review by native speaker; delete this comment afterwards Veier - + Dirt AI-generated, needs review by native speaker; delete this comment afterwards Jord - + Gravel AI-generated, needs review by native speaker; delete this comment afterwards Grus - + Cobblestone AI-generated, needs review by native speaker; delete this comment afterwards Brostein - - + + Template AI-generated, needs review by native speaker; delete this comment afterwards Mal - + Custom seed AI-generated, needs review by native speaker; delete this comment afterwards Egendefinert frø - + Generate random map AI-generated, needs review by native speaker; delete this comment afterwards Generer tilfeldig kart - + OK AI-generated, needs review by native speaker; delete this comment afterwards OK - + Cancel AI-generated, needs review by native speaker; delete this comment afterwards Avbryt - + No template AI-generated, needs review by native speaker; delete this comment afterwards Ingen mal - + No template for parameters specified. Random map cannot be generated. AI-generated, needs review by native speaker; delete this comment afterwards Ingen mal for angitte parametere. Tilfeldig kart kan ikke genereres. - + RMG failure AI-generated, needs review by native speaker; delete this comment afterwards RMG-feil - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] AI-generated, needs review by native speaker; delete this comment afterwards [standard] diff --git a/mapeditor/translation/polish.ts b/mapeditor/translation/polish.ts index 2031bb2b3..4d181615a 100644 --- a/mapeditor/translation/polish.ts +++ b/mapeditor/translation/polish.ts @@ -270,46 +270,55 @@ Wideo końcowe - + Custom Niestandardowe - + Infix Wstawka - + X X - + Y Y - + Label Pos X Pozycja etykiety X - + Label Pos Y Pozycja etykiety Y - + Fewer Scenarios Mniej scenariuszy - + New Region setup supports fewer scenarios than before. Some will removed. Continue? Nowe ustawienie regionów obsługuje mniej scenariuszy niż wcześniej. Niektóre zostaną usunięte. Kontynuować? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -333,7 +342,7 @@ Usuń - + New event Nowe zdarzenie @@ -500,27 +509,27 @@ Własne zaklęcia - + Level 1 Poziom 1 - + Level 2 Poziom 2 - + Level 3 Poziom 3 - + Level 4 Poziom 4 - + Level 5 Poziom 5 @@ -577,7 +586,7 @@ MainWindow - + VCMI Map Editor Edytor map VCMI @@ -737,8 +746,6 @@ - - View underground Pokaż podziemia @@ -885,9 +892,9 @@ - - - + + + Update appearance Aktualizuj wygląd @@ -1079,238 +1086,276 @@ Ctrl+Shift+= - + Confirmation Potwierdzenie - + Unsaved changes will be lost, are you sure? Niezapisane zmiany zostaną utracone, jesteś pewny? - + + Surface + + + + + Underground + Podziemia + + + + Level - %1 + + + + Mods are required Wymagane są mody - + Failed to open map Nie udało się otworzyć mapy - + Open map Otwórz mapę - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) Wszystkie wspierane mapy (*.vmap *.h3m);;Mapy VCMI(*.vmap);;Mapy HoMM3(*.h3m) - + Recently Opened Files Ostatnio otwierane pliki - + Map validation Walidacja mapy - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found Mapa ma krytyczne problemy i prawdopodobnie nie będzie grywalna. Otwórz Walidator z menu Mapy, aby zobaczyć znalezione problemy. - + Map has some errors. Open Validator from the Map menu to see issues found Mapa zawiera błędy. Otwórz Walidator z menu Mapy, aby zobaczyć znalezione problemy. - + Failed to save map Nie udało się zapisać mapy - + Save map Zapisz mapę - + VCMI maps (*.vmap) Mapy VCMI (*.vmap) - + Type Typ - + Towns Miasta - + Objects Obiekty - + Heroes Bohaterowie - + Artifacts Artefakty - + Resources Zasoby - + Banks Banki - + Dwellings Siedliska - + Grounds Tereny - + Teleports Teleporty - + Mines Kopalnie - + Triggers Wyzwalacze - + Monsters Potwory - + Quests Zadania - + Wog Objects Obiekty WOG - + Obstacles Przeszkody - + Other Inne - + Mods loading problem Problem z ładowaniem modów - + Critical error during Mods loading. Disable invalid mods and restart. Krytyczny błąd podczas ładowania modów. Wyłącz nieprawidłowe mody i uruchom ponownie. - - - View surface - Pokaż powierzchnię + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + Pokaż powierzchnię + + + No objects selected Brak wybranych obiektów - + This operation is irreversible. Do you want to continue? Ta operacja jest nieodwracalna. Czy chcesz kontynuować? - + Errors occurred. %1 objects were not updated Wystąpiły błędy. %1 obiektów nie zostało zaktualizowanych - + Save to image Zapisz jako obraz - + Select maps to convert Wybierz mapy do konwersji - + HoMM3 maps(*.h3m) Mapy HoMM3(*.h3m) - + Choose directory to save converted maps Wybierz folder do zapisu skonwertowanych map - + Operation completed Operacja zakończona - + Successfully converted %1 maps Pomyślnie skonwertowano %1 map - + Failed to convert the map. Abort operation Nieudana konwersja mapy. Przerywanie operacji - + Select campaign to convert Wybierz kampanię do konwersji - + HoMM3 campaigns (*.h3c) Kampanie HoMM3 (*.h3c) - + Select destination file Wybierz plik docelowy - + VCMI campaigns (*.vcmp) Kampanie VCMI (*.vcmp) @@ -1318,17 +1363,17 @@ MapController - + Hero %1 cannot be created as NEUTRAL. Bohater %1 nie może zostać utworzony jako NEUTRALNY - + Missing Required Mod Brakujący wymagany mod - + Do you want to do that now ? @@ -1338,7 +1383,7 @@ Do you want to do that now ? Czy chcesz to zrobić teraz? - + This object's mod is mandatory for map to remain valid. Mod tego obiektu jest wymagany dla zachowania poprawności mapy. @@ -1499,6 +1544,139 @@ Czy chcesz to zrobić teraz? Mody ze złożoną zawartością + + ObjectSelector + + + Select Objects + + + + + Objects + Obiekty + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Inne + + + + All + Wszystko + + + + None + Brak + + + + Creature bank + + + + + Bonus + Bonus + + + + Dwelling + + + + + Resource + Zasób + + + + Resource generator + + + + + Spell scroll + Zwoje z czarem + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Wartość + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1640,12 +1818,17 @@ Czy chcesz to zrobić teraz? Ekspert - + Default secondary skills: Domyślne umiejętności drugorzędne: - + + Random hero secondary skills + + + + Secondary skills: Umiejętności drugorzędne: @@ -2003,22 +2186,22 @@ Czy chcesz to zrobić teraz? NIEFLAGOWALNY - + Can't place object Nie można umieścić obiektu - + There can only be one grail object on the map. Na mapie może znajdować się tylko jeden Graal. - + (submod of %1) (submod %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2026,19 +2209,19 @@ Add it to the map's required mods in Map->General settings. Dodaj go do wymaganych modów w Ustawieniach ogólnych mapy. - + Custom Spells: Wybrane czary: - + Default Spells Domyślne czary - + Default Domyślny @@ -2177,7 +2360,7 @@ Dodaj go do wymaganych modów w Ustawieniach ogólnych mapy. Zabronione budynki: - + Town Events: Wydarzenia w mieście: @@ -3115,7 +3298,7 @@ Dodaj go do wymaganych modów w Ustawieniach ogólnych mapy. TemplateEditor - + VCMI Template Editor @@ -3146,8 +3329,8 @@ Dodaj go do wymaganych modów w Ustawieniach ogólnych mapy. - - + + Add Dodaj @@ -3184,21 +3367,21 @@ Dodaj go do wymaganych modów w Ustawieniach ogólnych mapy. - + X X - + Y Y - + Z @@ -3225,14 +3408,14 @@ Dodaj go do wymaganych modów w Ustawieniach ogólnych mapy. - - + + None Brak - + Normal Normalna @@ -3242,498 +3425,501 @@ Dodaj go do wymaganych modów w Ustawieniach ogólnych mapy. Wyspy - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type Typ - + Owner Właściciel - + Zone link - - - + + + Mines Kopalnie - - + + Custom objects - - + + Towns Miasta - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Gracz - - - - + + + + Neutral Neutralny - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Potwory - + Allowed monsters - + Banned monsters - + Strength - + Objects Obiekty - + Connections - + Open Otwórz - + Save Zapisz - + New Nowy - + Save as... Zapisz jako... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Zbliż widok - + Ctrl++ Ctrl++ - + Zoom out Oddal widok - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Domyślne oddalenie - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random Losowo - + Weak Słaba - + Strong Silna - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Potwierdzenie - + Unsaved changes will be lost, are you sure? Niezapisane zmiany zostaną utracone, jesteś pewny? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Błąd - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Błąd @@ -3938,7 +4124,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 Dzień %1 - %2 @@ -3966,16 +4152,69 @@ Guard: %3 Usuń - + Day %1 - %2 Dzień %1 - %2 - + New event Nowe zdarzenie + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + Typ + + + + Value + Wartość + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4109,6 +4348,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4334,12 +4606,12 @@ Guard: %3 XL (144x144) - + Random map Mapa losowa - + Players Gracze @@ -4374,20 +4646,25 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random Losowo - + Human teams Sojusze ludzkie - + Computer teams Sojusze komputerowe @@ -4402,119 +4679,128 @@ Guard: %3 Niestandardowy rozmiar - Underground - Podziemia + Podziemia - + Humans Ludzie - + Computers Komputery - + Monster strength Siła potworów - + Weak Słaba - - + + Normal Normalna - + Strong Silna - + Water content Powierzchnia wody - + None Brak - + Islands Wyspy - + Roads Drogi - + Dirt Ziemna - + Gravel Żwirowa - + Cobblestone Brukowana - - + + Template Szablon - + Custom seed Własny seed - + Generate random map Generuj mapę losową - + OK OK - + Cancel Anuluj - + No template Brak szablonu - + No template for parameters specified. Random map cannot be generated. Brak szablonu dla wybranych parametrów. Mapa losowa nie może zostać wygenerowana. - + RMG failure Niepowodzenie generatora map losowych - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] [domyślny] diff --git a/mapeditor/translation/portuguese.ts b/mapeditor/translation/portuguese.ts index 227f9d4bd..abb811d8f 100644 --- a/mapeditor/translation/portuguese.ts +++ b/mapeditor/translation/portuguese.ts @@ -270,46 +270,55 @@ Vídeo de finalização - + Custom Personalizado - + Infix Infixo - + X X - + Y Y - + Label Pos X Posição X do Rótulo - + Label Pos Y Posição Y do Rótulo - + Fewer Scenarios Menos Cenários - + New Region setup supports fewer scenarios than before. Some will removed. Continue? A nova configuração de Região suporta menos cenários do que antes. Alguns serão removidos. Continuar? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -333,7 +342,7 @@ Remover - + New event Novo evento @@ -500,27 +509,27 @@ Personalizar feitiços - + Level 1 Nível 1 - + Level 2 Nível 2 - + Level 3 Nível 3 - + Level 4 Nível 4 - + Level 5 Nível 5 @@ -577,7 +586,7 @@ MainWindow - + VCMI Map Editor Editor de Mapas do VCMI @@ -737,8 +746,6 @@ - - View underground Visualizar subterrâneo @@ -885,9 +892,9 @@ - - - + + + Update appearance Atualizar aparência @@ -1079,238 +1086,276 @@ Ctrl+Shift+= - + Confirmation Confirmação - + Unsaved changes will be lost, are you sure? As alterações não salvas serão perdidas, tem certeza? - + + Surface + + + + + Underground + Subterrâneo + + + + Level - %1 + + + + Mods are required Mods são necessários - + Failed to open map Falha ao abrir o mapa - + Open map Abrir mapa - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) Todos os mapas suportados (*.vmap *.h3m);;Mapas do VCMI (*.vmap);;Mapas do HoMM3 (*.h3m) - + Recently Opened Files Arquivos Abertos Recentemente - + Map validation Validação do mapa - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found O mapa tem problemas críticos e provavelmente não será jogável. Abra o Validador no menu Mapa para ver os problemas encontrados. - + Map has some errors. Open Validator from the Map menu to see issues found O mapa tem alguns erros. Abra o Validador no menu Mapa para ver os problemas encontrados. - + Failed to save map Falha ao salvar o mapa - + Save map Salvar mapa - + VCMI maps (*.vmap) Mapas do VCMI (*.vmap) - + Type Tipo - + Towns Cidades - + Objects Objetos - + Heroes Heróis - + Artifacts Artefatos - + Resources Recursos - + Banks Bancos - + Dwellings Moradias - + Grounds Terrenos - + Teleports Teleportes - + Mines Minas - + Triggers Gatilhos - + Monsters Monstros - + Quests Missões - + Wog Objects Objetos Wog - + Obstacles Obstáculos - + Other Outro - + Mods loading problem Problema ao carregar mods - + Critical error during Mods loading. Disable invalid mods and restart. Erro crítico durante o carregamento dos Mods. Desative os mods inválidos e reinicie. - - - View surface - Visualizar superfície + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + Visualizar superfície + + + No objects selected Nenhum objeto selecionado - + This operation is irreversible. Do you want to continue? Esta operação é irreversível. Deseja continuar? - + Errors occurred. %1 objects were not updated Ocorreram erros. %1 objetos não foram atualizados - + Save to image Salvar como imagem - + Select maps to convert Selecionar mapas para converter - + HoMM3 maps(*.h3m) Mapas do HoMM3 (*.h3m) - + Choose directory to save converted maps Escolha o diretório para salvar os mapas convertidos - + Operation completed Operação completa - + Successfully converted %1 maps %1 mapas foram convertidos com sucesso - + Failed to convert the map. Abort operation Falha ao converter o mapa. Abortar operação - + Select campaign to convert Selecionar campanha para converter - + HoMM3 campaigns (*.h3c) Campanhas HoMM3 (*.h3c) - + Select destination file Selecionar arquivo de destino - + VCMI campaigns (*.vcmp) Campanhas VCMI (*.vcmp) @@ -1318,17 +1363,17 @@ MapController - + Hero %1 cannot be created as NEUTRAL. O herói %1 não pode ser criado como NEUTRO. - + Missing Required Mod Mod obrigatório ausente - + Do you want to do that now ? @@ -1337,7 +1382,7 @@ Do you want to do that now ? Você quer fazer isso agora? - + This object's mod is mandatory for map to remain valid. O mod deste objeto é obrigatório para que o mapa permaneça válido. @@ -1498,6 +1543,139 @@ Você quer fazer isso agora? Mods de conteúdo completo + + ObjectSelector + + + Select Objects + + + + + Objects + Objetos + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + Ação + + + + Other + Outro + + + + All + Todos + + + + None + Nenhum + + + + Creature bank + + + + + Bonus + Bônus + + + + Dwelling + + + + + Resource + Recurso + + + + Resource generator + + + + + Spell scroll + Pergaminho de feitiço + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + Excluir + + + + + Object + + + + + Value + Valor + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1639,12 +1817,17 @@ Você quer fazer isso agora? Experiente - + Default secondary skills: Habilidades secundárias padrão: - + + Random hero secondary skills + + + + Secondary skills: Habilidades secundárias: @@ -2001,22 +2184,22 @@ Você quer fazer isso agora? INMARCÁVEL - + Can't place object Não é possível colocar o objeto - + There can only be one grail object on the map. Só pode haver um objeto Graal no mapa. - + (submod of %1) (submod de %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2024,19 +2207,19 @@ Add it to the map's required mods in Map->General settings. Adicione-o aos mods obrigatórios do mapa em Mapa->Configurações gerais. - + Custom Spells: Feitiços personalizados: - + Default Spells Feitiços padrão - + Default Padrão @@ -2175,7 +2358,7 @@ Adicione-o aos mods obrigatórios do mapa em Mapa->Configurações gerais.Edifícios Proibidos: - + Town Events: Eventos da Cidade: @@ -3113,7 +3296,7 @@ Adicione-o aos mods obrigatórios do mapa em Mapa->Configurações gerais.TemplateEditor - + VCMI Template Editor Editor de Modelos VCMI @@ -3144,8 +3327,8 @@ Adicione-o aos mods obrigatórios do mapa em Mapa->Configurações gerais. - - + + Add Adicionar @@ -3182,21 +3365,21 @@ Adicione-o aos mods obrigatórios do mapa em Mapa->Configurações gerais. - + X X - + Y Y - + Z Z @@ -3223,14 +3406,14 @@ Adicione-o aos mods obrigatórios do mapa em Mapa->Configurações gerais. - - + + None Nenhum - + Normal Normal @@ -3240,406 +3423,431 @@ Adicione-o aos mods obrigatórios do mapa em Mapa->Configurações gerais.Ilhas - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone Zona - + Visualisation Visualização - + Position Posição - - + + Size Tamanho - + ID ID - - + + Type Tipo - + Owner Proprietário - + Zone link Conexão da zona - - - + + + Mines Minas - - + + Custom objects Objetos personalizados - - + + Towns Cidades - - + + Terrain Terreno - - - - + + + + Treasure Tesouro - + Town info Informações da cidade - + Town count Contagem de cidades - - - - + + + + Player Jogador - - - - + + + + Neutral Neutro - + Castle count Contagem de castelos - + Town density Densidade de cidades - + Castle density Densidade de castelos - + Match terrain to town Combinar terreno com a cidade - + Terrain types Tipos de terreno - + Banned terrain types Tipos de terreno proibidos - + Towns are same type Cidades são do mesmo tipo - + Allowed towns Cidades permitidas - + Banned towns Cidades proibidas - + Town hints Dicas da cidade - + Monsters Monstros - + Allowed monsters Monstros permitidos - + Banned monsters Monstros proibidos - + Strength Força - + Objects Objetos - + Connections Conexões - + Open Abrir - + Save Salvar - + New Novo - + Save as... Salvar como... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone Adicionar zona - + Remove zone Remover zona - - + + Del Del - + Auto position Posição automática - + Ctrl+P Ctrl+P - + Zoom in Aumentar zoom - + Ctrl++ Ctrl++ - + Zoom out Diminuir zoom - + Ctrl+- Ctrl+- - + Zoom auto Zoom automático - + Ctrl+Shift+: Ctrl+Shift+: - + Zoom reset Redefinir zoom - + Ctrl+Shift+= Ctrl+Shift+= - + Min Mín - + Max Máx - + Action Ação - - + + Delete Excluir - + ID: %1 ID: %1 - + Max treasure: %1 Tesouro máximo: %1 - + Player start Início do jogador - + CPU start Início da CPU - + Junction Junção - + Water Água - + Sealed Selado - - + + Random Aleatório - + Weak Fraco - + Strong Forte - + Zone A Zona A - + Zone B Zona B - + Guard Guarda - + Road Estrada - + Guarded Guardado - + Fictive Fictício - + Repulsive Repulsivo - + Wide Largo - + Force portal Forçar portal - + Yes Sim - + No Não - + Zone A: %1 Zone B: %2 Guard: %3 @@ -3648,92 +3856,85 @@ Zona B: %2 Guarda: %3 - + Confirmation Confirmação - + Unsaved changes will be lost, are you sure? As alterações não salvas serão perdidas, tem certeza? - + Open template Abrir modelo - + VCMI templates(*.json) Modelos VCMI (*.json) - + Save template Salvar modelo - + VCMI templates (*.json) Modelos VCMI (*.json) - - + + Enter Name Insira o Nome - - + + Name: Nome: - + Already existing! Já existe! - + A template with this name is already existing. Já existe um modelo com este nome. - + To few templates! Modelos insuficientes! - + At least one template should remain after removing. Pelo menos um modelo deve permanecer após a remoção. - - Error - Erro + Erro - - Not implemented yet! - Ainda não implementado! + Ainda não implementado! TerrainSelector - - Select Terrains - Selecionar Terrenos + Selecionar Terrenos - Terrain Selector - Seletor de Terreno + Seletor de Terreno @@ -3938,7 +4139,7 @@ Guarda: %3 TownEventsDelegate - + Day %1 - %2 Dia %1 - %2 @@ -3966,16 +4167,69 @@ Guarda: %3 Remover - + Day %1 - %2 Dia %1 - %2 - + New event Novo evento + + TownHintSelector + + + Select Town hints + + + + + Town hints + Dicas da cidade + + + + Town hint Selector + + + + + Type + Tipo + + + + Value + Valor + + + + Action + Ação + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + Excluir + + TownSpellsWidget @@ -4109,6 +4363,39 @@ Guarda: %3 Action Ação + + + Delete + Excluir + + + + Ts + + + Terrain Selector + Seletor de Terreno + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4334,12 +4621,12 @@ Guarda: %3 GG (144x144) - + Random map Mapa aleatório - + Players Jogadores @@ -4374,20 +4661,25 @@ Guarda: %3 G (252x252) - - - - + + Levels + + + + + + + Random Aleatório - + Human teams Equipes humanas - + Computer teams Equipes do computador @@ -4402,119 +4694,128 @@ Guarda: %3 Tamanho personalizado - Underground - Subterrâneo + Subterrâneo - + Humans Humanos - + Computers Computadores - + Monster strength Força dos monstros - + Weak Fracos - - + + Normal Normal - + Strong Fortes - + Water content Conteúdo de água - + None Nenhum - + Islands Ilhas - + Roads Estradas - + Dirt Terra - + Gravel Cascalho - + Cobblestone Paralelepípedo - - + + Template Modelo - + Custom seed Semente personalizada - + Generate random map Gerar mapa aleatório - + OK OK - + Cancel Cancelar - + No template Sem modelo - + No template for parameters specified. Random map cannot be generated. Sem modelo para os parâmetros especificados. O mapa aleatório não pode set gerado. - + RMG failure Falha do GMA - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] [padrão] diff --git a/mapeditor/translation/romanian.ts b/mapeditor/translation/romanian.ts index f97b6ef14..be870cc5c 100644 --- a/mapeditor/translation/romanian.ts +++ b/mapeditor/translation/romanian.ts @@ -320,52 +320,61 @@ Video de încheiere - + Custom AI-generated, needs review by native speaker; delete this comment afterwards Personalizat - + Infix AI-generated, needs review by native speaker; delete this comment afterwards Infix - + X - + Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards Poziție etichetă X - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards Poziție etichetă Y - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards Mai puține scenarii - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards Configurarea noii regiuni suportă mai puține scenarii decât înainte. Unele vor fi eliminate. Continuă? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -393,7 +402,7 @@ Șterge - + New event AI-generated, needs review by native speaker; delete this comment afterwards Eveniment nou @@ -585,31 +594,31 @@ Personalizează vrăji - + Level 1 AI-generated, needs review by native speaker; delete this comment afterwards Nivel 1 - + Level 2 AI-generated, needs review by native speaker; delete this comment afterwards Nivel 2 - + Level 3 AI-generated, needs review by native speaker; delete this comment afterwards Nivel 3 - + Level 4 AI-generated, needs review by native speaker; delete this comment afterwards Nivel 4 - + Level 5 AI-generated, needs review by native speaker; delete this comment afterwards Nivel 5 @@ -676,7 +685,7 @@ MainWindow - + VCMI Map Editor Editor de hărți VCMI @@ -865,8 +874,6 @@ - - View underground AI-generated, needs review by native speaker; delete this comment afterwards Vezi subteran @@ -1042,9 +1049,9 @@ - - - + + + Update appearance AI-generated, needs review by native speaker; delete this comment afterwards Actualizează apariția @@ -1274,284 +1281,322 @@ Ctrl+Shift+= - + Confirmation AI-generated, needs review by native speaker; delete this comment afterwards Confirmare - + Unsaved changes will be lost, are you sure? AI-generated, needs review by native speaker; delete this comment afterwards Modificările nesalvate vor fi pierdute, ești sigur? - + + Surface + + + + + Underground + Subteran + + + + Level - %1 + + + + Mods are required AI-generated, needs review by native speaker; delete this comment afterwards Sunt necesare moduri - + Failed to open map AI-generated, needs review by native speaker; delete this comment afterwards Nu s-a putut deschide harta - + Open map AI-generated, needs review by native speaker; delete this comment afterwards Deschide hartă - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards Toate hărțile suportate (*.vmap *.h3m);;Hărți VCMI(*.vmap);;Hărți HoMM3(*.h3m) - + Recently Opened Files AI-generated, needs review by native speaker; delete this comment afterwards Fișiere deschise recent - + Map validation AI-generated, needs review by native speaker; delete this comment afterwards Validare hartă - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Harta are probleme critice și cel mai probabil nu va fi jucabilă. Deschide Validatorul din meniul Hartă pentru a vedea problemele găsite - + Map has some errors. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Harta are unele erori. Deschide Validatorul din meniul Hartă pentru a vedea problemele găsite - + Failed to save map AI-generated, needs review by native speaker; delete this comment afterwards Nu s-a putut salva harta - + Save map AI-generated, needs review by native speaker; delete this comment afterwards Salvează hartă - + VCMI maps (*.vmap) AI-generated, needs review by native speaker; delete this comment afterwards Hărți VCMI (*.vmap) - + Type AI-generated, needs review by native speaker; delete this comment afterwards Tip - + Towns AI-generated, needs review by native speaker; delete this comment afterwards Orașe - + Objects AI-generated, needs review by native speaker; delete this comment afterwards Obiecte - + Heroes AI-generated, needs review by native speaker; delete this comment afterwards Eroi - + Artifacts AI-generated, needs review by native speaker; delete this comment afterwards Artefacte - + Resources AI-generated, needs review by native speaker; delete this comment afterwards Resurse - + Banks AI-generated, needs review by native speaker; delete this comment afterwards Bănci - + Dwellings AI-generated, needs review by native speaker; delete this comment afterwards Locuințe - + Grounds AI-generated, needs review by native speaker; delete this comment afterwards Terenuri - + Teleports AI-generated, needs review by native speaker; delete this comment afterwards Teleportați - + Mines AI-generated, needs review by native speaker; delete this comment afterwards Mine - + Triggers AI-generated, needs review by native speaker; delete this comment afterwards Declanșatori - + Monsters AI-generated, needs review by native speaker; delete this comment afterwards Monștri - + Quests AI-generated, needs review by native speaker; delete this comment afterwards Misiuni - + Wog Objects AI-generated, needs review by native speaker; delete this comment afterwards Obiecte WoG - + Obstacles AI-generated, needs review by native speaker; delete this comment afterwards Obstacole - + Other AI-generated, needs review by native speaker; delete this comment afterwards Altele - + Mods loading problem AI-generated, needs review by native speaker; delete this comment afterwards Problemă la încărcarea modurilor - + Critical error during Mods loading. Disable invalid mods and restart. AI-generated, needs review by native speaker; delete this comment afterwards Eroare critică în timpul încărcării modurilor. Dezactivează modurile invalide și repornește. - - - View surface - AI-generated, needs review by native speaker; delete this comment afterwards - Vezi suprafața + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + AI-generated, needs review by native speaker; delete this comment afterwards + Vezi suprafața + + + No objects selected AI-generated, needs review by native speaker; delete this comment afterwards Niciun obiect selectat - + This operation is irreversible. Do you want to continue? AI-generated, needs review by native speaker; delete this comment afterwards Această operațiune este ireversibilă. Vrei să continui? - + Errors occurred. %1 objects were not updated AI-generated, needs review by native speaker; delete this comment afterwards Au apărut erori. %1 obiecte nu au fost actualizate - + Save to image AI-generated, needs review by native speaker; delete this comment afterwards Salvează ca imagine - + Select maps to convert AI-generated, needs review by native speaker; delete this comment afterwards Selectează hărțile de convertit - + HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards Hărți HoMM3 (*.h3m) - + Choose directory to save converted maps AI-generated, needs review by native speaker; delete this comment afterwards Alege directorul pentru a salva hărțile convertite - + Operation completed AI-generated, needs review by native speaker; delete this comment afterwards Operațiune finalizată - + Successfully converted %1 maps AI-generated, needs review by native speaker; delete this comment afterwards %1 hărți convertite cu succes - + Failed to convert the map. Abort operation AI-generated, needs review by native speaker; delete this comment afterwards Conversia hărții a eșuat. Se oprește operațiunea - + Select campaign to convert AI-generated, needs review by native speaker; delete this comment afterwards Selectează campania de convertit - + HoMM3 campaigns (*.h3c) AI-generated, needs review by native speaker; delete this comment afterwards Campanii HoMM3 (*.h3c) - + Select destination file AI-generated, needs review by native speaker; delete this comment afterwards Selectează fișierul de destinație - + VCMI campaigns (*.vcmp) AI-generated, needs review by native speaker; delete this comment afterwards Campanii VCMI (*.vcmp) @@ -1560,19 +1605,19 @@ MapController - + Hero %1 cannot be created as NEUTRAL. AI-generated, needs review by native speaker; delete this comment afterwards Eroul %1 nu poate fi creat ca NEUTRU. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards Mod necesar lipsă - + Do you want to do that now ? @@ -1583,7 +1628,7 @@ Do you want to do that now ? Vrei să faci asta acum? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards Modul acestui obiect este obligatoriu pentru ca harta să rămână validă. @@ -1769,6 +1814,139 @@ Vrei să faci asta acum? Moduri cu conținut complet + + ObjectSelector + + + Select Objects + + + + + Objects + Obiecte + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Altele + + + + All + Toate + + + + None + Niciunul + + + + Creature bank + + + + + Bonus + Bonus + + + + Dwelling + + + + + Resource + Resursă + + + + Resource generator + + + + + Spell scroll + Pergament cu vrajă + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Valoare + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1926,13 +2104,18 @@ Vrei să faci asta acum? Expert - + Default secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Abilități secundare implicite: - + + Random hero secondary skills + + + + Secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Abilități secundare: @@ -2350,25 +2533,25 @@ Vrei să faci asta acum? NEETICHETABIL - + Can't place object AI-generated, needs review by native speaker; delete this comment afterwards Nu se poate plasa obiectul - + There can only be one grail object on the map. AI-generated, needs review by native speaker; delete this comment afterwards Poate exista un singur obiect cu potir pe hartă. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (submodul din %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2377,21 +2560,21 @@ Add it to the map's required mods in Map->General settings. Adaugă-l în modurile necesare ale hărții din Hartă->Setări generale. - + Custom Spells: AI-generated, needs review by native speaker; delete this comment afterwards Vrăji personalizate: - + Default Spells AI-generated, needs review by native speaker; delete this comment afterwards Vrăji implicite - + Default AI-generated, needs review by native speaker; delete this comment afterwards Implicit @@ -2556,7 +2739,7 @@ Adaugă-l în modurile necesare ale hărții din Hartă->Setări generale.Clădiri interzise: - + Town Events: AI-generated, needs review by native speaker; delete this comment afterwards Evenimente în oraș: @@ -3663,7 +3846,7 @@ Adaugă-l în modurile necesare ale hărții din Hartă->Setări generale.TemplateEditor - + VCMI Template Editor @@ -3694,8 +3877,8 @@ Adaugă-l în modurile necesare ale hărții din Hartă->Setări generale. - - + + Add Adaugă @@ -3732,21 +3915,21 @@ Adaugă-l în modurile necesare ale hărții din Hartă->Setări generale. - + X - + Y - + Z @@ -3773,14 +3956,14 @@ Adaugă-l în modurile necesare ale hărții din Hartă->Setări generale. - - + + None Niciunul - + Normal Normală @@ -3790,498 +3973,501 @@ Adaugă-l în modurile necesare ale hărții din Hartă->Setări generale.Insule - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type Tip - + Owner Proprietar - + Zone link - - - + + + Mines Mine - - + + Custom objects - - + + Towns Orașe - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Jucător - - - - + + + + Neutral Neutru - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Monștri - + Allowed monsters - + Banned monsters - + Strength - + Objects Obiecte - + Connections - + Open Deschide - + Save Salvează - + New Nou - + Save as... Salvează ca... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Mărește - + Ctrl++ Ctrl++ - + Zoom out Micșorează - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Resetare zoom - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random Aleatoriu - + Weak Slabă - + Strong Puternică - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Confirmare - + Unsaved changes will be lost, are you sure? Modificările nesalvate vor fi pierdute, ești sigur? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Eroare - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Eroare @@ -4524,7 +4710,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Ziua %1 - %2 @@ -4557,18 +4743,71 @@ Guard: %3 Elimină - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Ziua %1 - %2 - + New event AI-generated, needs review by native speaker; delete this comment afterwards Eveniment nou + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + Tip + + + + Value + Valoare + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4719,6 +4958,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4987,13 +5259,13 @@ Guard: %3 XL (144x144) - + Random map AI-generated, needs review by native speaker; delete this comment afterwards Hartă aleatorie - + Players AI-generated, needs review by native speaker; delete this comment afterwards Jucători @@ -5035,22 +5307,27 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random AI-generated, needs review by native speaker; delete this comment afterwards Aleatoriu - + Human teams AI-generated, needs review by native speaker; delete this comment afterwards Echipe umane - + Computer teams AI-generated, needs review by native speaker; delete this comment afterwards Echipe computer @@ -5068,141 +5345,150 @@ Guard: %3 Dimensiune personalizată - Underground AI-generated, needs review by native speaker; delete this comment afterwards - Subteran + Subteran - + Humans AI-generated, needs review by native speaker; delete this comment afterwards Oameni - + Computers AI-generated, needs review by native speaker; delete this comment afterwards Computere - + Monster strength AI-generated, needs review by native speaker; delete this comment afterwards Puterea monștrilor - + Weak AI-generated, needs review by native speaker; delete this comment afterwards Slabă - - + + Normal AI-generated, needs review by native speaker; delete this comment afterwards Normală - + Strong AI-generated, needs review by native speaker; delete this comment afterwards Puternică - + Water content AI-generated, needs review by native speaker; delete this comment afterwards Conținut de apă - + None AI-generated, needs review by native speaker; delete this comment afterwards Niciunul - + Islands AI-generated, needs review by native speaker; delete this comment afterwards Insule - + Roads AI-generated, needs review by native speaker; delete this comment afterwards Drumuri - + Dirt AI-generated, needs review by native speaker; delete this comment afterwards Pământ - + Gravel AI-generated, needs review by native speaker; delete this comment afterwards Pietriș - + Cobblestone AI-generated, needs review by native speaker; delete this comment afterwards Pavaj - - + + Template AI-generated, needs review by native speaker; delete this comment afterwards Șablon - + Custom seed AI-generated, needs review by native speaker; delete this comment afterwards Sămânță personalizată - + Generate random map AI-generated, needs review by native speaker; delete this comment afterwards Generează hartă aleatorie - + OK AI-generated, needs review by native speaker; delete this comment afterwards OK - + Cancel AI-generated, needs review by native speaker; delete this comment afterwards Anulează - + No template AI-generated, needs review by native speaker; delete this comment afterwards Fără șablon - + No template for parameters specified. Random map cannot be generated. AI-generated, needs review by native speaker; delete this comment afterwards Nu există șablon pentru parametrii specificați. Harta aleatorie nu poate fi generată. - + RMG failure AI-generated, needs review by native speaker; delete this comment afterwards Eroare RMG - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] AI-generated, needs review by native speaker; delete this comment afterwards [implicit] diff --git a/mapeditor/translation/russian.ts b/mapeditor/translation/russian.ts index d0a849a79..585965c32 100644 --- a/mapeditor/translation/russian.ts +++ b/mapeditor/translation/russian.ts @@ -297,52 +297,61 @@ Заключительное видео - + Custom AI-generated, needs review by native speaker; delete this comment afterwards Пользовательский - + Infix AI-generated, needs review by native speaker; delete this comment afterwards Инфикс - + X - + Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards Позиция метки X - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards Позиция метки Y - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards Меньше сценариев - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards Новая настройка региона поддерживает меньше сценариев, чем раньше. Некоторые будут удалены. Продолжить? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -366,7 +375,7 @@ Удалить - + New event Новое событие @@ -533,27 +542,27 @@ Настроить заклинания - + Level 1 Уровень 1 - + Level 2 Уровень 2 - + Level 3 Уровень 3 - + Level 4 Уровень 4 - + Level 5 Уровень 5 @@ -610,7 +619,7 @@ MainWindow - + VCMI Map Editor Редактор карт VCMI @@ -774,8 +783,6 @@ - - View underground Вид на подземелье @@ -935,9 +942,9 @@ - - - + + + Update appearance Обновить вид @@ -1141,249 +1148,287 @@ Ctrl+Shift+= - + Confirmation Подтверждение - + Unsaved changes will be lost, are you sure? Несохранённые изменения будут потеряны. Вы уверены? - + + Surface + + + + + Underground + Подземелье + + + + Level - %1 + + + + Mods are required AI-generated, needs review by native speaker; delete this comment afterwards Требуются моды - + Failed to open map AI-generated, needs review by native speaker; delete this comment afterwards Не удалось открыть карту - + Open map Открыть карту - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) Все поддерживаемые карты (*.vmap *.h3m);;Карты VCMI (*.vmap);;Карты Героев III (*.h3m) - + Recently Opened Files Недавно открытые файлы - + Map validation AI-generated, needs review by native speaker; delete this comment afterwards Проверка карты - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Карта содержит критические ошибки и, скорее всего, будет непригодна для игры. Откройте Валидатор в меню Карта, чтобы просмотреть найденные проблемы - + Map has some errors. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Карта содержит ошибки. Откройте Валидатор в меню Карта, чтобы просмотреть найденные проблемы - + Failed to save map AI-generated, needs review by native speaker; delete this comment afterwards Не удалось сохранить карту - + Save map Сохранить карту - + VCMI maps (*.vmap) Карты VCMI (*.vmap) - + Type Тип - + Towns Города - + Objects Объекты - + Heroes Герои - + Artifacts Артефакты - + Resources Ресурсы - + Banks Банки - + Dwellings Жилища - + Grounds Покрытия - + Teleports Телепорты - + Mines Шахты - + Triggers Триггеры - + Monsters Монстры - + Quests Квесты - + Wog Objects Объекты WoG - + Obstacles Препятствия - + Other Прочее - + Mods loading problem AI-generated, needs review by native speaker; delete this comment afterwards Проблема загрузки модов - + Critical error during Mods loading. Disable invalid mods and restart. AI-generated, needs review by native speaker; delete this comment afterwards Критическая ошибка при загрузке модов. Отключите неверные моды и перезапустите. - - - View surface - Вид на поверхность + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + Вид на поверхность + + + No objects selected Объекты не выбраны - + This operation is irreversible. Do you want to continue? Эта операция необратима. Хотите продолжить? - + Errors occurred. %1 objects were not updated Произошли ошибки. %1 объектов не было обновлено - + Save to image Сохранить как изображение - + Select maps to convert Выберите карты для конвертации - + HoMM3 maps(*.h3m) Карты HoMM3 (*.h3m) - + Choose directory to save converted maps Выберите каталог для сохранения конвертированных карт - + Operation completed Операция завершена - + Successfully converted %1 maps Успешно конвертировано %1 карт - + Failed to convert the map. Abort operation Не удалось конвертировать карту. Операция прервана - + Select campaign to convert AI-generated, needs review by native speaker; delete this comment afterwards Выберите кампанию для конвертации - + HoMM3 campaigns (*.h3c) AI-generated, needs review by native speaker; delete this comment afterwards Кампании HoMM3 (*.h3c) - + Select destination file AI-generated, needs review by native speaker; delete this comment afterwards Выберите файл назначения - + VCMI campaigns (*.vcmp) AI-generated, needs review by native speaker; delete this comment afterwards Кампании VCMI (*.vcmp) @@ -1392,18 +1437,18 @@ MapController - + Hero %1 cannot be created as NEUTRAL. Герой %1 не может быть создан как НЕЙТРАЛЬНЫЙ. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards Отсутствует обязательный мод - + Do you want to do that now ? @@ -1414,7 +1459,7 @@ Do you want to do that now ? Хотите сделать это сейчас? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards Мод этого объекта обязателен, чтобы карта оставалась допустимой. @@ -1576,6 +1621,139 @@ Do you want to do that now ? Моды полного контента + + ObjectSelector + + + Select Objects + + + + + Objects + Объекты + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Прочее + + + + All + Все + + + + None + Нет + + + + Creature bank + + + + + Bonus + Бонус + + + + Dwelling + + + + + Resource + Ресурс + + + + Resource generator + + + + + Spell scroll + Свиток заклинания + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Значение + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1721,13 +1899,18 @@ Do you want to do that now ? Эксперт - + Default secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Навыки по умолчанию: - + + Random hero secondary skills + + + + Secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Вторичные навыки: @@ -2128,23 +2311,23 @@ Do you want to do that now ? НЕФЛАГУЕМЫЙ - + Can't place object Невозможно разместить объект - + There can only be one grail object on the map. На карте может быть только один Грааль. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (подмод %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2153,21 +2336,21 @@ Add it to the map's required mods in Map->General settings. Добавьте его в список требуемых модов в Карта -> Общие настройки. - + Custom Spells: AI-generated, needs review by native speaker; delete this comment afterwards Пользовательские заклинания: - + Default Spells AI-generated, needs review by native speaker; delete this comment afterwards Заклинания по умолчанию - + Default По умолчанию @@ -2331,7 +2514,7 @@ Add it to the map's required mods in Map->General settings. Запрещённые здания: - + Town Events: AI-generated, needs review by native speaker; delete this comment afterwards События в городе: @@ -3342,7 +3525,7 @@ Add it to the map's required mods in Map->General settings. TemplateEditor - + VCMI Template Editor @@ -3373,8 +3556,8 @@ Add it to the map's required mods in Map->General settings. - - + + Add Добавить @@ -3411,21 +3594,21 @@ Add it to the map's required mods in Map->General settings. - + X - + Y - + Z @@ -3452,14 +3635,14 @@ Add it to the map's required mods in Map->General settings. - - + + None Нет - + Normal Нормально @@ -3469,498 +3652,501 @@ Add it to the map's required mods in Map->General settings. Острова - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type Тип - + Owner Владелец - + Zone link - - - + + + Mines Шахты - - + + Custom objects - - + + Towns Города - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Игрок - - - - + + + + Neutral Нейтральный - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Монстры - + Allowed monsters - + Banned monsters - + Strength - + Objects Объекты - + Connections - + Open Открыть - + Save Сохранить - + New Создать - + Save as... Сохранить как - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Приблизить - + Ctrl++ Ctrl++ - + Zoom out Отдалить - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Сбросить масштаб - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random Случайно - + Weak Слабо - + Strong Сильно - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Подтверждение - + Unsaved changes will be lost, are you sure? Несохранённые изменения будут потеряны. Вы уверены? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Ошибка - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Ошибка @@ -4165,7 +4351,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 День %1 - %2 @@ -4193,16 +4379,69 @@ Guard: %3 Удалить - + Day %1 - %2 День %1 - %2 - + New event Новое событие + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + Тип + + + + Value + Значение + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4336,6 +4575,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4564,12 +4836,12 @@ Guard: %3 Гиг. (144x144) - + Random map Случайная карта - + Players Игроки @@ -4604,20 +4876,25 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random Случайно - + Human teams Команды людей - + Computer teams Команды компьютера @@ -4634,122 +4911,131 @@ Guard: %3 Пользовательский размер - Underground AI-generated, needs review by native speaker; delete this comment afterwards - Подземелье + Подземелье - + Humans AI-generated, needs review by native speaker; delete this comment afterwards Люди - + Computers AI-generated, needs review by native speaker; delete this comment afterwards Компьютеры - + Monster strength Сила монстров - + Weak Слабо - - + + Normal Нормально - + Strong Сильно - + Water content Вода - + None Нет - + Islands Острова - + Roads Дороги - + Dirt Грунт - + Gravel Гравий - + Cobblestone Булыжник - - + + Template Шаблон - + Custom seed Пользовательское зерно - + Generate random map Сгенерировать случайную карту - + OK ОК - + Cancel Отмена - + No template Без шаблона - + No template for parameters specified. Random map cannot be generated. Шаблон для указанных параметров отсутствует. Случайная карта не может быть создана. - + RMG failure Ошибка генерации случайной карты - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] AI-generated, needs review by native speaker; delete this comment afterwards [по умолчанию] diff --git a/mapeditor/translation/spanish.ts b/mapeditor/translation/spanish.ts index 711a096b6..8c6fca515 100644 --- a/mapeditor/translation/spanish.ts +++ b/mapeditor/translation/spanish.ts @@ -296,52 +296,61 @@ Video de cierre - + Custom AI-generated, needs review by native speaker; delete this comment afterwards Personalizado - + Infix AI-generated, needs review by native speaker; delete this comment afterwards Infijo - + X - + Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards Posición de la etiqueta X - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards Posición de la etiqueta Y - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards Menos escenarios - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards La nueva configuración de la región admite menos escenarios que antes. Algunos serán eliminados. ¿Continuar? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -365,7 +374,7 @@ Eliminar - + New event Nuevo evento @@ -532,27 +541,27 @@ Personalizar hechizos - + Level 1 Nivel 1 - + Level 2 Nivel 2 - + Level 3 Nivel 3 - + Level 4 Nivel 4 - + Level 5 Nivel 5 @@ -609,7 +618,7 @@ MainWindow - + VCMI Map Editor Editor de Mapas de VCMI @@ -773,8 +782,6 @@ - - View underground Ver subterráneo @@ -934,9 +941,9 @@ - - - + + + Update appearance Actualizar apariencia @@ -1140,238 +1147,276 @@ Ctrl+Shift+= - + Confirmation Confirmación - + Unsaved changes will be lost, are you sure? Los cambios no guardados se perderán. Está usted seguro ? - + + Surface + + + + + Underground + Subterráneo + + + + Level - %1 + + + + Mods are required Se requieren mods - + Failed to open map Error al abrir el mapa - + Open map Abrir mapa - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) Todos los mapas soportados (*.vmap *.h3m);;Mapas VCMI (*.vmap);;Mapas HoMM3 (*.h3m) - + Recently Opened Files Archivos abiertos recientemente - + Map validation Validación del mapa - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found El mapa tiene problemas críticos y probablemente no será jugable. Abre el Validador en el menú de Mapa para ver los problemas encontrados - + Map has some errors. Open Validator from the Map menu to see issues found El mapa tiene algunos errores. Abre el Validador en el menú de Mapa para ver los problemas encontrados - + Failed to save map Error al guardar el mapa - + Save map Guardar mapa - + VCMI maps (*.vmap) Mapas VCMI (*.vmap) - + Type Tipo - + Towns Ciudades - + Objects Objetos - + Heroes Héroes - + Artifacts Artefactos - + Resources Recursos - + Banks Bancos - + Dwellings Viviendas - + Grounds Terrenos - + Teleports Teletransportes - + Mines Minas - + Triggers Disparadores - + Monsters Monstruos - + Quests Misiones - + Wog Objects Objetos de WoG - + Obstacles Obstáculos - + Other Otros - + Mods loading problem Problema al cargar mods - + Critical error during Mods loading. Disable invalid mods and restart. Error crítico al cargar mods. Desactiva los mods no válidos y reinicia. - - - View surface - Ver superficie + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + Ver superficie + + + No objects selected No se han seleccionado objetos - + This operation is irreversible. Do you want to continue? Esta operación es irreversible. ¿Quieres continuar? - + Errors occurred. %1 objects were not updated Se produjeron errores. %1 objetos no fueron actualizados - + Save to image Guardar como imagen - + Select maps to convert Seleccionar mapas para convertir - + HoMM3 maps(*.h3m) Mapas HoMM3 (*.h3m) - + Choose directory to save converted maps Elegir directorio para guardar los mapas convertidos - + Operation completed Operación completada - + Successfully converted %1 maps %1 mapas convertidos exitosamente - + Failed to convert the map. Abort operation Error al convertir el mapa. Operación abortada - + Select campaign to convert Seleccionar campaña para convertir - + HoMM3 campaigns (*.h3c) Campañas HoMM3 (*.h3c) - + Select destination file Seleccionar archivo de destino - + VCMI campaigns (*.vcmp) Campañas VCMI (*.vcmp) @@ -1379,18 +1424,18 @@ MapController - + Hero %1 cannot be created as NEUTRAL. El héroe %1 no puede ser creado como NEUTRAL. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards Falta un mod requerido - + Do you want to do that now ? @@ -1401,7 +1446,7 @@ Do you want to do that now ? ¿Quieres hacerlo ahora? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards El mod de este objeto es obligatorio para que el mapa siga siendo válido. @@ -1563,6 +1608,139 @@ Do you want to do that now ? Mods de contenido completo + + ObjectSelector + + + Select Objects + + + + + Objects + Objetos + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Otros + + + + All + Todos + + + + None + Ninguno + + + + Creature bank + + + + + Bonus + Bonificación + + + + Dwelling + + + + + Resource + Recurso + + + + Resource generator + + + + + Spell scroll + Pergamino de hechizo + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Valor + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1708,12 +1886,17 @@ Do you want to do that now ? Experto - + Default secondary skills: Habilidades secundarias predeterminadas: - + + Random hero secondary skills + + + + Secondary skills: Habilidades secundarias: @@ -2070,23 +2253,23 @@ Do you want to do that now ? INCAPTURABLE - + Can't place object No se puede colocar objeto - + There can only be one grail object on the map. Solo puede haber un objeto de Grial en el mapa. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (submod de %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2095,19 +2278,19 @@ Add it to the map's required mods in Map->General settings. Agrégalo a los mods requeridos del mapa en Mapa->Configuración general. - + Custom Spells: Hechizos personalizados: - + Default Spells Hechizos predeterminados - + Default Por defecto @@ -2246,7 +2429,7 @@ Agrégalo a los mods requeridos del mapa en Mapa->Configuración general.Edificios prohibidos: - + Town Events: Eventos de ciudad: @@ -3252,7 +3435,7 @@ Agrégalo a los mods requeridos del mapa en Mapa->Configuración general.TemplateEditor - + VCMI Template Editor @@ -3283,8 +3466,8 @@ Agrégalo a los mods requeridos del mapa en Mapa->Configuración general. - - + + Add Añadir @@ -3321,21 +3504,21 @@ Agrégalo a los mods requeridos del mapa en Mapa->Configuración general. - + X - + Y - + Z @@ -3362,14 +3545,14 @@ Agrégalo a los mods requeridos del mapa en Mapa->Configuración general. - - + + None Ninguno - + Normal Normal @@ -3379,498 +3562,501 @@ Agrégalo a los mods requeridos del mapa en Mapa->Configuración general.Islas - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type Tipo - + Owner Propietario - + Zone link - - - + + + Mines Minas - - + + Custom objects - - + + Towns Ciudades - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Jugador - - - - + + + + Neutral Neutral - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Monstruos - + Allowed monsters - + Banned monsters - + Strength - + Objects Objetos - + Connections - + Open Abrir - + Save Guardar - + New Nuevo - + Save as... Guardar como... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Acercar - + Ctrl++ Ctrl++ - + Zoom out Alejar - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Restablecer zoom - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random Aleatorio - + Weak Débil - + Strong Fuerte - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Confirmación - + Unsaved changes will be lost, are you sure? Los cambios no guardados se perderán. Está usted seguro ? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Error - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Error @@ -4075,7 +4261,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 Día %1 - %2 @@ -4103,16 +4289,69 @@ Guard: %3 Eliminar - + Day %1 - %2 Día %1 - %2 - + New event Nuevo evento + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + Tipo + + + + Value + Valor + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4246,6 +4485,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4473,12 +4745,12 @@ Guard: %3 XL (144x144) - + Random map Mapa aleatorio - + Players Jugadores @@ -4513,20 +4785,25 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random Aleatorio - + Human teams Equipos humanos - + Computer teams Equipos de la IA @@ -4541,119 +4818,128 @@ Guard: %3 Tamaño personalizado - Underground - Subterráneo + Subterráneo - + Humans Humanos - + Computers Ordenadores - + Monster strength Fuerza de monstruos - + Weak Débil - - + + Normal Normal - + Strong Fuerte - + Water content Contenido del agua - + None Ninguno - + Islands Islas - + Roads Caminos - + Dirt Tierra - + Gravel Grava - + Cobblestone Adoquines - - + + Template Plantilla - + Custom seed Semilla personalizada - + Generate random map Generar un mapa aleatorio - + OK Aceptar - + Cancel Cancelar - + No template Sin plantilla - + No template for parameters specified. Random map cannot be generated. No hay plantilla para los parámetros especificados. No se puede generar un mapa aleatorio. - + RMG failure Error en el generador de mapas aleatorios - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] [predeterminado] diff --git a/mapeditor/translation/swedish.ts b/mapeditor/translation/swedish.ts index d58c347c3..10df27c91 100644 --- a/mapeditor/translation/swedish.ts +++ b/mapeditor/translation/swedish.ts @@ -320,52 +320,61 @@ Outrovideo - + Custom AI-generated, needs review by native speaker; delete this comment afterwards Anpassad - + Infix AI-generated, needs review by native speaker; delete this comment afterwards Infogning - + X - + Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards Etikett Pos X - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards Etikett Pos Y - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards Färre scenarier - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards Den nya regionsinställningen stöder färre scenarier än tidigare. Vissa kommer tas bort. Fortsätta? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -393,7 +402,7 @@ Ta bort - + New event AI-generated, needs review by native speaker; delete this comment afterwards Ny händelse @@ -585,31 +594,31 @@ Anpassa besvärjelser - + Level 1 AI-generated, needs review by native speaker; delete this comment afterwards Nivå 1 - + Level 2 AI-generated, needs review by native speaker; delete this comment afterwards Nivå 2 - + Level 3 AI-generated, needs review by native speaker; delete this comment afterwards Nivå 3 - + Level 4 AI-generated, needs review by native speaker; delete this comment afterwards Nivå 4 - + Level 5 AI-generated, needs review by native speaker; delete this comment afterwards Nivå 5 @@ -676,7 +685,7 @@ MainWindow - + VCMI Map Editor VCMI kartredigerare @@ -865,8 +874,6 @@ - - View underground AI-generated, needs review by native speaker; delete this comment afterwards Visa underjord @@ -1042,9 +1049,9 @@ - - - + + + Update appearance AI-generated, needs review by native speaker; delete this comment afterwards Uppdatera utseende @@ -1274,284 +1281,322 @@ Ctrl+Shift+= - + Confirmation AI-generated, needs review by native speaker; delete this comment afterwards Bekräftelse - + Unsaved changes will be lost, are you sure? AI-generated, needs review by native speaker; delete this comment afterwards Osparade ändringar kommer att gå förlorade, är du säker? - + + Surface + + + + + Underground + Underjord + + + + Level - %1 + + + + Mods are required AI-generated, needs review by native speaker; delete this comment afterwards Moddar krävs - + Failed to open map AI-generated, needs review by native speaker; delete this comment afterwards Det gick inte att öppna kartan - + Open map AI-generated, needs review by native speaker; delete this comment afterwards Öppna karta - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards Alla stödda kartor (*.vmap *.h3m);;VCMI-kartor (*.vmap);;HoMM3-kartor (*.h3m) - + Recently Opened Files AI-generated, needs review by native speaker; delete this comment afterwards Senast öppnade filer - + Map validation AI-generated, needs review by native speaker; delete this comment afterwards Kartvalidering - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Kartan har kritiska problem och kommer troligen inte att kunna spelas. Öppna validatorn från Kart-menyn för att se upptäckta problem - + Map has some errors. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Kartan har några fel. Öppna validatorn från Kart-menyn för att se upptäckta problem - + Failed to save map AI-generated, needs review by native speaker; delete this comment afterwards Det gick inte att spara kartan - + Save map AI-generated, needs review by native speaker; delete this comment afterwards Spara karta - + VCMI maps (*.vmap) AI-generated, needs review by native speaker; delete this comment afterwards VCMI-kartor (*.vmap) - + Type AI-generated, needs review by native speaker; delete this comment afterwards Typ - + Towns AI-generated, needs review by native speaker; delete this comment afterwards Städer - + Objects AI-generated, needs review by native speaker; delete this comment afterwards Objekt - + Heroes AI-generated, needs review by native speaker; delete this comment afterwards Hjältar - + Artifacts AI-generated, needs review by native speaker; delete this comment afterwards Artefakter - + Resources AI-generated, needs review by native speaker; delete this comment afterwards Resurser - + Banks AI-generated, needs review by native speaker; delete this comment afterwards Banker - + Dwellings AI-generated, needs review by native speaker; delete this comment afterwards Boningshus - + Grounds AI-generated, needs review by native speaker; delete this comment afterwards Marktyper - + Teleports AI-generated, needs review by native speaker; delete this comment afterwards Teleportörer - + Mines AI-generated, needs review by native speaker; delete this comment afterwards Gruvor - + Triggers AI-generated, needs review by native speaker; delete this comment afterwards Utlösare - + Monsters AI-generated, needs review by native speaker; delete this comment afterwards Monster - + Quests AI-generated, needs review by native speaker; delete this comment afterwards Uppdrag - + Wog Objects AI-generated, needs review by native speaker; delete this comment afterwards WoG-objekt - + Obstacles AI-generated, needs review by native speaker; delete this comment afterwards Hinder - + Other AI-generated, needs review by native speaker; delete this comment afterwards Annat - + Mods loading problem AI-generated, needs review by native speaker; delete this comment afterwards Problem med att ladda moddar - + Critical error during Mods loading. Disable invalid mods and restart. AI-generated, needs review by native speaker; delete this comment afterwards Kritiskt fel under modd-laddning. Inaktivera ogiltiga moddar och starta om. - - - View surface - AI-generated, needs review by native speaker; delete this comment afterwards - Visa yta + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + AI-generated, needs review by native speaker; delete this comment afterwards + Visa yta + + + No objects selected AI-generated, needs review by native speaker; delete this comment afterwards Inga objekt valda - + This operation is irreversible. Do you want to continue? AI-generated, needs review by native speaker; delete this comment afterwards Denna åtgärd kan inte ångras. Vill du fortsätta? - + Errors occurred. %1 objects were not updated AI-generated, needs review by native speaker; delete this comment afterwards Fel inträffade. %1 objekt uppdaterades inte - + Save to image AI-generated, needs review by native speaker; delete this comment afterwards Spara som bild - + Select maps to convert AI-generated, needs review by native speaker; delete this comment afterwards Välj kartor att konvertera - + HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards HoMM3-kartor (*.h3m) - + Choose directory to save converted maps AI-generated, needs review by native speaker; delete this comment afterwards Välj katalog för att spara konverterade kartor - + Operation completed AI-generated, needs review by native speaker; delete this comment afterwards Åtgärd slutförd - + Successfully converted %1 maps AI-generated, needs review by native speaker; delete this comment afterwards Lyckades konvertera %1 kartor - + Failed to convert the map. Abort operation AI-generated, needs review by native speaker; delete this comment afterwards Det gick inte att konvertera kartan. Avbryter åtgärden - + Select campaign to convert AI-generated, needs review by native speaker; delete this comment afterwards Välj kampanj att konvertera - + HoMM3 campaigns (*.h3c) AI-generated, needs review by native speaker; delete this comment afterwards HoMM3-kampanjer (*.h3c) - + Select destination file AI-generated, needs review by native speaker; delete this comment afterwards Välj destinationsfil - + VCMI campaigns (*.vcmp) AI-generated, needs review by native speaker; delete this comment afterwards VCMI-kampanjer (*.vcmp) @@ -1560,19 +1605,19 @@ MapController - + Hero %1 cannot be created as NEUTRAL. AI-generated, needs review by native speaker; delete this comment afterwards Hjälte %1 kan inte skapas som NEUTRAL. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards Saknad nödvändig mod - + Do you want to do that now ? @@ -1583,7 +1628,7 @@ Do you want to do that now ? Vill du göra det nu? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards Denna mod är nödvändig för objektet och kartan för att vara giltig. @@ -1769,6 +1814,139 @@ Vill du göra det nu? Moddar med fullständigt innehåll + + ObjectSelector + + + Select Objects + + + + + Objects + Objekt + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Annat + + + + All + Alla + + + + None + Ingen + + + + Creature bank + + + + + Bonus + Bonus + + + + Dwelling + + + + + Resource + Resurs + + + + Resource generator + + + + + Spell scroll + Besvärjelse-rulle + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Värde + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1929,13 +2107,18 @@ Vill du göra det nu? Expert - + Default secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Standard sekundära färdigheter: - + + Random hero secondary skills + + + + Secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Sekundära färdigheter: @@ -2352,25 +2535,25 @@ Vill du göra det nu? KAN INTE FLAGGAS - + Can't place object AI-generated, needs review by native speaker; delete this comment afterwards Kan inte placera objekt - + There can only be one grail object on the map. AI-generated, needs review by native speaker; delete this comment afterwards Det kan bara finnas ett graalobjekt på kartan. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (undermodul till %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2379,21 +2562,21 @@ Add it to the map's required mods in Map->General settings. Lägg till den i kartans obligatoriska moduler i Karta->Allmänna inställningar. - + Custom Spells: AI-generated, needs review by native speaker; delete this comment afterwards Anpassade besvärjelser: - + Default Spells AI-generated, needs review by native speaker; delete this comment afterwards Standardbesvärjelser - + Default AI-generated, needs review by native speaker; delete this comment afterwards Standard @@ -2558,7 +2741,7 @@ Lägg till den i kartans obligatoriska moduler i Karta->Allmänna inställnin Förbjudna byggnader: - + Town Events: AI-generated, needs review by native speaker; delete this comment afterwards Stadshändelser: @@ -3665,7 +3848,7 @@ Lägg till den i kartans obligatoriska moduler i Karta->Allmänna inställnin TemplateEditor - + VCMI Template Editor @@ -3696,8 +3879,8 @@ Lägg till den i kartans obligatoriska moduler i Karta->Allmänna inställnin - - + + Add Lägg till @@ -3734,21 +3917,21 @@ Lägg till den i kartans obligatoriska moduler i Karta->Allmänna inställnin - + X - + Y - + Z @@ -3775,14 +3958,14 @@ Lägg till den i kartans obligatoriska moduler i Karta->Allmänna inställnin - - + + None Ingen - + Normal Normal @@ -3792,498 +3975,501 @@ Lägg till den i kartans obligatoriska moduler i Karta->Allmänna inställnin Öar - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type Typ - + Owner Ägare - + Zone link - - - + + + Mines Gruvor - - + + Custom objects - - + + Towns Städer - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Spelare - - - - + + + + Neutral Neutral - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Monster - + Allowed monsters - + Banned monsters - + Strength - + Objects Objekt - + Connections - + Open Öppna - + Save Spara - + New Ny - + Save as... Spara som... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Zooma in - + Ctrl++ Ctrl++ - + Zoom out Zooma ut - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Återställ zoom - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random Slumpmässig - + Weak Svag - + Strong Stark - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Bekräftelse - + Unsaved changes will be lost, are you sure? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Fel - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Fel @@ -4526,7 +4712,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Dag %1 - %2 @@ -4559,18 +4745,71 @@ Guard: %3 Ta bort - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Dag %1 - %2 - + New event AI-generated, needs review by native speaker; delete this comment afterwards Ny händelse + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + Typ + + + + Value + Värde + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4721,6 +4960,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4989,13 +5261,13 @@ Guard: %3 XL (144x144) - + Random map AI-generated, needs review by native speaker; delete this comment afterwards Slumpmässig karta - + Players AI-generated, needs review by native speaker; delete this comment afterwards Spelare @@ -5037,22 +5309,27 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random AI-generated, needs review by native speaker; delete this comment afterwards Slumpmässig - + Human teams AI-generated, needs review by native speaker; delete this comment afterwards Mänskliga lag - + Computer teams AI-generated, needs review by native speaker; delete this comment afterwards Datorlag @@ -5070,141 +5347,150 @@ Guard: %3 Anpassad storlek - Underground AI-generated, needs review by native speaker; delete this comment afterwards - Underjord + Underjord - + Humans AI-generated, needs review by native speaker; delete this comment afterwards Människor - + Computers AI-generated, needs review by native speaker; delete this comment afterwards Datorer - + Monster strength AI-generated, needs review by native speaker; delete this comment afterwards Monsterstyrka - + Weak AI-generated, needs review by native speaker; delete this comment afterwards Svag - - + + Normal AI-generated, needs review by native speaker; delete this comment afterwards Normal - + Strong AI-generated, needs review by native speaker; delete this comment afterwards Stark - + Water content AI-generated, needs review by native speaker; delete this comment afterwards Vatteninnehåll - + None AI-generated, needs review by native speaker; delete this comment afterwards Ingen - + Islands AI-generated, needs review by native speaker; delete this comment afterwards Öar - + Roads AI-generated, needs review by native speaker; delete this comment afterwards Vägar - + Dirt AI-generated, needs review by native speaker; delete this comment afterwards Jord - + Gravel AI-generated, needs review by native speaker; delete this comment afterwards Grus - + Cobblestone AI-generated, needs review by native speaker; delete this comment afterwards Stenläggning - - + + Template AI-generated, needs review by native speaker; delete this comment afterwards Mall - + Custom seed AI-generated, needs review by native speaker; delete this comment afterwards Anpassat frö - + Generate random map AI-generated, needs review by native speaker; delete this comment afterwards Generera slumpmässig karta - + OK AI-generated, needs review by native speaker; delete this comment afterwards OK - + Cancel AI-generated, needs review by native speaker; delete this comment afterwards Avbryt - + No template AI-generated, needs review by native speaker; delete this comment afterwards Ingen mall - + No template for parameters specified. Random map cannot be generated. AI-generated, needs review by native speaker; delete this comment afterwards Ingen mall för angivna parametrar. Slumpmässig karta kan inte genereras. - + RMG failure AI-generated, needs review by native speaker; delete this comment afterwards RMG-fel - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] AI-generated, needs review by native speaker; delete this comment afterwards [standard] diff --git a/mapeditor/translation/turkish.ts b/mapeditor/translation/turkish.ts index b587cee70..f1b545e59 100644 --- a/mapeditor/translation/turkish.ts +++ b/mapeditor/translation/turkish.ts @@ -320,52 +320,61 @@ Çıkış videosu - + Custom AI-generated, needs review by native speaker; delete this comment afterwards Özel - + Infix AI-generated, needs review by native speaker; delete this comment afterwards İnfiks - + X - + Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards Etiket X konumu - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards Etiket Y konumu - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards Daha az senaryo - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards Yeni bölge ayarı önceye göre daha az senaryoyu destekliyor. Bazıları kaldırılacak. Devam edilsin mi? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -393,7 +402,7 @@ Kaldır - + New event AI-generated, needs review by native speaker; delete this comment afterwards Yeni olay @@ -585,31 +594,31 @@ Büyüleri özelleştir - + Level 1 AI-generated, needs review by native speaker; delete this comment afterwards Seviye 1 - + Level 2 AI-generated, needs review by native speaker; delete this comment afterwards Seviye 2 - + Level 3 AI-generated, needs review by native speaker; delete this comment afterwards Seviye 3 - + Level 4 AI-generated, needs review by native speaker; delete this comment afterwards Seviye 4 - + Level 5 AI-generated, needs review by native speaker; delete this comment afterwards Seviye 5 @@ -676,7 +685,7 @@ MainWindow - + VCMI Map Editor VCMI harita düzenleyicisi @@ -865,8 +874,6 @@ - - View underground AI-generated, needs review by native speaker; delete this comment afterwards Yeraltını göster @@ -1042,9 +1049,9 @@ - - - + + + Update appearance AI-generated, needs review by native speaker; delete this comment afterwards Görünümü güncelle @@ -1274,284 +1281,322 @@ Ctrl+Shift+= - + Confirmation AI-generated, needs review by native speaker; delete this comment afterwards Onay - + Unsaved changes will be lost, are you sure? AI-generated, needs review by native speaker; delete this comment afterwards Kaydedilmemiş değişiklikler kaybolacak, emin misiniz? - + + Surface + + + + + Underground + Yeraltı + + + + Level - %1 + + + + Mods are required AI-generated, needs review by native speaker; delete this comment afterwards Modlar gerekli - + Failed to open map AI-generated, needs review by native speaker; delete this comment afterwards Harita açılamadı - + Open map AI-generated, needs review by native speaker; delete this comment afterwards Harita aç - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards Tüm desteklenen haritalar (*.vmap *.h3m);;VCMI haritaları(*.vmap);;HoMM3 haritaları(*.h3m) - + Recently Opened Files AI-generated, needs review by native speaker; delete this comment afterwards Son açılan dosyalar - + Map validation AI-generated, needs review by native speaker; delete this comment afterwards Harita doğrulama - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Harita kritik sorunlar içeriyor ve büyük ihtimalle oynanamaz. Tespit edilen hataları görmek için Harita menüsünden Doğrulayıcıyı açın - + Map has some errors. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Haritada bazı hatalar var. Tespit edilen hataları görmek için Harita menüsünden Doğrulayıcıyı açın - + Failed to save map AI-generated, needs review by native speaker; delete this comment afterwards Harita kaydedilemedi - + Save map AI-generated, needs review by native speaker; delete this comment afterwards Haritayı kaydet - + VCMI maps (*.vmap) AI-generated, needs review by native speaker; delete this comment afterwards VCMI haritaları (*.vmap) - + Type AI-generated, needs review by native speaker; delete this comment afterwards Tür - + Towns AI-generated, needs review by native speaker; delete this comment afterwards Şehirler - + Objects AI-generated, needs review by native speaker; delete this comment afterwards Nesneler - + Heroes AI-generated, needs review by native speaker; delete this comment afterwards Kahramanlar - + Artifacts AI-generated, needs review by native speaker; delete this comment afterwards Eşyalar - + Resources AI-generated, needs review by native speaker; delete this comment afterwards Kaynaklar - + Banks AI-generated, needs review by native speaker; delete this comment afterwards Bankalar - + Dwellings AI-generated, needs review by native speaker; delete this comment afterwards Yerleşimler - + Grounds AI-generated, needs review by native speaker; delete this comment afterwards Zeminler - + Teleports AI-generated, needs review by native speaker; delete this comment afterwards Işınlanmalar - + Mines AI-generated, needs review by native speaker; delete this comment afterwards Madenler - + Triggers AI-generated, needs review by native speaker; delete this comment afterwards Tetikleyiciler - + Monsters AI-generated, needs review by native speaker; delete this comment afterwards Canavarlar - + Quests AI-generated, needs review by native speaker; delete this comment afterwards Görevler - + Wog Objects AI-generated, needs review by native speaker; delete this comment afterwards Wog Nesneleri - + Obstacles AI-generated, needs review by native speaker; delete this comment afterwards Engeller - + Other AI-generated, needs review by native speaker; delete this comment afterwards Diğer - + Mods loading problem AI-generated, needs review by native speaker; delete this comment afterwards Mod yükleme hatası - + Critical error during Mods loading. Disable invalid mods and restart. AI-generated, needs review by native speaker; delete this comment afterwards Modlar yüklenirken kritik bir hata oluştu. Geçersiz modları devre dışı bırakıp yeniden başlatın. - - - View surface - AI-generated, needs review by native speaker; delete this comment afterwards - Yüzeyi göster + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + AI-generated, needs review by native speaker; delete this comment afterwards + Yüzeyi göster + + + No objects selected AI-generated, needs review by native speaker; delete this comment afterwards Hiçbir nesne seçilmedi - + This operation is irreversible. Do you want to continue? AI-generated, needs review by native speaker; delete this comment afterwards Bu işlem geri alınamaz. Devam etmek istiyor musunuz? - + Errors occurred. %1 objects were not updated AI-generated, needs review by native speaker; delete this comment afterwards Hatalar oluştu. %1 nesne güncellenemedi - + Save to image AI-generated, needs review by native speaker; delete this comment afterwards Görüntü olarak kaydet - + Select maps to convert AI-generated, needs review by native speaker; delete this comment afterwards Dönüştürülecek haritaları seç - + HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards HoMM3 haritaları (*.h3m) - + Choose directory to save converted maps AI-generated, needs review by native speaker; delete this comment afterwards Dönüştürülmüş haritaların kaydedileceği dizini seçin - + Operation completed AI-generated, needs review by native speaker; delete this comment afterwards İşlem tamamlandı - + Successfully converted %1 maps AI-generated, needs review by native speaker; delete this comment afterwards %1 harita başarıyla dönüştürüldü - + Failed to convert the map. Abort operation AI-generated, needs review by native speaker; delete this comment afterwards Harita dönüştürülemedi. İşlem iptal edildi - + Select campaign to convert AI-generated, needs review by native speaker; delete this comment afterwards Dönüştürülecek kampanyayı seç - + HoMM3 campaigns (*.h3c) AI-generated, needs review by native speaker; delete this comment afterwards HoMM3 kampanyaları (*.h3c) - + Select destination file AI-generated, needs review by native speaker; delete this comment afterwards Hedef dosyayı seç - + VCMI campaigns (*.vcmp) AI-generated, needs review by native speaker; delete this comment afterwards VCMI kampanyaları (*.vcmp) @@ -1560,19 +1605,19 @@ MapController - + Hero %1 cannot be created as NEUTRAL. AI-generated, needs review by native speaker; delete this comment afterwards %1 kahramanı NEUTRAL olarak oluşturulamaz. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards Gerekli mod eksik - + Do you want to do that now ? @@ -1583,7 +1628,7 @@ Do you want to do that now ? Bunu şimdi yapmak ister misiniz? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards Bu nesnenin mod'u haritanın geçerli kalması için zorunludur. @@ -1769,6 +1814,139 @@ Bunu şimdi yapmak ister misiniz? Tam içerikli modlar + + ObjectSelector + + + Select Objects + + + + + Objects + Nesneler + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Diğer + + + + All + Tümü + + + + None + + + + + Creature bank + + + + + Bonus + Bonus + + + + Dwelling + + + + + Resource + Kaynak + + + + Resource generator + + + + + Spell scroll + Büyü parşömeni + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Değer + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1929,13 +2107,18 @@ Bunu şimdi yapmak ister misiniz? Usta - + Default secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Varsayılan ikincil yetenekler: - + + Random hero secondary skills + + + + Secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards İkincil yetenekler: @@ -2350,25 +2533,25 @@ Bunu şimdi yapmak ister misiniz? BAYRAKLANAMAZ - + Can't place object AI-generated, needs review by native speaker; delete this comment afterwards Nesne yerleştirilemiyor - + There can only be one grail object on the map. AI-generated, needs review by native speaker; delete this comment afterwards Haritada yalnızca bir kutsal emanet (grail) nesnesi olabilir. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (%1 modunun alt modülü) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2377,21 +2560,21 @@ Add it to the map's required mods in Map->General settings. Harita → Genel ayarlar kısmından gerekli modlar listesine ekleyin. - + Custom Spells: AI-generated, needs review by native speaker; delete this comment afterwards Özel Büyüler: - + Default Spells AI-generated, needs review by native speaker; delete this comment afterwards Varsayılan Büyüler - + Default AI-generated, needs review by native speaker; delete this comment afterwards Varsayılan @@ -2556,7 +2739,7 @@ Harita → Genel ayarlar kısmından gerekli modlar listesine ekleyin.Yasaklı binalar: - + Town Events: AI-generated, needs review by native speaker; delete this comment afterwards Şehir Olayları: @@ -3663,7 +3846,7 @@ Harita → Genel ayarlar kısmından gerekli modlar listesine ekleyin.TemplateEditor - + VCMI Template Editor @@ -3694,8 +3877,8 @@ Harita → Genel ayarlar kısmından gerekli modlar listesine ekleyin. - - + + Add Ekle @@ -3732,21 +3915,21 @@ Harita → Genel ayarlar kısmından gerekli modlar listesine ekleyin. - + X - + Y - + Z @@ -3773,14 +3956,14 @@ Harita → Genel ayarlar kısmından gerekli modlar listesine ekleyin. - - + + None - + Normal Normal @@ -3790,498 +3973,501 @@ Harita → Genel ayarlar kısmından gerekli modlar listesine ekleyin.Adalar - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID Kimlik (ID) - - + + Type Tür - + Owner Sahibi - + Zone link - - - + + + Mines Madenler - - + + Custom objects - - + + Towns Şehirler - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Oyuncu - - - - + + + + Neutral Tarafsız - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Canavarlar - + Allowed monsters - + Banned monsters - + Strength - + Objects Nesneler - + Connections - + Open - + Save Kaydet - + New Yeni - + Save as... Farklı kaydet... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Yakınlaştır - + Ctrl++ Ctrl++ - + Zoom out Uzaklaştır - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Yakınlaştırmayı sıfırla - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random Rastgele - + Weak Zayıf - + Strong Güçlü - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Onay - + Unsaved changes will be lost, are you sure? Kaydedilmemiş değişiklikler kaybolacak, emin misiniz? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Hata - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Hata @@ -4524,7 +4710,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Gün %1 - %2 @@ -4557,18 +4743,71 @@ Guard: %3 Kaldır - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Gün %1 - %2 - + New event AI-generated, needs review by native speaker; delete this comment afterwards Yeni etkinlik + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + Tür + + + + Value + Değer + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4719,6 +4958,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4987,13 +5259,13 @@ Guard: %3 XL (144x144) - + Random map AI-generated, needs review by native speaker; delete this comment afterwards Rastgele harita - + Players AI-generated, needs review by native speaker; delete this comment afterwards Oyuncular @@ -5035,22 +5307,27 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random AI-generated, needs review by native speaker; delete this comment afterwards Rastgele - + Human teams AI-generated, needs review by native speaker; delete this comment afterwards İnsan takımları - + Computer teams AI-generated, needs review by native speaker; delete this comment afterwards Bilgisayar takımları @@ -5068,141 +5345,150 @@ Guard: %3 Özel boyut - Underground AI-generated, needs review by native speaker; delete this comment afterwards - Yeraltı + Yeraltı - + Humans AI-generated, needs review by native speaker; delete this comment afterwards İnsanlar - + Computers AI-generated, needs review by native speaker; delete this comment afterwards Bilgisayarlar - + Monster strength AI-generated, needs review by native speaker; delete this comment afterwards Canavar gücü - + Weak AI-generated, needs review by native speaker; delete this comment afterwards Zayıf - - + + Normal AI-generated, needs review by native speaker; delete this comment afterwards Normal - + Strong AI-generated, needs review by native speaker; delete this comment afterwards Güçlü - + Water content AI-generated, needs review by native speaker; delete this comment afterwards Su içeriği - + None AI-generated, needs review by native speaker; delete this comment afterwards Hiçbiri - + Islands AI-generated, needs review by native speaker; delete this comment afterwards Adalar - + Roads AI-generated, needs review by native speaker; delete this comment afterwards Yollar - + Dirt AI-generated, needs review by native speaker; delete this comment afterwards Toprak - + Gravel AI-generated, needs review by native speaker; delete this comment afterwards Çakıl - + Cobblestone AI-generated, needs review by native speaker; delete this comment afterwards Kaldırım taşı - - + + Template AI-generated, needs review by native speaker; delete this comment afterwards Şablon - + Custom seed AI-generated, needs review by native speaker; delete this comment afterwards Özel tohum - + Generate random map AI-generated, needs review by native speaker; delete this comment afterwards Rastgele harita oluştur - + OK AI-generated, needs review by native speaker; delete this comment afterwards Tamam - + Cancel AI-generated, needs review by native speaker; delete this comment afterwards İptal - + No template AI-generated, needs review by native speaker; delete this comment afterwards Şablon yok - + No template for parameters specified. Random map cannot be generated. AI-generated, needs review by native speaker; delete this comment afterwards Belirtilen parametreler için şablon yok. Rastgele harita oluşturulamaz. - + RMG failure AI-generated, needs review by native speaker; delete this comment afterwards RMG hatası - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] AI-generated, needs review by native speaker; delete this comment afterwards [varsayılan] diff --git a/mapeditor/translation/ukrainian.ts b/mapeditor/translation/ukrainian.ts index af02ab313..410478813 100644 --- a/mapeditor/translation/ukrainian.ts +++ b/mapeditor/translation/ukrainian.ts @@ -299,52 +299,61 @@ Фінальне відео - + Custom AI-generated, needs review by native speaker; delete this comment afterwards Користувацьке - + Infix AI-generated, needs review by native speaker; delete this comment afterwards Інфікс - + X - + Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards Позиція мітки X - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards Позиція мітки Y - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards Менше сценаріїв - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards Налаштування нового регіону підтримує менше сценаріїв, ніж раніше. Деякі будуть видалені. Продовжити? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -368,7 +377,7 @@ Видалити - + New event Нова подія @@ -536,27 +545,27 @@ Користувацькі заклинання - + Level 1 1-й рівень - + Level 2 2-й рівень - + Level 3 3-й рівень - + Level 4 4-й рівень - + Level 5 5-й рівень @@ -613,7 +622,7 @@ MainWindow - + VCMI Map Editor Редактор мап VCMI @@ -777,8 +786,6 @@ - - View underground Дивитись підземелля @@ -938,9 +945,9 @@ - - - + + + Update appearance Оновити вигляд @@ -1158,276 +1165,314 @@ Ctrl+Shift+= - + Confirmation AI-generated, needs review by native speaker; delete this comment afterwards Підтвердження - + Unsaved changes will be lost, are you sure? AI-generated, needs review by native speaker; delete this comment afterwards Незбережені зміни буде втрачено, ви впевнені? - + + Surface + + + + + Underground + Підземелля + + + + Level - %1 + + + + Mods are required AI-generated, needs review by native speaker; delete this comment afterwards Необхідні моди - + Failed to open map AI-generated, needs review by native speaker; delete this comment afterwards Не вдалося відкрити карту - + Open map Відкрити мапу - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) Всі підтримувані мапи (*.vmap *.h3m);;Мапи VCMI (*.vmap);;Мапи HoMM3 (*.h3m) - + Recently Opened Files AI-generated, needs review by native speaker; delete this comment afterwards Останні файли - + Map validation AI-generated, needs review by native speaker; delete this comment afterwards Валідація карти - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards На карті знайдено критичні помилки і, ймовірно, вона не буде придатна для гри. Відкрийте Валідатор у меню Карта, щоб побачити знайдені проблеми - + Map has some errors. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards На карті знайдено деякі помилки. Відкрийте Валідатор у меню Карта, щоб побачити знайдені проблеми - + Failed to save map AI-generated, needs review by native speaker; delete this comment afterwards Не вдалося зберегти карту - + Save map Зберегти мапу - + VCMI maps (*.vmap) Мапи VCMI - + Type Тип - + Towns AI-generated, needs review by native speaker; delete this comment afterwards Міста - + Objects AI-generated, needs review by native speaker; delete this comment afterwards Об’єкти - + Heroes Герої - + Artifacts Артефакти - + Resources AI-generated, needs review by native speaker; delete this comment afterwards Ресурси - + Banks AI-generated, needs review by native speaker; delete this comment afterwards Банки - + Dwellings AI-generated, needs review by native speaker; delete this comment afterwards Житла - + Grounds AI-generated, needs review by native speaker; delete this comment afterwards Місцевості - + Teleports AI-generated, needs review by native speaker; delete this comment afterwards Телепорти - + Mines AI-generated, needs review by native speaker; delete this comment afterwards Шахти - + Triggers AI-generated, needs review by native speaker; delete this comment afterwards Тригери - + Monsters AI-generated, needs review by native speaker; delete this comment afterwards Монстри - + Quests AI-generated, needs review by native speaker; delete this comment afterwards Квести - + Wog Objects AI-generated, needs review by native speaker; delete this comment afterwards Wog‑об’єкти - + Obstacles AI-generated, needs review by native speaker; delete this comment afterwards Перешкоди - + Other AI-generated, needs review by native speaker; delete this comment afterwards Інше - + Mods loading problem AI-generated, needs review by native speaker; delete this comment afterwards Проблема з завантаженням модів - + Critical error during Mods loading. Disable invalid mods and restart. AI-generated, needs review by native speaker; delete this comment afterwards Критична помилка під час завантаження модів. Вимкніть невірні моди та перезапустіть. - - - View surface - Дивитись поверхню + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + Дивитись поверхню + + + No objects selected AI-generated, needs review by native speaker; delete this comment afterwards Об’єкти не вибрані - + This operation is irreversible. Do you want to continue? AI-generated, needs review by native speaker; delete this comment afterwards Ця операція незворотна. Продовжити? - + Errors occurred. %1 objects were not updated AI-generated, needs review by native speaker; delete this comment afterwards Сталися помилки. %1 об’єкт(ів) не було оновлено - + Save to image AI-generated, needs review by native speaker; delete this comment afterwards Зберегти як зображення - + Select maps to convert AI-generated, needs review by native speaker; delete this comment afterwards Виберіть карти для конвертації - + HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards Карти HoMM3 (*.h3m) - + Choose directory to save converted maps AI-generated, needs review by native speaker; delete this comment afterwards Виберіть каталог для збереження конвертованих карт - + Operation completed AI-generated, needs review by native speaker; delete this comment afterwards Операція завершена - + Successfully converted %1 maps AI-generated, needs review by native speaker; delete this comment afterwards Успішно конвертовано %1 карту(и) - + Failed to convert the map. Abort operation AI-generated, needs review by native speaker; delete this comment afterwards Не вдалося конвертувати карту. Аварійне завершення операції - + Select campaign to convert AI-generated, needs review by native speaker; delete this comment afterwards Виберіть кампанію для конвертації - + HoMM3 campaigns (*.h3c) AI-generated, needs review by native speaker; delete this comment afterwards Кампанії HoMM3 (*.h3c) - + Select destination file AI-generated, needs review by native speaker; delete this comment afterwards Виберіть файл призначення - + VCMI campaigns (*.vcmp) AI-generated, needs review by native speaker; delete this comment afterwards Кампанії VCMI (*.vcmp) @@ -1436,19 +1481,19 @@ MapController - + Hero %1 cannot be created as NEUTRAL. AI-generated, needs review by native speaker; delete this comment afterwards Герой %1 не може бути створений як НЕЙТРАЛЬНИЙ. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards Відсутній необхідний мод - + Do you want to do that now ? @@ -1459,7 +1504,7 @@ Do you want to do that now ? Бажаєте зробити це зараз? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards Мод цього об’єкта обов’язковий для того, щоб карта залишалася дійсною. @@ -1622,6 +1667,139 @@ Do you want to do that now ? Усі модифікації + + ObjectSelector + + + Select Objects + + + + + Objects + Об’єкти + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Інше + + + + All + Усі + + + + None + + + + + Creature bank + + + + + Bonus + Бонус + + + + Dwelling + + + + + Resource + Ресурс + + + + Resource generator + + + + + Spell scroll + Сувій закляття + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Значення + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1773,13 +1951,18 @@ Do you want to do that now ? Експерт - + Default secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Початкові вторинні навички: - + + Random hero secondary skills + + + + Secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Вторинні навички: @@ -2191,24 +2374,24 @@ Do you want to do that now ? НЕПРАПОРОПОСТАВНИЙ - + Can't place object Неможливо розмістити об'єкт - + There can only be one grail object on the map. AI-generated, needs review by native speaker; delete this comment afterwards На карті може бути лише один Грааль. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (субмод моду %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2217,21 +2400,21 @@ Add it to the map's required mods in Map->General settings. Додайте його до списку обов'язкових модів у Карта → Загальні налаштування. - + Custom Spells: AI-generated, needs review by native speaker; delete this comment afterwards Користувацькі закляття: - + Default Spells AI-generated, needs review by native speaker; delete this comment afterwards Закляття за замовчуванням - + Default AI-generated, needs review by native speaker; delete this comment afterwards Типово @@ -2396,7 +2579,7 @@ Add it to the map's required mods in Map->General settings. Заборонені будівлі: - + Town Events: AI-generated, needs review by native speaker; delete this comment afterwards Події міста: @@ -3467,7 +3650,7 @@ Add it to the map's required mods in Map->General settings. TemplateEditor - + VCMI Template Editor @@ -3498,8 +3681,8 @@ Add it to the map's required mods in Map->General settings. - - + + Add Додати @@ -3536,21 +3719,21 @@ Add it to the map's required mods in Map->General settings. - + X - + Y - + Z @@ -3577,14 +3760,14 @@ Add it to the map's required mods in Map->General settings. - - + + None - + Normal Типова @@ -3594,498 +3777,501 @@ Add it to the map's required mods in Map->General settings. Острови - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type Тип - + Owner Власник - + Zone link - - - + + + Mines Шахти - - + + Custom objects - - + + Towns Міста - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Гравець - - - - + + + + Neutral Нейтральний - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Монстри - + Allowed monsters - + Banned monsters - + Strength - + Objects Об’єкти - + Connections - + Open Відкрити - + Save Зберегти - + New Створити - + Save as... Зберегти як... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Збільшити - + Ctrl++ Ctrl++ - + Zoom out Зменшити - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Скидання масштабу - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random Випадково - + Weak Слабкі - + Strong Сильні - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Підтвердження - + Unsaved changes will be lost, are you sure? Незбережені зміни буде втрачено, ви впевнені? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Помилка - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Помилка @@ -4320,7 +4506,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards День %1 - %2 @@ -4350,17 +4536,70 @@ Guard: %3 Видалити - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards День %1 - %2 - + New event Нова подія + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + Тип + + + + Value + Значення + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4504,6 +4743,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4754,12 +5026,12 @@ Guard: %3 ДВ (144x144) - + Random map Випадкова мапа - + Players Гравців @@ -4800,20 +5072,25 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random Випадково - + Human teams Команди людей - + Computer teams Команди комп'ютерів @@ -4830,129 +5107,138 @@ Guard: %3 Користувацький розмір - Underground AI-generated, needs review by native speaker; delete this comment afterwards - Підземелля + Підземелля - + Humans AI-generated, needs review by native speaker; delete this comment afterwards Люди - + Computers AI-generated, needs review by native speaker; delete this comment afterwards Комп'ютери - + Monster strength Сила монстрів - + Weak Слабкі - - + + Normal Типова - + Strong Сильні - + Water content Наявність води - + None Відсутня - + Islands Острови - + Roads Шляхи - + Dirt AI-generated, needs review by native speaker; delete this comment afterwards Ґрунт - + Gravel AI-generated, needs review by native speaker; delete this comment afterwards Гравій - + Cobblestone AI-generated, needs review by native speaker; delete this comment afterwards Бруківка - - + + Template Шаблон - + Custom seed Користувацьке зерно - + Generate random map Згенерувати випадкову карту - + OK AI-generated, needs review by native speaker; delete this comment afterwards Гаразд - + Cancel Скасувати - + No template AI-generated, needs review by native speaker; delete this comment afterwards Шаблон відсутній - + No template for parameters specified. Random map cannot be generated. AI-generated, needs review by native speaker; delete this comment afterwards Немає шаблону для вказаних параметрів. Неможливо згенерувати випадкову карту. - + RMG failure AI-generated, needs review by native speaker; delete this comment afterwards Помилка генерації випадкової карти - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] AI-generated, needs review by native speaker; delete this comment afterwards [типово] diff --git a/mapeditor/translation/vietnamese.ts b/mapeditor/translation/vietnamese.ts index 3343d85e1..1c9842780 100644 --- a/mapeditor/translation/vietnamese.ts +++ b/mapeditor/translation/vietnamese.ts @@ -303,52 +303,61 @@ Video kết thúc - + Custom AI-generated, needs review by native speaker; delete this comment afterwards Tùy chỉnh - + Infix AI-generated, needs review by native speaker; delete this comment afterwards Chèn giữa - + X - + Y - + Label Pos X AI-generated, needs review by native speaker; delete this comment afterwards Vị trí nhãn X - + Label Pos Y AI-generated, needs review by native speaker; delete this comment afterwards Vị trí nhãn Y - + Fewer Scenarios AI-generated, needs review by native speaker; delete this comment afterwards Ít kịch bản hơn - + New Region setup supports fewer scenarios than before. Some will removed. Continue? AI-generated, needs review by native speaker; delete this comment afterwards Thiết lập khu vực mới hỗ trợ ít kịch bản hơn trước. Một số sẽ bị xoá. Tiếp tục? + + EntitiesSelector + + + + Select Entities + + + EventSettings @@ -376,7 +385,7 @@ Xoá - + New event AI-generated, needs review by native speaker; delete this comment afterwards Sự kiện mới @@ -561,31 +570,31 @@ Tuỳ chỉnh phép thuật - + Level 1 AI-generated, needs review by native speaker; delete this comment afterwards Cấp 1 - + Level 2 AI-generated, needs review by native speaker; delete this comment afterwards Cấp 2 - + Level 3 AI-generated, needs review by native speaker; delete this comment afterwards Cấp 3 - + Level 4 AI-generated, needs review by native speaker; delete this comment afterwards Cấp 4 - + Level 5 AI-generated, needs review by native speaker; delete this comment afterwards Cấp 5 @@ -644,7 +653,7 @@ MainWindow - + VCMI Map Editor Bộ tạo bản đồ VCMI @@ -814,8 +823,6 @@ - - View underground Xem hang ngầm @@ -975,9 +982,9 @@ - - - + + + Update appearance Cập nhật hiện thị @@ -1196,270 +1203,308 @@ Ctrl+Shift+= - + Confirmation Xác nhận - + Unsaved changes will be lost, are you sure? Thay đổi chưa lưu sẽ bị mất, bạn có chắc chắn? - + + Surface + + + + + Underground + Tầng hầm + + + + Level - %1 + + + + Mods are required AI-generated, needs review by native speaker; delete this comment afterwards Cần có các mod - + Failed to open map AI-generated, needs review by native speaker; delete this comment afterwards Không mở được bản đồ - + Open map Mở bản đồ - + All supported maps (*.vmap *.h3m);;VCMI maps(*.vmap);;HoMM3 maps(*.h3m) Tất cả bản đồ hỗ trợ (*.vmap *.h3m);;Bản đồ VCMI (*.vmap);;Bản đồ HoMM3 (*.h3m) - + Recently Opened Files AI-generated, needs review by native speaker; delete this comment afterwards Tệp đã mở gần đây - + Map validation AI-generated, needs review by native speaker; delete this comment afterwards Xác minh bản đồ - + Map has critical problems and most probably will not be playable. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Bản đồ có lỗi nghiêm trọng và rất có thể sẽ không thể chơi được. Mở Trình xác minh từ menu Bản đồ để xem lỗi. - + Map has some errors. Open Validator from the Map menu to see issues found AI-generated, needs review by native speaker; delete this comment afterwards Bản đồ có một số lỗi. Mở Trình xác minh từ menu Bản đồ để xem lỗi. - + Failed to save map AI-generated, needs review by native speaker; delete this comment afterwards Lưu bản đồ thất bại - + Save map Lưu bản đồ - + VCMI maps (*.vmap) Bản đồ VCMI (*.vmap) - + Type Loại - + Towns AI-generated, needs review by native speaker; delete this comment afterwards Thành phố - + Objects AI-generated, needs review by native speaker; delete this comment afterwards Đối tượng - + Heroes Tướng - + Artifacts Vật phẩm - + Resources AI-generated, needs review by native speaker; delete this comment afterwards Tài nguyên - + Banks AI-generated, needs review by native speaker; delete this comment afterwards Ngân hàng - + Dwellings AI-generated, needs review by native speaker; delete this comment afterwards Nơi cư trú - + Grounds AI-generated, needs review by native speaker; delete this comment afterwards Địa hình - + Teleports AI-generated, needs review by native speaker; delete this comment afterwards Dịch chuyển - + Mines AI-generated, needs review by native speaker; delete this comment afterwards Mỏ - + Triggers AI-generated, needs review by native speaker; delete this comment afterwards Kích hoạt - + Monsters AI-generated, needs review by native speaker; delete this comment afterwards Quái vật - + Quests AI-generated, needs review by native speaker; delete this comment afterwards Nhiệm vụ - + Wog Objects AI-generated, needs review by native speaker; delete this comment afterwards Đối tượng WoG - + Obstacles AI-generated, needs review by native speaker; delete this comment afterwards Chướng ngại vật - + Other AI-generated, needs review by native speaker; delete this comment afterwards Khác - + Mods loading problem AI-generated, needs review by native speaker; delete this comment afterwards Lỗi tải mod - + Critical error during Mods loading. Disable invalid mods and restart. AI-generated, needs review by native speaker; delete this comment afterwards Lỗi nghiêm trọng khi tải mod. Vô hiệu hóa các mod không hợp lệ và khởi động lại. - - - View surface - Xem bề mặt + + Undo clicked + - + + Redo clicked + + + + + Passability clicked + + + + + Grid clicked + + + + + Fill clicked + + + + View surface + Xem bề mặt + + + No objects selected Không mục tiêu được chọn - + This operation is irreversible. Do you want to continue? Thao tác này không thể đảo ngược. Bạn muốn tiếp tục? - + Errors occurred. %1 objects were not updated Xảy ra lỗi. %1 mục tiêu không được cập nhật - + Save to image Lưu thành ảnh - + Select maps to convert AI-generated, needs review by native speaker; delete this comment afterwards Chọn bản đồ để chuyển đổi - + HoMM3 maps(*.h3m) AI-generated, needs review by native speaker; delete this comment afterwards Bản đồ HoMM3 (*.h3m) - + Choose directory to save converted maps AI-generated, needs review by native speaker; delete this comment afterwards Chọn thư mục để lưu bản đồ đã chuyển đổi - + Operation completed AI-generated, needs review by native speaker; delete this comment afterwards Hoàn tất thao tác - + Successfully converted %1 maps AI-generated, needs review by native speaker; delete this comment afterwards Đã chuyển đổi thành công %1 bản đồ - + Failed to convert the map. Abort operation AI-generated, needs review by native speaker; delete this comment afterwards Không thể chuyển đổi bản đồ. Huỷ thao tác - + Select campaign to convert AI-generated, needs review by native speaker; delete this comment afterwards Chọn chiến dịch để chuyển đổi - + HoMM3 campaigns (*.h3c) AI-generated, needs review by native speaker; delete this comment afterwards Chiến dịch HoMM3 (*.h3c) - + Select destination file AI-generated, needs review by native speaker; delete this comment afterwards Chọn tệp đích - + VCMI campaigns (*.vcmp) AI-generated, needs review by native speaker; delete this comment afterwards Chiến dịch VCMI (*.vcmp) @@ -1468,19 +1513,19 @@ MapController - + Hero %1 cannot be created as NEUTRAL. AI-generated, needs review by native speaker; delete this comment afterwards Không thể tạo anh hùng %1 là TRUNG LẬP. - + Missing Required Mod AI-generated, needs review by native speaker; delete this comment afterwards Thiếu mod cần thiết - + Do you want to do that now ? @@ -1491,7 +1536,7 @@ Do you want to do that now ? Bạn có muốn làm điều đó ngay bây giờ không? - + This object's mod is mandatory for map to remain valid. AI-generated, needs review by native speaker; delete this comment afterwards Mod của đối tượng này là bắt buộc để bản đồ hợp lệ. @@ -1657,6 +1702,139 @@ Bạn có muốn làm điều đó ngay bây giờ không? Bản sửa đổi nội dung đầy đủ + + ObjectSelector + + + Select Objects + + + + + Objects + Đối tượng + + + + Banned Objects + + + + + Banned Object Categories + + + + + Object Selector + + + + + Category + + + + + + + Action + + + + + Other + Khác + + + + All + Tất cả + + + + None + Không + + + + Creature bank + + + + + Bonus + Phần thưởng + + + + Dwelling + + + + + Resource + Tài nguyên + + + + Resource generator + + + + + Spell scroll + Cuộn phép + + + + Random artifact + + + + + Pandoras box + + + + + Quest artifact + + + + + Seer hut + + + + + + + Delete + + + + + + Object + + + + + Value + Giá trị + + + + Probability + + + + + Max per zone + + + PlayerParams @@ -1808,13 +1986,18 @@ Bạn có muốn làm điều đó ngay bây giờ không? Chuyên gia - + Default secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Kỹ năng phụ mặc định: - + + Random hero secondary skills + + + + Secondary skills: AI-generated, needs review by native speaker; delete this comment afterwards Kỹ năng phụ: @@ -2224,24 +2407,24 @@ Bạn có muốn làm điều đó ngay bây giờ không? KHÔNG GẮN CỜ - + Can't place object Không thể đặt vật thể - + There can only be one grail object on the map. AI-generated, needs review by native speaker; delete this comment afterwards Chỉ có thể có một vật phẩm chén thánh trên bản đồ. - + (submod of %1) AI-generated, needs review by native speaker; delete this comment afterwards (mod con của %1) - + The mod '%1'%2, is required by an object on the map. Add it to the map's required mods in Map->General settings. should be consistent with Map->General menu entry translation @@ -2250,21 +2433,21 @@ Add it to the map's required mods in Map->General settings. Thêm nó vào danh sách mod yêu cầu trong Bản đồ → Thiết lập chung. - + Custom Spells: AI-generated, needs review by native speaker; delete this comment afterwards Phép thuật tùy chỉnh: - + Default Spells AI-generated, needs review by native speaker; delete this comment afterwards Phép thuật mặc định - + Default AI-generated, needs review by native speaker; delete this comment afterwards Mặc định @@ -2429,7 +2612,7 @@ Thêm nó vào danh sách mod yêu cầu trong Bản đồ → Thiết lập chu Các công trình bị cấm: - + Town Events: AI-generated, needs review by native speaker; delete this comment afterwards Sự kiện thành phố: @@ -3512,7 +3695,7 @@ Thêm nó vào danh sách mod yêu cầu trong Bản đồ → Thiết lập chu TemplateEditor - + VCMI Template Editor @@ -3543,8 +3726,8 @@ Thêm nó vào danh sách mod yêu cầu trong Bản đồ → Thiết lập chu - - + + Add Thêm @@ -3581,21 +3764,21 @@ Thêm nó vào danh sách mod yêu cầu trong Bản đồ → Thiết lập chu - + X - + Y - + Z @@ -3622,14 +3805,14 @@ Thêm nó vào danh sách mod yêu cầu trong Bản đồ → Thiết lập chu - - + + None Không - + Normal Trung bình @@ -3639,498 +3822,501 @@ Thêm nó vào danh sách mod yêu cầu trong Bản đồ → Thiết lập chu Các đảo - + + Entities + + + + + Banned Spells + + + + + Banned Artifacts + + + + + Banned Skills + + + + + Banned Heroes + + + + Zone - + Visualisation - + Position - - + + Size - + ID ID - - + + Type Loại - + Owner Chủ sở hữu - + Zone link - - - + + + Mines Mỏ - - + + Custom objects - - + + Towns Thành phố - - + + Terrain - - - - + + + + Treasure - + Town info - + Town count - - - - + + + + Player Người chơi - - - - + + + + Neutral Trung lập - + Castle count - + Town density - + Castle density - + Match terrain to town - + Terrain types - + Banned terrain types - + Towns are same type - + Allowed towns - + Banned towns - + Town hints - + Monsters Quái vật - + Allowed monsters - + Banned monsters - + Strength - + Objects Đối tượng - + Connections - + Open Mở - + Save Lưu - + New Tạo mới - + Save as... Lưu thành... - + Ctrl+Shift+S Ctrl+Shift+S - + Add zone - + Remove zone - - + + Del Del - + Auto position - + Ctrl+P Ctrl+P - + Zoom in Phóng to - + Ctrl++ Ctrl++ - + Zoom out Thu nhỏ - + Ctrl+- Ctrl+- - + Zoom auto - + Ctrl+Shift+: - + Zoom reset Đặt lại thu phóng - + Ctrl+Shift+= Ctrl+Shift+= - + Min - + Max - + Action - - + + Delete - + ID: %1 - + Max treasure: %1 - + Player start - + CPU start - + Junction - + Water - + Sealed - - + + Random Ngẫu nhiên - + Weak Yếu - + Strong Mạnh - + Zone A - + Zone B - + Guard - + Road - + Guarded - + Fictive - + Repulsive - + Wide - + Force portal - + Yes - + No - + Zone A: %1 Zone B: %2 Guard: %3 - + Confirmation Xác nhận - + Unsaved changes will be lost, are you sure? Thay đổi chưa lưu sẽ bị mất, bạn có chắc chắn? - + Open template - + VCMI templates(*.json) - + Save template - + VCMI templates (*.json) - - + + Enter Name - - + + Name: - + Already existing! - + A template with this name is already existing. - + To few templates! - + At least one template should remain after removing. - - Error - Lỗi - - - - - Not implemented yet! - - - - - TerrainSelector - - - - Select Terrains - - - - - Terrain Selector - + Lỗi @@ -4368,7 +4554,7 @@ Guard: %3 TownEventsDelegate - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Ngày %1 - %2 @@ -4401,18 +4587,71 @@ Guard: %3 Xoá - + Day %1 - %2 AI-generated, needs review by native speaker; delete this comment afterwards Ngày %1 - %2 - + New event AI-generated, needs review by native speaker; delete this comment afterwards Sự kiện mới + + TownHintSelector + + + Select Town hints + + + + + Town hints + + + + + Town hint Selector + + + + + Type + Loại + + + + Value + Giá trị + + + + Action + + + + + Like Zone + + + + + Not like zone (comma separated) + + + + + Related to zone terrain + + + + + Delete + + + TownSpellsWidget @@ -4562,6 +4801,39 @@ Guard: %3 Action + + + Delete + + + + + Ts + + + Terrain Selector + + + + + Spell Selector + + + + + Artifact Selector + + + + + Skill Selector + + + + + Hero Type Selector + + Validator @@ -4795,12 +5067,12 @@ Guard: %3 Rất lớn (144x144) - + Random map Bản đồ ngẫu nhiên - + Players Người chơi @@ -4841,20 +5113,25 @@ Guard: %3 G (252x252) - - - - + + Levels + + + + + + + Random Ngẫu nhiên - + Human teams Đội người - + Computer teams Đội máy @@ -4871,126 +5148,135 @@ Guard: %3 Kích thước tùy chỉnh - Underground AI-generated, needs review by native speaker; delete this comment afterwards - Tầng hầm + Tầng hầm - + Humans AI-generated, needs review by native speaker; delete this comment afterwards Người chơi - + Computers AI-generated, needs review by native speaker; delete this comment afterwards Máy tính - + Monster strength Sức mạnh quái - + Weak Yếu - - + + Normal Trung bình - + Strong Mạnh - + Water content Có nước - + None Không - + Islands Các đảo - + Roads Đường - + Dirt AI-generated, needs review by native speaker; delete this comment afterwards Đất bùn - + Gravel AI-generated, needs review by native speaker; delete this comment afterwards Sỏi - + Cobblestone AI-generated, needs review by native speaker; delete this comment afterwards Đá lát - - + + Template Mẫu - + Custom seed Tùy chỉnh ban đầu - + Generate random map Tạo bản đồ ngẫu nhiên - + OK AI-generated, needs review by native speaker; delete this comment afterwards OK - + Cancel Hủy - + No template Không dùng mẫu - + No template for parameters specified. Random map cannot be generated. Không có mẫu cho tham số chỉ định. Bản đồ ngẫu nhiên không thể tạo - + RMG failure Tạo bản đồ ngẫu nhiên thất bại - + + Multilevel support + + + + + Multilevel support is highly experimental yet. Expect issues. + + + + [default] AI-generated, needs review by native speaker; delete this comment afterwards [mặc định] diff --git a/osx/CMakeLists.txt b/osx/CMakeLists.txt index 80095eee8..7320c4d7d 100644 --- a/osx/CMakeLists.txt +++ b/osx/CMakeLists.txt @@ -3,11 +3,14 @@ if(MACOS) set(bundleDir "\${CMAKE_INSTALL_PREFIX}/${APP_BUNDLE_DIR}") set(bundleContentsDir "${bundleDir}/Contents") + set(executablesDir "${bundleContentsDir}/MacOS") - if(ENABLE_LAUNCHER OR ENABLE_EDITOR) - # note: cross-compiled Qt 5 builds macdeployqt for target platform instead of host - vcmi_deploy_qt(macdeployqt "\"${bundleDir}\"") + set(macdeployqtParams "\"${bundleDir}\"") + if(ENABLE_EDITOR) + string(APPEND macdeployqtParams " \"-executable=${executablesDir}/vcmieditor\"") endif() + # note: cross-compiled Qt 5 builds macdeployqt for target platform instead of host + vcmi_deploy_qt(macdeployqt "${macdeployqtParams}") # perform ad-hoc codesigning # Intel Macs don't need it @@ -29,11 +32,11 @@ if(MACOS) set(codesignCommandWithEntitlements "${codesignCommand} --entitlements \"${CMAKE_SOURCE_DIR}/osx/entitlements.plist\"") install(CODE " execute_process(COMMAND - ${codesignCommand} \"${bundleContentsDir}/MacOS/vcmibuilder\" + ${codesignCommand} \"${executablesDir}/vcmibuilder\" ) foreach(executable ${executablesToSign}) execute_process(COMMAND - ${codesignCommandWithEntitlements} --identifier eu.vcmi.\${executable} \"${bundleContentsDir}/MacOS/\${executable}\" + ${codesignCommandWithEntitlements} --identifier eu.vcmi.\${executable} \"${executablesDir}/\${executable}\" ) endforeach() ") diff --git a/scripting/lua/api/ObjectInstance.h b/scripting/lua/api/ObjectInstance.h index a5542a650..e80073d00 100644 --- a/scripting/lua/api/ObjectInstance.h +++ b/scripting/lua/api/ObjectInstance.h @@ -14,8 +14,6 @@ #include "../LuaWrapper.h" -#include "../../../lib/mapObjects/CObjectHandler.h" - namespace scripting { namespace api diff --git a/scripting/lua/api/netpacks/SetResources.cpp b/scripting/lua/api/netpacks/SetResources.cpp index 9cd8a88cd..5b103669b 100644 --- a/scripting/lua/api/netpacks/SetResources.cpp +++ b/scripting/lua/api/netpacks/SetResources.cpp @@ -82,7 +82,7 @@ int SetResourcesProxy::getAmount(lua_State * L) S.clear(); - const TQuantity amount = vstd::atOrDefault(object->res, static_cast(type), 0); + const TQuantity amount = object->res[type]; S.push(amount); return 1; } diff --git a/scripts/lib/erm/MA.lua b/scripts/lib/erm/MA.lua index 9047d4678..ab0d9e971 100644 --- a/scripts/lib/erm/MA.lua +++ b/scripts/lib/erm/MA.lua @@ -8,7 +8,7 @@ local Bonus = require("Bonus") local BonusBearer = require("BonusBearer") local BonusList = require("BonusList") -local RES = {[0] = "wood", [1] = "mercury", [2] = "ore", [3] = "sulfur", [4] = "crystal", [5] = "gems", [6] = "gold", [7] = "mithril"} +local RES = {[0] = "wood", [1] = "mercury", [2] = "ore", [3] = "sulfur", [4] = "crystal", [5] = "gems", [6] = "gold"} local SERVICES = SERVICES local creatures = SERVICES:creatures() diff --git a/server/CGameHandler.cpp b/server/CGameHandler.cpp index 0ebef6d4b..3dc4a56b4 100644 --- a/server/CGameHandler.cpp +++ b/server/CGameHandler.cpp @@ -2295,7 +2295,8 @@ bool CGameHandler::spellResearch(ObjectInstanceID tid, SpellID spellAtSlot, bool return true; } - auto costBase = TResources(gameInfo().getSettings().getValue(EGameSettings::TOWNS_SPELL_RESEARCH_COST).Vector()[level]); + ResourceSet costBase; + costBase.resolveFromJson(gameInfo().getSettings().getValue(EGameSettings::TOWNS_SPELL_RESEARCH_COST).Vector()[level]); auto costExponent = gameInfo().getSettings().getValue(EGameSettings::TOWNS_SPELL_RESEARCH_COST_EXPONENT_PER_RESEARCH).Vector()[level].Float(); auto cost = costBase * std::pow(t->spellResearchAcceptedCounter + 1, costExponent); diff --git a/server/CVCMIServer.cpp b/server/CVCMIServer.cpp index d25b2be64..4dc44cb64 100644 --- a/server/CVCMIServer.cpp +++ b/server/CVCMIServer.cpp @@ -20,6 +20,7 @@ #include "../lib/campaign/CampaignState.h" #include "../lib/entities/hero/CHeroHandler.h" #include "../lib/entities/hero/CHeroClass.h" +#include "../lib/entities/ResourceTypeHandler.h" #include "../lib/gameState/CGameState.h" #include "../lib/mapping/CMapInfo.h" #include "../lib/mapping/CMapHeader.h" @@ -709,7 +710,7 @@ void CVCMIServer::setPlayerHandicap(PlayerColor color, Handicap handicap) return; } - for(auto & res : EGameResID::ALL_RESOURCES()) + for(auto & res : LIBRARY->resourceTypeHandler->getAllObjects()) if(handicap.startBonus[res] != 0) { str.appendRawString(" "); @@ -1008,7 +1009,7 @@ void CVCMIServer::multiplayerWelcomeMessage() str.appendRawString(" "); str.appendName(pi.first); str.appendRawString(":"); - for(auto & res : EGameResID::ALL_RESOURCES()) + for(auto & res : LIBRARY->resourceTypeHandler->getAllObjects()) if(pi.second.handicap.startBonus[res] != 0) { str.appendRawString(" "); diff --git a/server/battles/BattleResultProcessor.cpp b/server/battles/BattleResultProcessor.cpp index e99b86858..050216e63 100644 --- a/server/battles/BattleResultProcessor.cpp +++ b/server/battles/BattleResultProcessor.cpp @@ -320,6 +320,9 @@ void BattleResultProcessor::endBattleConfirm(const CBattleInfoCallback & battle) cab1.updateArmy(gameHandler); cab2.updateArmy(gameHandler); //take casualties after battle is deleted + const auto attackerHero = battle.battleGetFightingHero(BattleSide::ATTACKER); + const auto defenderHero = battle.battleGetFightingHero(BattleSide::DEFENDER); + const auto winnerHero = battle.battleGetFightingHero(finishingBattle->winnerSide); const auto loserHero = battle.battleGetFightingHero(CBattleInfoEssentials::otherSide(finishingBattle->winnerSide)); @@ -358,8 +361,8 @@ void BattleResultProcessor::endBattleConfirm(const CBattleInfoCallback & battle) BattleResultAccepted raccepted; raccepted.battleID = battle.getBattle()->getBattleID(); - raccepted.heroResult[finishingBattle->winnerSide].heroID = winnerHero ? winnerHero->id : ObjectInstanceID::NONE; - raccepted.heroResult[CBattleInfoEssentials::otherSide(finishingBattle->winnerSide)].heroID = loserHero ? loserHero->id : ObjectInstanceID::NONE; + raccepted.heroResult[BattleSide::ATTACKER].heroID = attackerHero ? attackerHero->id : ObjectInstanceID::NONE; + raccepted.heroResult[BattleSide::DEFENDER].heroID = defenderHero ? defenderHero->id : ObjectInstanceID::NONE; raccepted.heroResult[BattleSide::ATTACKER].armyID = battle.battleGetArmyObject(BattleSide::ATTACKER)->id; raccepted.heroResult[BattleSide::DEFENDER].armyID = battle.battleGetArmyObject(BattleSide::DEFENDER)->id; raccepted.heroResult[BattleSide::ATTACKER].exp = battleResult->exp[BattleSide::ATTACKER]; @@ -399,13 +402,42 @@ void BattleResultProcessor::battleFinalize(const BattleID & battleID, const Batt }); assert(battle != gameHandler->gameState().currentBattles.end()); - const auto winnerHero = (*battle)->battleGetFightingHero(finishingBattle->winnerSide); - const auto loserHero = (*battle)->battleGetFightingHero(CBattleInfoEssentials::otherSide(finishingBattle->winnerSide)); + const CGHeroInstance * winnerHero = nullptr; + const CGHeroInstance * loserHero = nullptr; + + const auto attackerHero = (*battle)->battleGetFightingHero(BattleSide::ATTACKER); + const auto defenderHero = (*battle)->battleGetFightingHero(BattleSide::DEFENDER); + const auto attackerSide = (*battle)->getSidePlayer(BattleSide::ATTACKER); + const auto defenderSide = (*battle)->getSidePlayer(BattleSide::DEFENDER); + bool winnerHasUnitsLeft = true; + + if (!finishingBattle->isDraw()) + { + winnerHero = (*battle)->battleGetFightingHero(finishingBattle->winnerSide); + loserHero = (*battle)->battleGetFightingHero(CBattleInfoEssentials::otherSide(finishingBattle->winnerSide)); + winnerHasUnitsLeft = winnerHero ? winnerHero->stacksCount() > 0 : true; + } + BattleResultsApplied resultsApplied; - // Eagle Eye handling - if(!finishingBattle->isDraw() && winnerHero) + const auto addArtifactToDischarging = [&resultsApplied](const std::map & artMap, + const ObjectInstanceID & id, const std::optional & creature = std::nullopt) { + for(const auto & [slot, slotInfo] : artMap) + { + auto artInst = slotInfo.getArt(); + assert(artInst); + if(const auto condition = artInst->getType()->getDischargeCondition(); condition == DischargeArtifactCondition::BATTLE) + { + auto & discharging = resultsApplied.dischargingArtifacts.emplace_back(artInst->getId(), 1); + discharging.artLoc.emplace(id, creature, slot); + } + } + }; + + if(winnerHero && winnerHasUnitsLeft) + { + // Eagle Eye handling if(auto eagleEyeLevel = winnerHero->valOfBonuses(BonusType::LEARN_BATTLE_SPELL_LEVEL_LIMIT)) { resultsApplied.learnedSpells.learn = 1; @@ -422,10 +454,46 @@ void BattleResultProcessor::battleFinalize(const BattleID & battleID, const Batt } } } + + // Growing artifacts handling + const auto addArtifactToGrowing = [&resultsApplied](const std::map & artMap) + { + for(const auto & [slot, slotInfo] : artMap) + { + const auto artInst = slotInfo.getArt(); + assert(artInst); + if(artInst->getType()->isGrowing()) + resultsApplied.growingArtifacts.emplace_back(artInst->getId()); + } + }; + + if(const auto commander = winnerHero->getCommander(); commander && commander->alive) + addArtifactToGrowing(commander->artifactsWorn); + addArtifactToGrowing(winnerHero->artifactsWorn); + + // Charged artifacts handling + addArtifactToDischarging(winnerHero->artifactsWorn, winnerHero->id); + if(const auto commander = winnerHero->getCommander()) + addArtifactToDischarging(commander->artifactsWorn, winnerHero->id, winnerHero->findStack(winnerHero->getCommander())); + + // Necromancy handling + // Give raised units to winner, if any were raised, units will be given after casualties are taken + resultsApplied.raisedStack = winnerHero->calculateNecromancy(result); + const SlotID necroSlot = resultsApplied.raisedStack.getCreature() ? winnerHero->getSlotFor(resultsApplied.raisedStack.getCreature()) : SlotID(); + if(necroSlot != SlotID() && !finishingBattle->isDraw()) + gameHandler->addToSlot(StackLocation(finishingBattle->winnerId, necroSlot), resultsApplied.raisedStack.getCreature(), resultsApplied.raisedStack.getCount()); + } + + if(loserHero) + { + // Charged artifacts handling + addArtifactToDischarging(loserHero->artifactsWorn, loserHero->id); + if(const auto commander = loserHero->getCommander()) + addArtifactToDischarging(commander->artifactsWorn, loserHero->id, loserHero->findStack(loserHero->getCommander())); } // Moving artifacts handling - if(result.result == EBattleResult::NORMAL && !finishingBattle->isDraw() && winnerHero) + if(result.result == EBattleResult::NORMAL && winnerHero && winnerHasUnitsLeft) { CArtifactFittingSet artFittingSet(*winnerHero); const auto addArtifactToTransfer = [&artFittingSet](BulkMoveArtifacts & pack, const ArtifactPosition & srcSlot, const CArtifactInstance * art) @@ -441,7 +509,7 @@ void BattleResultProcessor::battleFinalize(const BattleID & battleID, const Batt } }; - if(loserHero) + if (loserHero) { BulkMoveArtifacts packHero(finishingBattle->victor, finishingBattle->loserId, finishingBattle->winnerId, false); packHero.srcArtHolder = finishingBattle->loserId; @@ -486,63 +554,6 @@ void BattleResultProcessor::battleFinalize(const BattleID & battleID, const Batt } } - // Growing artifacts handling - if(!finishingBattle->isDraw() && winnerHero) - { - const auto addArtifactToGrowing = [&resultsApplied](const std::map & artMap) - { - for(const auto & [slot, slotInfo] : artMap) - { - const auto artInst = slotInfo.getArt(); - assert(artInst); - if(artInst->getType()->isGrowing()) - resultsApplied.growingArtifacts.emplace_back(artInst->getId()); - } - }; - - if(const auto commander = winnerHero->getCommander(); commander && commander->alive) - addArtifactToGrowing(commander->artifactsWorn); - addArtifactToGrowing(winnerHero->artifactsWorn); - } - - // Charged artifacts handling - const auto addArtifactToDischarging = [&resultsApplied](const std::map & artMap, - const ObjectInstanceID & id, const std::optional & creature = std::nullopt) - { - for(const auto & [slot, slotInfo] : artMap) - { - auto artInst = slotInfo.getArt(); - assert(artInst); - if(const auto condition = artInst->getType()->getDischargeCondition(); condition == DischargeArtifactCondition::BATTLE) - { - auto & discharging = resultsApplied.dischargingArtifacts.emplace_back(artInst->getId(), 1); - discharging.artLoc.emplace(id, creature, slot); - } - } - }; - if(winnerHero) - { - addArtifactToDischarging(winnerHero->artifactsWorn, winnerHero->id); - if(const auto commander = winnerHero->getCommander()) - addArtifactToDischarging(commander->artifactsWorn, winnerHero->id, winnerHero->findStack(winnerHero->getCommander())); - } - if(loserHero) - { - addArtifactToDischarging(loserHero->artifactsWorn, loserHero->id); - if(const auto commander = loserHero->getCommander()) - addArtifactToDischarging(commander->artifactsWorn, loserHero->id, loserHero->findStack(loserHero->getCommander())); - } - - // Necromancy handling - // Give raised units to winner, if any were raised, units will be given after casualties are taken - if(winnerHero) - { - resultsApplied.raisedStack = winnerHero->calculateNecromancy(result); - const SlotID necroSlot = resultsApplied.raisedStack.getCreature() ? winnerHero->getSlotFor(resultsApplied.raisedStack.getCreature()) : SlotID(); - if(necroSlot != SlotID() && !finishingBattle->isDraw()) - gameHandler->addToSlot(StackLocation(finishingBattle->winnerId, necroSlot), resultsApplied.raisedStack.getCreature(), resultsApplied.raisedStack.getCount()); - } - resultsApplied.battleID = battleID; resultsApplied.victor = finishingBattle->victor; resultsApplied.loser = finishingBattle->loser; @@ -554,17 +565,39 @@ void BattleResultProcessor::battleFinalize(const BattleID & battleID, const Batt RemoveObject ro(loserHero->id, finishingBattle->victor); gameHandler->sendAndApply(ro); } - // For draw case both heroes should be removed - if(finishingBattle->isDraw() && winnerHero) + + //retreat the victor if he/she has no pernament creatures left + if (winnerHero && !winnerHasUnitsLeft) { RemoveObject ro(winnerHero->id, finishingBattle->loser); gameHandler->sendAndApply(ro); - if(gameHandler->gameInfo().getSettings().getBoolean(EGameSettings::HEROES_RETREAT_ON_WIN_WITHOUT_TROOPS)) - gameHandler->heroPool->onHeroEscaped(finishingBattle->victor, winnerHero); + gameHandler->heroPool->onHeroEscaped(finishingBattle->victor, winnerHero); } - //handle victory/loss of engaged players - gameHandler->checkVictoryLossConditions({finishingBattle->loser, finishingBattle->victor}); + // For draw case both heroes should be removed + if(finishingBattle->isDraw()) + { + + if (attackerHero) + { + RemoveObject ro(attackerHero->id, defenderSide); + gameHandler->sendAndApply(ro); + } + + if (defenderHero) + { + RemoveObject ro(defenderHero->id, attackerSide); + gameHandler->sendAndApply(ro); + } + + if(gameHandler->gameInfo().getSettings().getBoolean(EGameSettings::HEROES_RETREAT_ON_WIN_WITHOUT_TROOPS)) + { + if (attackerHero) + gameHandler->heroPool->onHeroEscaped(attackerSide, attackerHero); + if (defenderHero) + gameHandler->heroPool->onHeroEscaped(defenderSide, defenderHero); + } + } if (result.result == EBattleResult::SURRENDER) { @@ -578,6 +611,9 @@ void BattleResultProcessor::battleFinalize(const BattleID & battleID, const Batt gameHandler->heroPool->onHeroEscaped(finishingBattle->loser, loserHero); } + //handle victory/loss of engaged players + gameHandler->checkVictoryLossConditions({finishingBattle->loser, finishingBattle->victor}); + finishingBattles.erase(battleID); battleResults.erase(battleID); } @@ -592,6 +628,7 @@ void BattleResultProcessor::setBattleResult(const CBattleInfoCallback & battle, battleResult->battleID = battle.getBattle()->getBattleID(); battleResult->result = resultType; battleResult->winner = victoriusSide; //surrendering side loses + battleResult->attacker = battle.getBattle()->getSidePlayer(BattleSide::ATTACKER); auto allStacks = battle.battleGetStacksIf([](const CStack * stack){ diff --git a/server/processors/NewTurnProcessor.cpp b/server/processors/NewTurnProcessor.cpp index 846884fe0..8f1634620 100644 --- a/server/processors/NewTurnProcessor.cpp +++ b/server/processors/NewTurnProcessor.cpp @@ -21,6 +21,7 @@ #include "../../lib/constants/StringConstants.h" #include "../../lib/entities/building/CBuilding.h" #include "../../lib/entities/faction/CTownHandler.h" +#include "../../lib/entities/ResourceTypeHandler.h" #include "../../lib/gameState/CGameState.h" #include "../../lib/gameState/SThievesGuildInfo.h" #include "../../lib/mapObjects/CGHeroInstance.h" @@ -58,7 +59,7 @@ void NewTurnProcessor::handleTimeEvents(PlayerColor color) if (!event.resources.empty()) { gameHandler->giveResources(color, event.resources); - for (GameResID i : GameResID::ALL_RESOURCES()) + for (GameResID i : LIBRARY->resourceTypeHandler->getAllObjects()) if (event.resources[i]) iw.components.emplace_back(ComponentType::RESOURCE, i, event.resources[i]); } @@ -94,7 +95,7 @@ void NewTurnProcessor::handleTownEvents(const CGTownInstance * town) { gameHandler->giveResources(player, event.resources); - for (GameResID i : GameResID::ALL_RESOURCES()) + for (GameResID i : LIBRARY->resourceTypeHandler->getAllObjects()) if (event.resources[i]) iw.components.emplace_back(ComponentType::RESOURCE, i, event.resources[i]); } @@ -256,9 +257,9 @@ ResourceSet NewTurnProcessor::generatePlayerIncome(PlayerColor playerID, bool ne const JsonNode & difficultyConfig = weeklyBonusesConfig[difficultyName]; // Distribute weekly bonuses over 7 days, depending on the current day of the week - for (GameResID i : GameResID::ALL_RESOURCES()) + for (GameResID i : LIBRARY->resourceTypeHandler->getAllObjects()) { - const std::string & name = GameConstants::RESOURCE_NAMES[i.getNum()]; + const std::string & name = i.toResource()->getJsonKey(); int64_t weeklyBonus = difficultyConfig[name].Integer(); int64_t dayOfWeek = gameHandler->gameState().getDate(Date::DAY_OF_WEEK); int64_t dailyIncome = incomeHandicapped[i]; diff --git a/server/processors/PlayerMessageProcessor.cpp b/server/processors/PlayerMessageProcessor.cpp index ae3b567cd..87985100a 100644 --- a/server/processors/PlayerMessageProcessor.cpp +++ b/server/processors/PlayerMessageProcessor.cpp @@ -23,6 +23,7 @@ #include "../../lib/entities/artifact/CArtHandler.h" #include "../../lib/entities/building/CBuilding.h" #include "../../lib/entities/hero/CHeroHandler.h" +#include "../../lib/entities/ResourceTypeHandler.h" #include "../../lib/gameState/CGameState.h" #include "../../lib/mapObjects/CGTownInstance.h" #include "../../lib/mapObjects/CGHeroInstance.h" @@ -593,7 +594,7 @@ void PlayerMessageProcessor::cheatResources(PlayerColor player, std::vectorresourceTypeHandler->getAllObjects()) resources[i] = baseResourceAmount; gameHandler->giveResources(player, resources); diff --git a/test/erm/ERM_OB_T.cpp b/test/erm/ERM_OB_T.cpp index f8767f667..fa221d264 100644 --- a/test/erm/ERM_OB_T.cpp +++ b/test/erm/ERM_OB_T.cpp @@ -13,8 +13,6 @@ #include "../scripting/ScriptFixture.h" -#include "../../lib/mapObjects/CObjectHandler.h" - namespace test { namespace scripting diff --git a/test/mock/mock_Services.h b/test/mock/mock_Services.h index cd6159141..0a7e5b201 100644 --- a/test/mock/mock_Services.h +++ b/test/mock/mock_Services.h @@ -21,6 +21,7 @@ public: MOCK_CONST_METHOD0(factions, const FactionService *()); MOCK_CONST_METHOD0(heroClasses, const HeroClassService *()); MOCK_CONST_METHOD0(heroTypes, const HeroTypeService *()); + MOCK_CONST_METHOD0(resources, const ResourceTypeService *()); #if SCRIPTING_ENABLED MOCK_CONST_METHOD0(scripts, const scripting::Service *()); #endif diff --git a/test/vcai/ResourceManagerTest.cpp b/test/vcai/ResourceManagerTest.cpp index abeba4748..26636fe67 100644 --- a/test/vcai/ResourceManagerTest.cpp +++ b/test/vcai/ResourceManagerTest.cpp @@ -214,7 +214,6 @@ TEST_F(ResourceManagerTest, freeResources) ASSERT_GE(res[EGameResID::CRYSTAL], 0); ASSERT_GE(res[EGameResID::GEMS], 0); ASSERT_GE(res[EGameResID::GOLD], 0); - ASSERT_GE(res[EGameResID::MITHRIL], 0); } TEST_F(ResourceManagerTest, freeResourcesWithManyGoals)