浏览代码

Merge branch 'develop' into map-objects-removal-2

Dydzio 1 年之前
父节点
当前提交
3fe90e19a5
共有 97 个文件被更改,包括 3718 次插入2341 次删除
  1. 1 1
      .github/workflows/github.yml
  2. 二进制
      Mods/vcmi/Data/NotoSans-Medium.ttf
  3. 二进制
      Mods/vcmi/Data/NotoSerif-Black.ttf
  4. 二进制
      Mods/vcmi/Data/NotoSerif-Bold.ttf
  5. 二进制
      Mods/vcmi/Data/NotoSerif-Medium.ttf
  6. 7 1
      Mods/vcmi/config/vcmi/chinese.json
  7. 10 4
      Mods/vcmi/config/vcmi/portuguese.json
  8. 2 2
      client/CMakeLists.txt
  9. 1 1
      client/CPlayerInterface.cpp
  10. 56 10
      client/battle/BattleActionsController.cpp
  11. 4 2
      client/battle/BattleActionsController.h
  12. 3 1
      client/battle/BattleFieldController.cpp
  13. 5 3
      client/battle/BattleInterfaceClasses.cpp
  14. 4 1
      client/battle/BattleOverlayLogVisualizer.cpp
  15. 4 3
      client/battle/BattleStacksController.cpp
  16. 11 11
      client/battle/BattleWindow.cpp
  17. 2 1
      client/gui/CGuiHandler.cpp
  18. 4 0
      client/gui/EventDispatcher.cpp
  19. 1 0
      client/gui/EventsReceiver.h
  20. 4 2
      client/gui/InterfaceObjectConfigurable.cpp
  21. 20 6
      client/lobby/CBonusSelection.cpp
  22. 3 1
      client/lobby/CBonusSelection.h
  23. 6 3
      client/lobby/CSelectionBase.cpp
  24. 6 3
      client/lobby/OptionsTab.cpp
  25. 6 2
      client/mapView/MapOverlayLogVisualizer.cpp
  26. 2 2
      client/mapView/MapViewCache.cpp
  27. 13 8
      client/render/Canvas.cpp
  28. 1 1
      client/render/Canvas.h
  29. 10 2
      client/render/EFont.h
  30. 0 34
      client/render/Graphics.cpp
  31. 2 22
      client/render/Graphics.h
  32. 21 1
      client/render/IFont.cpp
  33. 19 5
      client/render/IFont.h
  34. 5 0
      client/render/IRenderHandler.h
  35. 30 28
      client/renderSDL/CBitmapFont.cpp
  36. 7 5
      client/renderSDL/CBitmapFont.h
  37. 0 127
      client/renderSDL/CBitmapHanFont.cpp
  38. 0 40
      client/renderSDL/CBitmapHanFont.h
  39. 37 27
      client/renderSDL/CTrueTypeFont.cpp
  40. 7 4
      client/renderSDL/CTrueTypeFont.h
  41. 136 0
      client/renderSDL/FontChain.cpp
  42. 43 0
      client/renderSDL/FontChain.h
  43. 30 1
      client/renderSDL/RenderHandler.cpp
  44. 4 0
      client/renderSDL/RenderHandler.h
  45. 4 1
      client/widgets/CComponent.cpp
  46. 3 1
      client/widgets/CTextInput.cpp
  47. 25 16
      client/widgets/TextControls.cpp
  48. 6 0
      client/windows/CHeroBackpackWindow.cpp
  49. 1 0
      client/windows/CHeroBackpackWindow.h
  50. 12 3
      client/windows/CMessage.cpp
  51. 5 0
      client/windows/CWindowWithArtifacts.cpp
  52. 9 4
      client/windows/GUIClasses.cpp
  53. 2 0
      client/windows/GUIClasses.h
  54. 66 66
      config/campaignOverrides.json
  55. 0 4
      config/creatures/castle.json
  56. 15 14
      config/fonts.json
  57. 2 0
      config/gameConfig.json
  58. 2 1
      config/schemas/gameSettings.json
  59. 11 0
      config/schemas/settings.json
  60. 4 3
      docs/modders/Campaign_Format.md
  61. 1 1
      launcher/modManager/chroniclesextractor.cpp
  62. 33 21
      launcher/settingsView/csettingsview_moc.cpp
  63. 7 1
      launcher/settingsView/csettingsview_moc.h
  64. 470 389
      launcher/settingsView/csettingsview_moc.ui
  65. 151 87
      launcher/translation/chinese.ts
  66. 150 86
      launcher/translation/czech.ts
  67. 149 85
      launcher/translation/english.ts
  68. 153 89
      launcher/translation/french.ts
  69. 151 87
      launcher/translation/german.ts
  70. 151 87
      launcher/translation/polish.ts
  71. 165 101
      launcher/translation/portuguese.ts
  72. 149 85
      launcher/translation/russian.ts
  73. 149 85
      launcher/translation/spanish.ts
  74. 187 123
      launcher/translation/swedish.ts
  75. 151 87
      launcher/translation/ukrainian.ts
  76. 149 85
      launcher/translation/vietnamese.ts
  77. 1 0
      lib/GameSettings.cpp
  78. 1 0
      lib/IGameSettings.h
  79. 50 6
      lib/battle/CBattleInfoCallback.cpp
  80. 2 0
      lib/battle/CBattleInfoCallback.h
  81. 12 3
      lib/campaign/CampaignState.cpp
  82. 14 5
      lib/campaign/CampaignState.h
  83. 2 1
      lib/serializer/ESerializationVersion.h
  84. 1 1
      lib/spells/BattleSpellMechanics.cpp
  85. 1 2
      lib/spells/effects/UnitEffect.cpp
  86. 50 30
      mapeditor/translation/chinese.ts
  87. 50 30
      mapeditor/translation/czech.ts
  88. 50 30
      mapeditor/translation/english.ts
  89. 52 32
      mapeditor/translation/french.ts
  90. 50 30
      mapeditor/translation/german.ts
  91. 50 30
      mapeditor/translation/polish.ts
  92. 50 30
      mapeditor/translation/portuguese.ts
  93. 50 30
      mapeditor/translation/russian.ts
  94. 50 30
      mapeditor/translation/spanish.ts
  95. 50 30
      mapeditor/translation/ukrainian.ts
  96. 50 30
      mapeditor/translation/vietnamese.ts
  97. 22 14
      server/battles/BattleActionProcessor.cpp

+ 1 - 1
.github/workflows/github.yml

@@ -352,7 +352,7 @@ jobs:
           run: |
           run: |
             find . -path ./.git -prune -o -path ./AI/FuzzyLite -prune -o -path ./test/googletest \
             find . -path ./.git -prune -o -path ./AI/FuzzyLite -prune -o -path ./test/googletest \
             -o -path ./osx  -prune -o -type f \
             -o -path ./osx  -prune -o -type f \
-            -not -name '*.png' -and -not -name '*.vcxproj*' -and -not -name '*.props' -and -not -name '*.wav' -and -not -name '*.webm' -and -not -name '*.ico' -and -not -name '*.bat' -print0 | \
+            -not -name '*.png' -and -not -name '*.ttf' -and -not -name '*.wav' -and -not -name '*.webm' -and -not -name '*.ico' -and -not -name '*.bat' -print0 | \
             { ! xargs -0 grep -l -z -P '\r\n'; }
             { ! xargs -0 grep -l -z -P '\r\n'; }
 
 
         - name: Validate JSON
         - name: Validate JSON

二进制
Mods/vcmi/Data/NotoSans-Medium.ttf


二进制
Mods/vcmi/Data/NotoSerif-Black.ttf


二进制
Mods/vcmi/Data/NotoSerif-Bold.ttf


二进制
Mods/vcmi/Data/NotoSerif-Medium.ttf


+ 7 - 1
Mods/vcmi/config/vcmi/chinese.json

@@ -12,6 +12,7 @@
 	"vcmi.adventureMap.monsterThreat.levels.9"  : "压倒性的",
 	"vcmi.adventureMap.monsterThreat.levels.9"  : "压倒性的",
 	"vcmi.adventureMap.monsterThreat.levels.10" : "致命的",
 	"vcmi.adventureMap.monsterThreat.levels.10" : "致命的",
 	"vcmi.adventureMap.monsterThreat.levels.11" : "无法取胜",
 	"vcmi.adventureMap.monsterThreat.levels.11" : "无法取胜",
+	"vcmi.adventureMap.monsterLevel"            : "\n\n%TOWN%LEVEL级生物",
 
 
 	"vcmi.adventureMap.confirmRestartGame"     : "你想要重新开始游戏吗?",
 	"vcmi.adventureMap.confirmRestartGame"     : "你想要重新开始游戏吗?",
 	"vcmi.adventureMap.noTownWithMarket"       : "没有足够的市场。",
 	"vcmi.adventureMap.noTownWithMarket"       : "没有足够的市场。",
@@ -20,6 +21,7 @@
 	"vcmi.adventureMap.playerAttacked"         : "玩家遭受攻击: %s",
 	"vcmi.adventureMap.playerAttacked"         : "玩家遭受攻击: %s",
 	"vcmi.adventureMap.moveCostDetails"        : "移动点数 - 花费: %TURNS 轮 + %POINTS 点移动力, 剩余移动力: %REMAINING",
 	"vcmi.adventureMap.moveCostDetails"        : "移动点数 - 花费: %TURNS 轮 + %POINTS 点移动力, 剩余移动力: %REMAINING",
 	"vcmi.adventureMap.moveCostDetailsNoTurns" : "移动点数 - 花费: %POINTS 点移动力, 剩余移动力: %REMAINING",
 	"vcmi.adventureMap.moveCostDetailsNoTurns" : "移动点数 - 花费: %POINTS 点移动力, 剩余移动力: %REMAINING",
+	"vcmi.adventureMap.movementPointsHeroInfo" 			 : "(移动点数: %REMAINING / %POINTS)",
 	"vcmi.adventureMap.replayOpponentTurnNotImplemented" : "抱歉,重放对手行动功能目前暂未实现!",
 	"vcmi.adventureMap.replayOpponentTurnNotImplemented" : "抱歉,重放对手行动功能目前暂未实现!",
 
 
 	"vcmi.capitalColors.0" : "红色",
 	"vcmi.capitalColors.0" : "红色",
@@ -236,6 +238,8 @@
 	"vcmi.adventureOptions.infoBarCreatureManagement.help" : "{信息面板生物管理}\n\n允许在信息面板中重新排列生物,而不是在默认组件之间循环。",
 	"vcmi.adventureOptions.infoBarCreatureManagement.help" : "{信息面板生物管理}\n\n允许在信息面板中重新排列生物,而不是在默认组件之间循环。",
 	"vcmi.adventureOptions.leftButtonDrag.hover" : "左键拖动地图",
 	"vcmi.adventureOptions.leftButtonDrag.hover" : "左键拖动地图",
 	"vcmi.adventureOptions.leftButtonDrag.help" : "{左键拖动地图}\n\n启用后,按住左键移动鼠标将拖动冒险地图视图。",
 	"vcmi.adventureOptions.leftButtonDrag.help" : "{左键拖动地图}\n\n启用后,按住左键移动鼠标将拖动冒险地图视图。",
+	"vcmi.adventureOptions.rightButtonDrag.hover" : "右键拖动地图",
+	"vcmi.adventureOptions.rightButtonDrag.help" : "{右键拖动地图}\n\n启用后,按住右键移动鼠标将拖动冒险地图视图。",
 	"vcmi.adventureOptions.smoothDragging.hover" : "平滑地图拖动",
 	"vcmi.adventureOptions.smoothDragging.hover" : "平滑地图拖动",
 	"vcmi.adventureOptions.smoothDragging.help" : "{平滑地图拖动}\n\n启用后,地图拖动会产生柔和的羽化效果。",
 	"vcmi.adventureOptions.smoothDragging.help" : "{平滑地图拖动}\n\n启用后,地图拖动会产生柔和的羽化效果。",
 	"vcmi.adventureOptions.skipAdventureMapAnimations.hover" : "关闭淡入淡出特效",
 	"vcmi.adventureOptions.skipAdventureMapAnimations.hover" : "关闭淡入淡出特效",
@@ -662,5 +666,7 @@
 	"core.bonus.WIDE_BREATH.name": "弧形焰息",
 	"core.bonus.WIDE_BREATH.name": "弧形焰息",
 	"core.bonus.WIDE_BREATH.description": "大范围喷吐攻击(目标左右以及后方共6格)",
 	"core.bonus.WIDE_BREATH.description": "大范围喷吐攻击(目标左右以及后方共6格)",
 	"core.bonus.DISINTEGRATE.name": "解体",
 	"core.bonus.DISINTEGRATE.name": "解体",
-	"core.bonus.DISINTEGRATE.description": "死亡后不会留下尸体"
+	"core.bonus.DISINTEGRATE.description": "死亡后不会留下尸体",
+	"core.bonus.INVINCIBLE.name": "无敌",
+	"core.bonus.INVINCIBLE.description": "不受任何效果影响"
 }
 }

+ 10 - 4
Mods/vcmi/config/vcmi/portuguese.json

@@ -9,9 +9,10 @@
 	"vcmi.adventureMap.monsterThreat.levels.6"  : "Forte",
 	"vcmi.adventureMap.monsterThreat.levels.6"  : "Forte",
 	"vcmi.adventureMap.monsterThreat.levels.7"  : "Muito Forte",
 	"vcmi.adventureMap.monsterThreat.levels.7"  : "Muito Forte",
 	"vcmi.adventureMap.monsterThreat.levels.8"  : "Desafiante",
 	"vcmi.adventureMap.monsterThreat.levels.8"  : "Desafiante",
-	"vcmi.adventureMap.monsterThreat.levels.9"  : "Dominante",
+	"vcmi.adventureMap.monsterThreat.levels.9"  : "Avassaladora",
 	"vcmi.adventureMap.monsterThreat.levels.10" : "Mortal",
 	"vcmi.adventureMap.monsterThreat.levels.10" : "Mortal",
 	"vcmi.adventureMap.monsterThreat.levels.11" : "Impossível",
 	"vcmi.adventureMap.monsterThreat.levels.11" : "Impossível",
+	"vcmi.adventureMap.monsterLevel" : "\n\nNível %LEVEL, unidade de %TOWN",
 
 
 	"vcmi.adventureMap.confirmRestartGame"               : "Tem certeza de que deseja reiniciar o jogo?",
 	"vcmi.adventureMap.confirmRestartGame"               : "Tem certeza de que deseja reiniciar o jogo?",
 	"vcmi.adventureMap.noTownWithMarket"                 : "Não há mercados disponíveis!",
 	"vcmi.adventureMap.noTownWithMarket"                 : "Não há mercados disponíveis!",
@@ -20,6 +21,7 @@
 	"vcmi.adventureMap.playerAttacked"                   : "O jogador foi atacado: %s",
 	"vcmi.adventureMap.playerAttacked"                   : "O jogador foi atacado: %s",
 	"vcmi.adventureMap.moveCostDetails"                  : "Pontos de movimento - Custo: %TURNS turnos + %POINTS pontos, Pontos restantes: %REMAINING",
 	"vcmi.adventureMap.moveCostDetails"                  : "Pontos de movimento - Custo: %TURNS turnos + %POINTS pontos, Pontos restantes: %REMAINING",
 	"vcmi.adventureMap.moveCostDetailsNoTurns"           : "Pontos de movimento - Custo: %POINTS pontos, Pontos restantes: %REMAINING",
 	"vcmi.adventureMap.moveCostDetailsNoTurns"           : "Pontos de movimento - Custo: %POINTS pontos, Pontos restantes: %REMAINING",
+	"vcmi.adventureMap.movementPointsHeroInfo" 			 : "(Pontos de movimento: %REMAINING / %POINTS)",
 	"vcmi.adventureMap.replayOpponentTurnNotImplemented" : "Desculpe, a repetição do turno do oponente ainda não está implementada!",
 	"vcmi.adventureMap.replayOpponentTurnNotImplemented" : "Desculpe, a repetição do turno do oponente ainda não está implementada!",
 
 
 	"vcmi.capitalColors.0" : "Vermelho",
 	"vcmi.capitalColors.0" : "Vermelho",
@@ -234,8 +236,10 @@
 	"vcmi.adventureOptions.borderScroll.help" : "{Rolagem de Borda}\n\nFaz o mapa de aventura rolar quando o cursor está adjacente à borda da janela. Pode ser desativado mantendo pressionada a tecla CTRL.",
 	"vcmi.adventureOptions.borderScroll.help" : "{Rolagem de Borda}\n\nFaz o mapa de aventura rolar quando o cursor está adjacente à borda da janela. Pode ser desativado mantendo pressionada a tecla CTRL.",
 	"vcmi.adventureOptions.infoBarCreatureManagement.hover" : "Gerenciar Criaturas no Painel de Info.",
 	"vcmi.adventureOptions.infoBarCreatureManagement.hover" : "Gerenciar Criaturas no Painel de Info.",
 	"vcmi.adventureOptions.infoBarCreatureManagement.help" : "{Gerencia as Criaturas no Painel de Informações}\n\nPermite reorganizar criaturas no painel de informações em vez de alternar entre os componentes padrão.",
 	"vcmi.adventureOptions.infoBarCreatureManagement.help" : "{Gerencia as Criaturas no Painel de Informações}\n\nPermite reorganizar criaturas no painel de informações em vez de alternar entre os componentes padrão.",
-	"vcmi.adventureOptions.leftButtonDrag.hover" : "Arrastar Mapa com o Botão Esquerdo",
+	"vcmi.adventureOptions.leftButtonDrag.hover" : "Botão Esq. Arrasta",
 	"vcmi.adventureOptions.leftButtonDrag.help" : "{Arrastar Mapa com o Botão Esquerdo}\n\nQuando ativado, mover o mouse com o botão esquerdo pressionado irá arrastar a visualização do mapa de aventura.",
 	"vcmi.adventureOptions.leftButtonDrag.help" : "{Arrastar Mapa com o Botão Esquerdo}\n\nQuando ativado, mover o mouse com o botão esquerdo pressionado irá arrastar a visualização do mapa de aventura.",
+	"vcmi.adventureOptions.rightButtonDrag.hover" : "Botão Dir. Arrasta",
+	"vcmi.adventureOptions.rightButtonDrag.help" : "{Arrastar Mapa com o Botão Direito}\n\nQuando ativado, mover o mouse com o botão direito pressionado irá arrastar a visualização do mapa de aventura.",
 	"vcmi.adventureOptions.smoothDragging.hover" : "Arrastar Suavemente o Mapa",
 	"vcmi.adventureOptions.smoothDragging.hover" : "Arrastar Suavemente o Mapa",
 	"vcmi.adventureOptions.smoothDragging.help" : "{Arrasta o Mapa Suavemente}\n\nQuando ativado, o arrasto do mapa tem um efeito de movimento moderno.",
 	"vcmi.adventureOptions.smoothDragging.help" : "{Arrasta o Mapa Suavemente}\n\nQuando ativado, o arrasto do mapa tem um efeito de movimento moderno.",
 	"vcmi.adventureOptions.skipAdventureMapAnimations.hover" : "Omitir Efeitos de Desvanecimento",
 	"vcmi.adventureOptions.skipAdventureMapAnimations.hover" : "Omitir Efeitos de Desvanecimento",
@@ -641,7 +645,7 @@
 	"core.bonus.SPELL_IMMUNITY.description" : "Imune a ${subtype.spell}",
 	"core.bonus.SPELL_IMMUNITY.description" : "Imune a ${subtype.spell}",
 	"core.bonus.SPELL_LIKE_ATTACK.name" : "Ataque Similar a Feitiço",
 	"core.bonus.SPELL_LIKE_ATTACK.name" : "Ataque Similar a Feitiço",
 	"core.bonus.SPELL_LIKE_ATTACK.description" : "Ataques com ${subtype.spell}",
 	"core.bonus.SPELL_LIKE_ATTACK.description" : "Ataques com ${subtype.spell}",
-	"core.bonus.SPELL_RESISTANCE_AURA.name" : "Aura de Resistência a Feitiços",
+	"core.bonus.SPELL_RESISTANCE_AURA.name" : "Aura de Resistência",
 	"core.bonus.SPELL_RESISTANCE_AURA.description" : "Pilhas próximas ganham ${val}% de resistência a magia",
 	"core.bonus.SPELL_RESISTANCE_AURA.description" : "Pilhas próximas ganham ${val}% de resistência a magia",
 	"core.bonus.SUMMON_GUARDIANS.name" : "Invocar Guardas",
 	"core.bonus.SUMMON_GUARDIANS.name" : "Invocar Guardas",
 	"core.bonus.SUMMON_GUARDIANS.description" : "No início da batalha, invoca ${subtype.creature} (${val}%)",
 	"core.bonus.SUMMON_GUARDIANS.description" : "No início da batalha, invoca ${subtype.creature} (${val}%)",
@@ -662,5 +666,7 @@
 	"core.bonus.WIDE_BREATH.name" : "Sopro Amplo",
 	"core.bonus.WIDE_BREATH.name" : "Sopro Amplo",
 	"core.bonus.WIDE_BREATH.description" : "Ataque de sopro amplo (vários hexágonos)",
 	"core.bonus.WIDE_BREATH.description" : "Ataque de sopro amplo (vários hexágonos)",
 	"core.bonus.DISINTEGRATE.name": "Desintegrar",
 	"core.bonus.DISINTEGRATE.name": "Desintegrar",
-	"core.bonus.DISINTEGRATE.description": "Nenhum corpo permanece após a morte"
+	"core.bonus.DISINTEGRATE.description": "Nenhum corpo permanece após a morte",
+	"core.bonus.INVINCIBLE.name": "Invencível",
+	"core.bonus.INVINCIBLE.description": "Não pode ser afetado por nada"
 }
 }

+ 2 - 2
client/CMakeLists.txt

@@ -95,10 +95,10 @@ set(vcmiclientcommon_SRCS
 	render/ImageLocator.cpp
 	render/ImageLocator.cpp
 
 
 	renderSDL/CBitmapFont.cpp
 	renderSDL/CBitmapFont.cpp
-	renderSDL/CBitmapHanFont.cpp
 	renderSDL/CTrueTypeFont.cpp
 	renderSDL/CTrueTypeFont.cpp
 	renderSDL/CursorHardware.cpp
 	renderSDL/CursorHardware.cpp
 	renderSDL/CursorSoftware.cpp
 	renderSDL/CursorSoftware.cpp
+	renderSDL/FontChain.cpp
 	renderSDL/ImageScaled.cpp
 	renderSDL/ImageScaled.cpp
 	renderSDL/RenderHandler.cpp
 	renderSDL/RenderHandler.cpp
 	renderSDL/SDLImage.cpp
 	renderSDL/SDLImage.cpp
@@ -303,10 +303,10 @@ set(vcmiclientcommon_HEADERS
 	render/IScreenHandler.h
 	render/IScreenHandler.h
 
 
 	renderSDL/CBitmapFont.h
 	renderSDL/CBitmapFont.h
-	renderSDL/CBitmapHanFont.h
 	renderSDL/CTrueTypeFont.h
 	renderSDL/CTrueTypeFont.h
 	renderSDL/CursorHardware.h
 	renderSDL/CursorHardware.h
 	renderSDL/CursorSoftware.h
 	renderSDL/CursorSoftware.h
+	renderSDL/FontChain.h
 	renderSDL/ImageScaled.h
 	renderSDL/ImageScaled.h
 	renderSDL/RenderHandler.h
 	renderSDL/RenderHandler.h
 	renderSDL/SDLImage.h
 	renderSDL/SDLImage.h

+ 1 - 1
client/CPlayerInterface.cpp

@@ -930,7 +930,7 @@ void CPlayerInterface::battleAttack(const BattleID & battleID, const BattleAttac
 			info.secondaryDefender.push_back(cb->getBattle(battleID)->battleGetStackByID(elem.stackAttacked));
 			info.secondaryDefender.push_back(cb->getBattle(battleID)->battleGetStackByID(elem.stackAttacked));
 		}
 		}
 	}
 	}
-	assert(info.defender != nullptr);
+	assert(info.defender != nullptr || (info.spellEffect != SpellID::NONE && info.indirectAttack));
 	assert(info.attacker != nullptr);
 	assert(info.attacker != nullptr);
 
 
 	battleInt->stackAttacking(info);
 	battleInt->stackAttacking(info);

+ 56 - 10
client/battle/BattleActionsController.cpp

@@ -175,6 +175,18 @@ void BattleActionsController::enterCreatureCastingMode()
 	if (!owner.stacksController->getActiveStack())
 	if (!owner.stacksController->getActiveStack())
 		return;
 		return;
 
 
+	if(owner.getBattle()->battleCanTargetEmptyHex(owner.stacksController->getActiveStack()))
+	{
+		auto actionFilterPredicate = [](const PossiblePlayerBattleAction x)
+		{
+			return x.get() != PossiblePlayerBattleAction::SHOOT;
+		};
+
+		vstd::erase_if(possibleActions, actionFilterPredicate);
+		GH.fakeMouseMove();
+		return;
+	}
+
 	if (!isActiveStackSpellcaster())
 	if (!isActiveStackSpellcaster())
 		return;
 		return;
 
 
@@ -263,6 +275,9 @@ void BattleActionsController::reorderPossibleActionsPriority(const CStack * stac
 				return 2;
 				return 2;
 				break;
 				break;
 			case PossiblePlayerBattleAction::SHOOT:
 			case PossiblePlayerBattleAction::SHOOT:
+				if(targetStack == nullptr || targetStack->unitSide() == stack->unitSide())
+					return 100; //bottom priority
+
 				return 4;
 				return 4;
 				break;
 				break;
 			case PossiblePlayerBattleAction::ATTACK_AND_RETURN:
 			case PossiblePlayerBattleAction::ATTACK_AND_RETURN:
@@ -356,6 +371,12 @@ const CSpell * BattleActionsController::getStackSpellToCast(BattleHex hoveredHex
 
 
 	auto action = selectAction(hoveredHex);
 	auto action = selectAction(hoveredHex);
 
 
+	if(owner.stacksController->getActiveStack()->hasBonusOfType(BonusType::SPELL_LIKE_ATTACK))
+	{
+		auto bonus = owner.stacksController->getActiveStack()->getBonus(Selector::type()(BonusType::SPELL_LIKE_ATTACK));
+		return bonus->subtype.as<SpellID>().toSpell();
+	}
+
 	if (action.spell() == SpellID::NONE)
 	if (action.spell() == SpellID::NONE)
 		return nullptr;
 		return nullptr;
 
 
@@ -514,6 +535,13 @@ std::string BattleActionsController::actionGetStatusMessage(PossiblePlayerBattle
 
 
 		case PossiblePlayerBattleAction::SHOOT:
 		case PossiblePlayerBattleAction::SHOOT:
 		{
 		{
+			if(targetStack == nullptr) //should be true only for spell-like attack
+			{
+				auto spellLikeAttackBonus = owner.stacksController->getActiveStack()->getBonus(Selector::type()(BonusType::SPELL_LIKE_ATTACK));
+				assert(spellLikeAttackBonus != nullptr);
+				return boost::str(boost::format(CGI->generaltexth->allTexts[26]) % spellLikeAttackBonus->subtype.as<SpellID>().toSpell()->getNameTranslated());
+			}
+
 			const auto * shooter = owner.stacksController->getActiveStack();
 			const auto * shooter = owner.stacksController->getActiveStack();
 
 
 			DamageEstimation retaliation;
 			DamageEstimation retaliation;
@@ -625,7 +653,20 @@ bool BattleActionsController::actionIsLegal(PossiblePlayerBattleAction action, B
 			return false;
 			return false;
 
 
 		case PossiblePlayerBattleAction::SHOOT:
 		case PossiblePlayerBattleAction::SHOOT:
-			return owner.getBattle()->battleCanShoot(owner.stacksController->getActiveStack(), targetHex);
+			{
+				auto currentStack = owner.stacksController->getActiveStack();
+				if(!owner.getBattle()->battleCanShoot(currentStack, targetHex))
+					return false;
+
+				if(targetStack == nullptr && owner.getBattle()->battleCanTargetEmptyHex(currentStack))
+				{
+					auto spellLikeAttackBonus = currentStack->getBonus(Selector::type()(BonusType::SPELL_LIKE_ATTACK));
+					const CSpell * spellDataToCheck = spellLikeAttackBonus->subtype.as<SpellID>().toSpell();
+					return isCastingPossibleHere(spellDataToCheck, nullptr, targetHex);
+				}
+
+				return true;
+			}
 
 
 		case PossiblePlayerBattleAction::NO_LOCATION:
 		case PossiblePlayerBattleAction::NO_LOCATION:
 			return false;
 			return false;
@@ -771,7 +812,7 @@ void BattleActionsController::actionRealize(PossiblePlayerBattleAction action, B
 				}
 				}
 			}
 			}
 
 
-			if (!spellcastingModeActive())
+			if (!heroSpellcastingModeActive())
 			{
 			{
 				if (action.spell().hasValue())
 				if (action.spell().hasValue())
 				{
 				{
@@ -1018,14 +1059,9 @@ void BattleActionsController::activateStack()
 
 
 void BattleActionsController::onHexRightClicked(BattleHex clickedHex)
 void BattleActionsController::onHexRightClicked(BattleHex clickedHex)
 {
 {
-	auto spellcastActionPredicate = [](PossiblePlayerBattleAction & action)
-	{
-		return action.spellcast();
-	};
+	bool isCurrentStackInSpellcastMode = creatureSpellcastingModeActive();
 
 
-	bool isCurrentStackInSpellcastMode = !possibleActions.empty() && std::all_of(possibleActions.begin(), possibleActions.end(), spellcastActionPredicate);
-
-	if (spellcastingModeActive() || isCurrentStackInSpellcastMode)
+	if (heroSpellcastingModeActive() || isCurrentStackInSpellcastMode)
 	{
 	{
 		endCastingSpell();
 		endCastingSpell();
 		CRClickPopup::createAndPush(CGI->generaltexth->translate("core.genrltxt.731")); // spell cancelled
 		CRClickPopup::createAndPush(CGI->generaltexth->translate("core.genrltxt.731")); // spell cancelled
@@ -1044,11 +1080,21 @@ void BattleActionsController::onHexRightClicked(BattleHex clickedHex)
 		owner.defendingHero->heroRightClicked();
 		owner.defendingHero->heroRightClicked();
 }
 }
 
 
-bool BattleActionsController::spellcastingModeActive() const
+bool BattleActionsController::heroSpellcastingModeActive() const
 {
 {
 	return heroSpellToCast != nullptr;
 	return heroSpellToCast != nullptr;
 }
 }
 
 
+bool BattleActionsController::creatureSpellcastingModeActive() const
+{
+	auto spellcastModePredicate = [](const PossiblePlayerBattleAction & action)
+	{
+		return action.spellcast() || action.get() == PossiblePlayerBattleAction::SHOOT; //for hotkey-eligible SPELL_LIKE_ATTACK creature should have only SHOOT action
+	};
+
+	return !possibleActions.empty() && std::all_of(possibleActions.begin(), possibleActions.end(), spellcastModePredicate);
+}
+
 bool BattleActionsController::currentActionSpellcasting(BattleHex hoveredHex)
 bool BattleActionsController::currentActionSpellcasting(BattleHex hoveredHex)
 {
 {
 	if (heroSpellToCast)
 	if (heroSpellToCast)

+ 4 - 2
client/battle/BattleActionsController.h

@@ -82,8 +82,10 @@ public:
 	/// initialize list of potential actions for new active stack
 	/// initialize list of potential actions for new active stack
 	void activateStack();
 	void activateStack();
 
 
-	/// returns true if UI is currently in target selection mode
-	bool spellcastingModeActive() const;
+	/// returns true if UI is currently in hero spell target selection mode
+	bool heroSpellcastingModeActive() const;
+	/// returns true if UI is currently in "F" hotkey creature spell target selection mode
+	bool creatureSpellcastingModeActive() const;
 
 
 	/// returns true if one of the following is true:
 	/// returns true if one of the following is true:
 	/// - we are casting spell by hero
 	/// - we are casting spell by hero

+ 3 - 1
client/battle/BattleFieldController.cpp

@@ -566,7 +566,9 @@ void BattleFieldController::showHighlightedHexes(Canvas & canvas)
 		calculateRangeLimitAndHighlightImages(shootingRangeDistance, shootingRangeLimitImages, shootingRangeLimitHexes, shootingRangeLimitHexesHighlights);
 		calculateRangeLimitAndHighlightImages(shootingRangeDistance, shootingRangeLimitImages, shootingRangeLimitHexes, shootingRangeLimitHexesHighlights);
 	}
 	}
 
 
-	bool useSpellRangeForMouse = hoveredHex != BattleHex::INVALID && owner.actionsController->currentActionSpellcasting(getHoveredHex());
+	bool useSpellRangeForMouse = hoveredHex != BattleHex::INVALID
+		&& (owner.actionsController->currentActionSpellcasting(getHoveredHex())
+			|| owner.actionsController->creatureSpellcastingModeActive()); //at least shooting with SPELL_LIKE_ATTACK can operate in spellcasting mode without being actual spellcast
 	bool useMoveRangeForMouse = !hoveredMoveHexes.empty() || !settings["battle"]["mouseShadow"].Bool();
 	bool useMoveRangeForMouse = !hoveredMoveHexes.empty() || !settings["battle"]["mouseShadow"].Bool();
 
 
 	const auto & hoveredMouseHexes = useSpellRangeForMouse ? hoveredSpellHexes : ( useMoveRangeForMouse ? hoveredMoveHexes : hoveredMouseHex);
 	const auto & hoveredMouseHexes = useSpellRangeForMouse ? hoveredSpellHexes : ( useMoveRangeForMouse ? hoveredMoveHexes : hoveredMouseHex);

+ 5 - 3
client/battle/BattleInterfaceClasses.cpp

@@ -112,9 +112,10 @@ std::vector<std::string> BattleConsole::splitText(const std::string &text)
 
 
 	boost::split(lines, text, boost::is_any_of("\n"));
 	boost::split(lines, text, boost::is_any_of("\n"));
 
 
+	const auto & font = GH.renderHandler().loadFont(FONT_SMALL);
 	for(const auto & line : lines)
 	for(const auto & line : lines)
 	{
 	{
-		if (graphics->fonts[FONT_SMALL]->getStringWidth(text) < pos.w)
+		if (font->getStringWidth(text) < pos.w)
 		{
 		{
 			output.push_back(line);
 			output.push_back(line);
 		}
 		}
@@ -327,7 +328,7 @@ void BattleHero::setPhase(EHeroAnimType newPhase)
 
 
 void BattleHero::heroLeftClicked()
 void BattleHero::heroLeftClicked()
 {
 {
-	if(owner.actionsController->spellcastingModeActive()) //we are casting a spell
+	if(owner.actionsController->heroSpellcastingModeActive()) //we are casting a spell
 		return;
 		return;
 
 
 	if(!hero || !owner.makingTurn())
 	if(!hero || !owner.makingTurn())
@@ -1098,7 +1099,8 @@ void StackQueue::StackBox::setUnit(const battle::Unit * unit, size_t turn, std::
 		if(currentTurn && !owner->embedded)
 		if(currentTurn && !owner->embedded)
 		{
 		{
 			std::string tmp = std::to_string(*currentTurn);
 			std::string tmp = std::to_string(*currentTurn);
-			int len = graphics->fonts[FONT_SMALL]->getStringWidth(tmp);
+			const auto & font = GH.renderHandler().loadFont(FONT_SMALL);
+			int len = font->getStringWidth(tmp);
 			roundRect->pos.w = len + 6;
 			roundRect->pos.w = len + 6;
 			round->setText(tmp);
 			round->setText(tmp);
 		}
 		}

+ 4 - 1
client/battle/BattleOverlayLogVisualizer.cpp

@@ -17,7 +17,9 @@
 #include "../render/Colors.h"
 #include "../render/Colors.h"
 #include "../render/EFont.h"
 #include "../render/EFont.h"
 #include "../render/IFont.h"
 #include "../render/IFont.h"
+#include "../render/IRenderHandler.h"
 #include "../gui/TextAlignment.h"
 #include "../gui/TextAlignment.h"
+#include "../gui/CGuiHandler.h"
 #include "../render/Graphics.h"
 #include "../render/Graphics.h"
 
 
 BattleOverlayLogVisualizer::BattleOverlayLogVisualizer(
 BattleOverlayLogVisualizer::BattleOverlayLogVisualizer(
@@ -30,7 +32,8 @@ BattleOverlayLogVisualizer::BattleOverlayLogVisualizer(
 void BattleOverlayLogVisualizer::drawText(BattleHex hex, int lineNumber, const std::string & text)
 void BattleOverlayLogVisualizer::drawText(BattleHex hex, int lineNumber, const std::string & text)
 {
 {
 	Point offset = owner.fieldController->hexPositionLocal(hex).topLeft() + Point(20, 20);
 	Point offset = owner.fieldController->hexPositionLocal(hex).topLeft() + Point(20, 20);
-	int h = graphics->fonts[EFonts::FONT_TINY]->getLineHeight();
+	const auto & font = GH.renderHandler().loadFont(FONT_TINY);
+	int h = font->getLineHeight();
 
 
 	offset.y += h * lineNumber;
 	offset.y += h * lineNumber;
 
 

+ 4 - 3
client/battle/BattleStacksController.cpp

@@ -318,10 +318,10 @@ void BattleStacksController::showStackAmountBox(Canvas & canvas, const CStack *
 			boxPosition = owner.fieldController->hexPositionLocal(frontPos).center() + Point(-8, -14);
 			boxPosition = owner.fieldController->hexPositionLocal(frontPos).center() + Point(-8, -14);
 	}
 	}
 
 
-	Point textPosition = Point(amountBG->dimensions().x/2 + boxPosition.x, boxPosition.y + graphics->fonts[EFonts::FONT_TINY]->getLineHeight() - 6);
+	Point textPosition = Point(amountBG->dimensions().x/2 + boxPosition.x, boxPosition.y + amountBG->dimensions().y/2);
 
 
 	canvas.draw(amountBG, boxPosition);
 	canvas.draw(amountBG, boxPosition);
-	canvas.drawText(textPosition, EFonts::FONT_TINY, Colors::WHITE, ETextAlignment::TOPCENTER, TextOperations::formatMetric(stack->getCount(), 4));
+	canvas.drawText(textPosition, EFonts::FONT_TINY, Colors::WHITE, ETextAlignment::CENTER, TextOperations::formatMetric(stack->getCount(), 4));
 }
 }
 
 
 void BattleStacksController::showStack(Canvas & canvas, const CStack * stack)
 void BattleStacksController::showStack(Canvas & canvas, const CStack * stack)
@@ -862,7 +862,8 @@ std::vector<const CStack *> BattleStacksController::selectHoveredStacks()
 	spell = owner.actionsController->getCurrentSpell(hoveredHex);
 	spell = owner.actionsController->getCurrentSpell(hoveredHex);
 	caster = owner.actionsController->getCurrentSpellcaster();
 	caster = owner.actionsController->getCurrentSpellcaster();
 
 
-	if(caster && spell && owner.actionsController->currentActionSpellcasting(hoveredHex) ) //when casting spell
+	//casting spell or in explicit spellcasting mode that also handles SPELL_LIKE_ATTACK
+	if(caster && spell && (owner.actionsController->currentActionSpellcasting(hoveredHex) || owner.actionsController->creatureSpellcastingModeActive()))
 	{
 	{
 		spells::Target target;
 		spells::Target target;
 		target.emplace_back(hoveredHex);
 		target.emplace_back(hoveredHex);

+ 11 - 11
client/battle/BattleWindow.cpp

@@ -538,7 +538,7 @@ void BattleWindow::tacticPhaseEnded()
 
 
 void BattleWindow::bOptionsf()
 void BattleWindow::bOptionsf()
 {
 {
-	if (owner.actionsController->spellcastingModeActive())
+	if (owner.actionsController->heroSpellcastingModeActive())
 		return;
 		return;
 
 
 	CCS->curh->set(Cursor::Map::POINTER);
 	CCS->curh->set(Cursor::Map::POINTER);
@@ -548,7 +548,7 @@ void BattleWindow::bOptionsf()
 
 
 void BattleWindow::bSurrenderf()
 void BattleWindow::bSurrenderf()
 {
 {
-	if (owner.actionsController->spellcastingModeActive())
+	if (owner.actionsController->heroSpellcastingModeActive())
 		return;
 		return;
 
 
 	int cost = owner.getBattle()->battleGetSurrenderCost();
 	int cost = owner.getBattle()->battleGetSurrenderCost();
@@ -568,7 +568,7 @@ void BattleWindow::bSurrenderf()
 
 
 void BattleWindow::bFleef()
 void BattleWindow::bFleef()
 {
 {
-	if (owner.actionsController->spellcastingModeActive())
+	if (owner.actionsController->heroSpellcastingModeActive())
 		return;
 		return;
 
 
 	if ( owner.getBattle()->battleCanFlee() )
 	if ( owner.getBattle()->battleCanFlee() )
@@ -675,7 +675,7 @@ void BattleWindow::setAlternativeActions(const std::list<PossiblePlayerBattleAct
 
 
 void BattleWindow::bAutofightf()
 void BattleWindow::bAutofightf()
 {
 {
-	if (owner.actionsController->spellcastingModeActive())
+	if (owner.actionsController->heroSpellcastingModeActive())
 		return;
 		return;
 
 
 	if(settings["battle"]["endWithAutocombat"].Bool() && onlyOnePlayerHuman)
 	if(settings["battle"]["endWithAutocombat"].Bool() && onlyOnePlayerHuman)
@@ -712,7 +712,7 @@ void BattleWindow::bAutofightf()
 
 
 void BattleWindow::bSpellf()
 void BattleWindow::bSpellf()
 {
 {
-	if (owner.actionsController->spellcastingModeActive())
+	if (owner.actionsController->heroSpellcastingModeActive())
 		return;
 		return;
 
 
 	if (!owner.makingTurn())
 	if (!owner.makingTurn())
@@ -785,7 +785,7 @@ void BattleWindow::bSwitchActionf()
 
 
 void BattleWindow::bWaitf()
 void BattleWindow::bWaitf()
 {
 {
-	if (owner.actionsController->spellcastingModeActive())
+	if (owner.actionsController->heroSpellcastingModeActive())
 		return;
 		return;
 
 
 	if (owner.stacksController->getActiveStack() != nullptr)
 	if (owner.stacksController->getActiveStack() != nullptr)
@@ -794,7 +794,7 @@ void BattleWindow::bWaitf()
 
 
 void BattleWindow::bDefencef()
 void BattleWindow::bDefencef()
 {
 {
-	if (owner.actionsController->spellcastingModeActive())
+	if (owner.actionsController->heroSpellcastingModeActive())
 		return;
 		return;
 
 
 	if (owner.stacksController->getActiveStack() != nullptr)
 	if (owner.stacksController->getActiveStack() != nullptr)
@@ -803,7 +803,7 @@ void BattleWindow::bDefencef()
 
 
 void BattleWindow::bConsoleUpf()
 void BattleWindow::bConsoleUpf()
 {
 {
-	if (owner.actionsController->spellcastingModeActive())
+	if (owner.actionsController->heroSpellcastingModeActive())
 		return;
 		return;
 
 
 	console->scrollUp();
 	console->scrollUp();
@@ -811,7 +811,7 @@ void BattleWindow::bConsoleUpf()
 
 
 void BattleWindow::bConsoleDownf()
 void BattleWindow::bConsoleDownf()
 {
 {
-	if (owner.actionsController->spellcastingModeActive())
+	if (owner.actionsController->heroSpellcastingModeActive())
 		return;
 		return;
 
 
 	console->scrollDown();
 	console->scrollDown();
@@ -851,8 +851,8 @@ void BattleWindow::blockUI(bool on)
 	setShortcutBlocked(EShortcut::BATTLE_WAIT, on || owner.tacticsMode || !canWait);
 	setShortcutBlocked(EShortcut::BATTLE_WAIT, on || owner.tacticsMode || !canWait);
 	setShortcutBlocked(EShortcut::BATTLE_DEFEND, on || owner.tacticsMode);
 	setShortcutBlocked(EShortcut::BATTLE_DEFEND, on || owner.tacticsMode);
 	setShortcutBlocked(EShortcut::BATTLE_SELECT_ACTION, on || owner.tacticsMode);
 	setShortcutBlocked(EShortcut::BATTLE_SELECT_ACTION, on || owner.tacticsMode);
-	setShortcutBlocked(EShortcut::BATTLE_AUTOCOMBAT, (settings["battle"]["endWithAutocombat"].Bool() && onlyOnePlayerHuman) ? on || owner.tacticsMode || owner.actionsController->spellcastingModeActive() : owner.actionsController->spellcastingModeActive());
-	setShortcutBlocked(EShortcut::BATTLE_END_WITH_AUTOCOMBAT, on || owner.tacticsMode || !onlyOnePlayerHuman || owner.actionsController->spellcastingModeActive());
+	setShortcutBlocked(EShortcut::BATTLE_AUTOCOMBAT, (settings["battle"]["endWithAutocombat"].Bool() && onlyOnePlayerHuman) ? on || owner.tacticsMode || owner.actionsController->heroSpellcastingModeActive() : owner.actionsController->heroSpellcastingModeActive());
+	setShortcutBlocked(EShortcut::BATTLE_END_WITH_AUTOCOMBAT, on || owner.tacticsMode || !onlyOnePlayerHuman || owner.actionsController->heroSpellcastingModeActive());
 	setShortcutBlocked(EShortcut::BATTLE_TACTICS_END, on || !owner.tacticsMode);
 	setShortcutBlocked(EShortcut::BATTLE_TACTICS_END, on || !owner.tacticsMode);
 	setShortcutBlocked(EShortcut::BATTLE_TACTICS_NEXT, on || !owner.tacticsMode);
 	setShortcutBlocked(EShortcut::BATTLE_TACTICS_NEXT, on || !owner.tacticsMode);
 	setShortcutBlocked(EShortcut::BATTLE_CONSOLE_DOWN, on && !owner.tacticsMode);
 	setShortcutBlocked(EShortcut::BATTLE_CONSOLE_DOWN, on && !owner.tacticsMode);

+ 2 - 1
client/gui/CGuiHandler.cpp

@@ -192,7 +192,8 @@ void CGuiHandler::drawFPSCounter()
 
 
 	std::string fps = std::to_string(framerate().getFramerate())+" FPS";
 	std::string fps = std::to_string(framerate().getFramerate())+" FPS";
 
 
-	graphics->fonts[FONT_SMALL]->renderTextLeft(screen, fps, Colors::WHITE, Point(8 * scaling, screen->h-22 * scaling));
+	const auto & font = GH.renderHandler().loadFont(FONT_SMALL);
+	font->renderTextLeft(screen, fps, Colors::WHITE, Point(8 * scaling, screen->h-22 * scaling));
 }
 }
 
 
 bool CGuiHandler::amIGuiThread()
 bool CGuiHandler::amIGuiThread()

+ 4 - 0
client/gui/EventDispatcher.cpp

@@ -254,6 +254,10 @@ void EventDispatcher::handleLeftButtonClick(const Point & position, int toleranc
 				i->mouseClickedState = isPressed;
 				i->mouseClickedState = isPressed;
 				i->clickCancel(position);
 				i->clickCancel(position);
 			}
 			}
+			else if(isPressed)
+			{
+				i->notFocusedClick();
+			}
 		}
 		}
 	}
 	}
 }
 }

+ 1 - 0
client/gui/EventsReceiver.h

@@ -51,6 +51,7 @@ public:
 	virtual void clickCancel(const Point & cursorPosition) {}
 	virtual void clickCancel(const Point & cursorPosition) {}
 	virtual void showPopupWindow(const Point & cursorPosition) {}
 	virtual void showPopupWindow(const Point & cursorPosition) {}
 	virtual void clickDouble(const Point & cursorPosition) {}
 	virtual void clickDouble(const Point & cursorPosition) {}
+	virtual void notFocusedClick() {};
 
 
 	/// Called when user pans screen by specified distance
 	/// Called when user pans screen by specified distance
 	virtual void gesturePanning(const Point & initialPosition, const Point & currentPosition, const Point & lastUpdateDistance) {}
 	virtual void gesturePanning(const Point & initialPosition, const Point & currentPosition, const Point & lastUpdateDistance) {}

+ 4 - 2
client/gui/InterfaceObjectConfigurable.cpp

@@ -19,6 +19,7 @@
 #include "../gui/Shortcut.h"
 #include "../gui/Shortcut.h"
 #include "../render/Graphics.h"
 #include "../render/Graphics.h"
 #include "../render/IFont.h"
 #include "../render/IFont.h"
+#include "../render/IRenderHandler.h"
 #include "../widgets/CComponent.h"
 #include "../widgets/CComponent.h"
 #include "../widgets/ComboBox.h"
 #include "../widgets/ComboBox.h"
 #include "../widgets/Buttons.h"
 #include "../widgets/Buttons.h"
@@ -284,7 +285,7 @@ EFonts InterfaceObjectConfigurable::readFont(const JsonNode & config) const
 			return EFonts::FONT_CALLI;
 			return EFonts::FONT_CALLI;
 	}
 	}
 	logGlobal->debug("Unknown font attribute");
 	logGlobal->debug("Unknown font attribute");
-	return EFonts::FONT_TIMES;
+	return EFonts::FONT_MEDIUM;
 }
 }
 
 
 std::pair<std::string, std::string> InterfaceObjectConfigurable::readHintText(const JsonNode & config) const
 std::pair<std::string, std::string> InterfaceObjectConfigurable::readHintText(const JsonNode & config) const
@@ -357,8 +358,9 @@ std::shared_ptr<CMultiLineLabel> InterfaceObjectConfigurable::buildMultiLineLabe
 	auto color = readColor(config["color"]);
 	auto color = readColor(config["color"]);
 	auto text = readText(config["text"]);
 	auto text = readText(config["text"]);
 	Rect rect = readRect(config["rect"]);
 	Rect rect = readRect(config["rect"]);
+	const auto & fontPtr = GH.renderHandler().loadFont(font);
 	if(!config["adoptHeight"].isNull() && config["adoptHeight"].Bool())
 	if(!config["adoptHeight"].isNull() && config["adoptHeight"].Bool())
-		rect.h = graphics->fonts[font]->getLineHeight() * 2;
+		rect.h = fontPtr->getLineHeight() * 2;
 	return std::make_shared<CMultiLineLabel>(rect, font, alignment, color, text);
 	return std::make_shared<CMultiLineLabel>(rect, font, alignment, color, text);
 }
 }
 
 

+ 20 - 6
client/lobby/CBonusSelection.cpp

@@ -55,6 +55,7 @@
 #include "../../lib/campaign/CampaignState.h"
 #include "../../lib/campaign/CampaignState.h"
 #include "../../lib/mapping/CMapService.h"
 #include "../../lib/mapping/CMapService.h"
 #include "../../lib/mapping/CMapInfo.h"
 #include "../../lib/mapping/CMapInfo.h"
+#include "../../lib/mapping/CMapHeader.h"
 
 
 #include "../../lib/mapObjects/CGHeroInstance.h"
 #include "../../lib/mapObjects/CGHeroInstance.h"
 
 
@@ -126,9 +127,11 @@ CBonusSelection::CBonusSelection()
 	for(auto scenarioID : getCampaign()->allScenarios())
 	for(auto scenarioID : getCampaign()->allScenarios())
 	{
 	{
 		if(getCampaign()->isAvailable(scenarioID))
 		if(getCampaign()->isAvailable(scenarioID))
-			regions.push_back(std::make_shared<CRegion>(scenarioID, true, true, getCampaign()->getRegions()));
+			regions.push_back(std::make_shared<CRegion>(scenarioID, true, true, false, getCampaign()->getRegions()));
 		else if(getCampaign()->isConquered(scenarioID)) //display as striped
 		else if(getCampaign()->isConquered(scenarioID)) //display as striped
-			regions.push_back(std::make_shared<CRegion>(scenarioID, false, false, getCampaign()->getRegions()));
+			regions.push_back(std::make_shared<CRegion>(scenarioID, false, false, false, getCampaign()->getRegions()));
+		else
+			regions.push_back(std::make_shared<CRegion>(scenarioID, false, false, true, getCampaign()->getRegions()));
 	}
 	}
 
 
 	if (!getCampaign()->getMusic().empty())
 	if (!getCampaign()->getMusic().empty())
@@ -400,6 +403,7 @@ void CBonusSelection::goBack()
 		CSH->state = EClientState::LOBBY;
 		CSH->state = EClientState::LOBBY;
 	}
 	}
 */
 */
+	CMM->playMusic();
 }
 }
 
 
 void CBonusSelection::startMap()
 void CBonusSelection::startMap()
@@ -476,8 +480,8 @@ void CBonusSelection::decreaseDifficulty()
 		CSH->setDifficulty(CSH->si->difficulty - 1);
 		CSH->setDifficulty(CSH->si->difficulty - 1);
 }
 }
 
 
-CBonusSelection::CRegion::CRegion(CampaignScenarioID id, bool accessible, bool selectable, const CampaignRegions & campDsc)
-	: CIntObject(LCLICK | SHOW_POPUP), idOfMapAndRegion(id), accessible(accessible), selectable(selectable)
+CBonusSelection::CRegion::CRegion(CampaignScenarioID id, bool accessible, bool selectable, bool labelOnly, const CampaignRegions & campDsc)
+	: CIntObject(LCLICK | SHOW_POPUP), idOfMapAndRegion(id), accessible(accessible), selectable(selectable), labelOnly(labelOnly)
 {
 {
 	OBJECT_CONSTRUCTION;
 	OBJECT_CONSTRUCTION;
 
 
@@ -493,10 +497,20 @@ CBonusSelection::CRegion::CRegion(CampaignScenarioID id, bool accessible, bool s
 	graphicsStriped->disable();
 	graphicsStriped->disable();
 	pos.w = graphicsNotSelected->pos.w;
 	pos.w = graphicsNotSelected->pos.w;
 	pos.h = graphicsNotSelected->pos.h;
 	pos.h = graphicsNotSelected->pos.h;
+
+	auto labelPos = campDsc.getLabelPosition(id);
+	if(labelPos)
+	{
+		auto mapHeader = CSH->si->campState->getMapHeader(idOfMapAndRegion);
+		label = std::make_shared<CLabel>((*labelPos).x, (*labelPos).y, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, mapHeader->name.toString());
+	}
 }
 }
 
 
 void CBonusSelection::CRegion::updateState()
 void CBonusSelection::CRegion::updateState()
 {
 {
+	if(labelOnly)
+		return;
+
 	if(!accessible)
 	if(!accessible)
 	{
 	{
 		graphicsNotSelected->disable();
 		graphicsNotSelected->disable();
@@ -519,7 +533,7 @@ void CBonusSelection::CRegion::updateState()
 
 
 void CBonusSelection::CRegion::clickReleased(const Point & cursorPosition)
 void CBonusSelection::CRegion::clickReleased(const Point & cursorPosition)
 {
 {
-	if(selectable && !graphicsNotSelected->getSurface()->isTransparent(cursorPosition - pos.topLeft()))
+	if(!labelOnly && selectable && !graphicsNotSelected->getSurface()->isTransparent(cursorPosition - pos.topLeft()))
 	{
 	{
 		CSH->setCampaignMap(idOfMapAndRegion);
 		CSH->setCampaignMap(idOfMapAndRegion);
 	}
 	}
@@ -529,7 +543,7 @@ void CBonusSelection::CRegion::showPopupWindow(const Point & cursorPosition)
 {
 {
 	// FIXME: For some reason "down" is only ever contain indeterminate_value
 	// FIXME: For some reason "down" is only ever contain indeterminate_value
 	auto & text = CSH->si->campState->scenario(idOfMapAndRegion).regionText;
 	auto & text = CSH->si->campState->scenario(idOfMapAndRegion).regionText;
-	if(!graphicsNotSelected->getSurface()->isTransparent(cursorPosition - pos.topLeft()) && !text.empty())
+	if(!labelOnly && !graphicsNotSelected->getSurface()->isTransparent(cursorPosition - pos.topLeft()) && !text.empty())
 	{
 	{
 		CRClickPopup::createAndPush(text.toString());
 		CRClickPopup::createAndPush(text.toString());
 	}
 	}

+ 3 - 1
client/lobby/CBonusSelection.h

@@ -49,8 +49,10 @@ public:
 		CampaignScenarioID idOfMapAndRegion;
 		CampaignScenarioID idOfMapAndRegion;
 		bool accessible; // false if region should be striped
 		bool accessible; // false if region should be striped
 		bool selectable; // true if region should be selectable
 		bool selectable; // true if region should be selectable
+		bool labelOnly;
+		std::shared_ptr<CLabel> label;
 	public:
 	public:
-		CRegion(CampaignScenarioID id, bool accessible, bool selectable, const CampaignRegions & campDsc);
+		CRegion(CampaignScenarioID id, bool accessible, bool selectable, bool labelOnly, const CampaignRegions & campDsc);
 		void updateState();
 		void updateState();
 		void clickReleased(const Point & cursorPosition) override;
 		void clickReleased(const Point & cursorPosition) override;
 		void showPopupWindow(const Point & cursorPosition) override;
 		void showPopupWindow(const Point & cursorPosition) override;

+ 6 - 3
client/lobby/CSelectionBase.cpp

@@ -256,15 +256,17 @@ void InfoCard::changeSelection()
 	if(!showChat)
 	if(!showChat)
 		labelGroupPlayers->disable();
 		labelGroupPlayers->disable();
 
 
+	const auto & font = GH.renderHandler().loadFont(FONT_SMALL);
+
 	for(const auto & p : CSH->playerNames)
 	for(const auto & p : CSH->playerNames)
 	{
 	{
 		int slotsUsed = labelGroupPlayers->currentSize();
 		int slotsUsed = labelGroupPlayers->currentSize();
 		Point labelPosition;
 		Point labelPosition;
 
 
 		if(slotsUsed < 4)
 		if(slotsUsed < 4)
-			labelPosition = Point(24, 285 + slotsUsed * graphics->fonts[FONT_SMALL]->getLineHeight()); // left column
+			labelPosition = Point(24, 285 + slotsUsed * font->getLineHeight()); // left column
 		else
 		else
-			labelPosition = Point(193, 285 + (slotsUsed - 4) * graphics->fonts[FONT_SMALL]->getLineHeight()); // right column
+			labelPosition = Point(193, 285 + (slotsUsed - 4) * font->getLineHeight()); // right column
 
 
 		labelGroupPlayers->add(labelPosition.x, labelPosition.y, p.second.name);
 		labelGroupPlayers->add(labelPosition.x, labelPosition.y, p.second.name);
 	}
 	}
@@ -358,7 +360,8 @@ CChatBox::CChatBox(const Rect & rect)
 	pos += rect.topLeft();
 	pos += rect.topLeft();
 	setRedrawParent(true);
 	setRedrawParent(true);
 
 
-	const int height = static_cast<int>(graphics->fonts[FONT_SMALL]->getLineHeight());
+	const auto & font = GH.renderHandler().loadFont(FONT_SMALL);
+	const int height = font->getLineHeight();
 	Rect textInputArea(1, rect.h - height, rect.w - 1, height);
 	Rect textInputArea(1, rect.h - height, rect.w - 1, height);
 	Rect chatHistoryArea(3, 1, rect.w - 3, rect.h - height - 1);
 	Rect chatHistoryArea(3, 1, rect.w - 3, rect.h - height - 1);
 	inputBackground = std::make_shared<TransparentFilledRectangle>(textInputArea, ColorRGBA(0,0,0,192));
 	inputBackground = std::make_shared<TransparentFilledRectangle>(textInputArea, ColorRGBA(0,0,0,192));

+ 6 - 3
client/lobby/OptionsTab.cpp

@@ -19,6 +19,7 @@
 #include "../gui/WindowHandler.h"
 #include "../gui/WindowHandler.h"
 #include "../render/Graphics.h"
 #include "../render/Graphics.h"
 #include "../render/IFont.h"
 #include "../render/IFont.h"
+#include "../render/IRenderHandler.h"
 #include "../media/ISoundPlayer.h"
 #include "../media/ISoundPlayer.h"
 #include "../widgets/CComponent.h"
 #include "../widgets/CComponent.h"
 #include "../widgets/ComboBox.h"
 #include "../widgets/ComboBox.h"
@@ -1034,12 +1035,14 @@ OptionsTab::PlayerOptionsEntry::PlayerOptionsEntry(const PlayerSettings & S, con
 		labelPlayerNameEdit = std::make_shared<CTextInput>(Rect(6, 3, 95, 15), EFonts::FONT_SMALL, ETextAlignment::CENTER, false);
 		labelPlayerNameEdit = std::make_shared<CTextInput>(Rect(6, 3, 95, 15), EFonts::FONT_SMALL, ETextAlignment::CENTER, false);
 		labelPlayerNameEdit->setText(name);
 		labelPlayerNameEdit->setText(name);
 	}
 	}
-	labelWhoCanPlay = std::make_shared<CMultiLineLabel>(Rect(6, 23, 45, (int)graphics->fonts[EFonts::FONT_TINY]->getLineHeight()*2), EFonts::FONT_TINY, ETextAlignment::CENTER, Colors::WHITE, CGI->generaltexth->arraytxt[206 + whoCanPlay]);
+	const auto & font = GH.renderHandler().loadFont(FONT_SMALL);
+
+	labelWhoCanPlay = std::make_shared<CMultiLineLabel>(Rect(6, 23, 45, font->getLineHeight()*2), EFonts::FONT_TINY, ETextAlignment::CENTER, Colors::WHITE, CGI->generaltexth->arraytxt[206 + whoCanPlay]);
 
 
 	auto hasHandicap = [this](){ return s->handicap.startBonus.empty() && s->handicap.percentIncome == 100 && s->handicap.percentGrowth == 100; };
 	auto hasHandicap = [this](){ return s->handicap.startBonus.empty() && s->handicap.percentIncome == 100 && s->handicap.percentGrowth == 100; };
 	std::string labelHandicapText = hasHandicap() ? CGI->generaltexth->arraytxt[210] : MetaString::createFromTextID("vcmi.lobby.handicap").toString();
 	std::string labelHandicapText = hasHandicap() ? CGI->generaltexth->arraytxt[210] : MetaString::createFromTextID("vcmi.lobby.handicap").toString();
-	labelHandicap = std::make_shared<CMultiLineLabel>(Rect(57, 24, 47, (int)graphics->fonts[EFonts::FONT_TINY]->getLineHeight()*2), EFonts::FONT_TINY, ETextAlignment::CENTER, Colors::WHITE, labelHandicapText);
-	handicap = std::make_shared<LRClickableArea>(Rect(56, 24, 49, (int)graphics->fonts[EFonts::FONT_TINY]->getLineHeight()*2), [](){
+	labelHandicap = std::make_shared<CMultiLineLabel>(Rect(57, 24, 47, font->getLineHeight()*2), EFonts::FONT_TINY, ETextAlignment::CENTER, Colors::WHITE, labelHandicapText);
+	handicap = std::make_shared<LRClickableArea>(Rect(56, 24, 49, font->getLineHeight()*2), [](){
 		if(!CSH->isHost())
 		if(!CSH->isHost())
 			return;
 			return;
 		
 		

+ 6 - 2
client/mapView/MapOverlayLogVisualizer.cpp

@@ -17,8 +17,10 @@
 #include "../render/Colors.h"
 #include "../render/Colors.h"
 #include "../render/EFont.h"
 #include "../render/EFont.h"
 #include "../render/IFont.h"
 #include "../render/IFont.h"
+#include "../render/IRenderHandler.h"
 #include "../render/Graphics.h"
 #include "../render/Graphics.h"
 #include "../gui/TextAlignment.h"
 #include "../gui/TextAlignment.h"
+#include "../gui/CGuiHandler.h"
 
 
 
 
 MapOverlayLogVisualizer::MapOverlayLogVisualizer(Canvas & target, std::shared_ptr<MapViewModel> model)
 MapOverlayLogVisualizer::MapOverlayLogVisualizer(Canvas & target, std::shared_ptr<MapViewModel> model)
@@ -78,8 +80,10 @@ void MapOverlayLogVisualizer::drawText(
 
 
 	if(viewPort.isInside(pStart))
 	if(viewPort.isInside(pStart))
 	{
 	{
-		int w = graphics->fonts[EFonts::FONT_TINY]->getStringWidth(text);
-		int h = graphics->fonts[EFonts::FONT_TINY]->getLineHeight();
+		const auto & font = GH.renderHandler().loadFont(FONT_TINY);
+
+		int w = font->getStringWidth(text);
+		int h = font->getLineHeight();
 
 
 		pStart.y += h * lineNumber;
 		pStart.y += h * lineNumber;
 
 

+ 2 - 2
client/mapView/MapViewCache.cpp

@@ -188,6 +188,8 @@ void MapViewCache::render(const std::shared_ptr<IMapRendererContext> & context,
 
 
 	if(context->showTextOverlay())
 	if(context->showTextOverlay())
 	{
 	{
+		const auto & font = GH.renderHandler().loadFont(FONT_TINY);
+
 		for(int y = dimensions.top(); y < dimensions.bottom(); ++y)
 		for(int y = dimensions.top(); y < dimensions.bottom(); ++y)
 		{
 		{
 			for(int x = dimensions.left(); x < dimensions.right(); ++x)
 			for(int x = dimensions.left(); x < dimensions.right(); ++x)
@@ -204,8 +206,6 @@ void MapViewCache::render(const std::shared_ptr<IMapRendererContext> & context,
 					else
 					else
 						position.y -= targetRect.h / 4;
 						position.y -= targetRect.h / 4;
 
 
-					const auto font = graphics->fonts[EFonts::FONT_TINY];
-
 					Point dimensions(font->getStringWidth(overlay), font->getLineHeight());
 					Point dimensions(font->getStringWidth(overlay), font->getLineHeight());
 					Rect textRect = Rect(position - dimensions / 2, dimensions).resize(2);
 					Rect textRect = Rect(position - dimensions / 2, dimensions).resize(2);
 
 

+ 13 - 8
client/render/Canvas.cpp

@@ -11,6 +11,7 @@
 #include "Canvas.h"
 #include "Canvas.h"
 
 
 #include "../gui/CGuiHandler.h"
 #include "../gui/CGuiHandler.h"
+#include "../render/IRenderHandler.h"
 #include "../render/IScreenHandler.h"
 #include "../render/IScreenHandler.h"
 #include "../renderSDL/SDL_Extensions.h"
 #include "../renderSDL/SDL_Extensions.h"
 #include "Colors.h"
 #include "Colors.h"
@@ -169,23 +170,27 @@ void Canvas::drawBorderDashed(const Rect & target, const ColorRGBA & color)
 
 
 void Canvas::drawText(const Point & position, const EFonts & font, const ColorRGBA & colorDest, ETextAlignment alignment, const std::string & text )
 void Canvas::drawText(const Point & position, const EFonts & font, const ColorRGBA & colorDest, ETextAlignment alignment, const std::string & text )
 {
 {
+	const auto & fontPtr = GH.renderHandler().loadFont(font);
+
 	switch (alignment)
 	switch (alignment)
 	{
 	{
-	case ETextAlignment::TOPLEFT:      return graphics->fonts[font]->renderTextLeft  (surface, text, colorDest, transformPos(position));
-	case ETextAlignment::TOPCENTER:    return graphics->fonts[font]->renderTextCenter(surface, text, colorDest, transformPos(position));
-	case ETextAlignment::CENTER:       return graphics->fonts[font]->renderTextCenter(surface, text, colorDest, transformPos(position));
-	case ETextAlignment::BOTTOMRIGHT:  return graphics->fonts[font]->renderTextRight (surface, text, colorDest, transformPos(position));
+	case ETextAlignment::TOPLEFT:      return fontPtr->renderTextLeft  (surface, text, colorDest, transformPos(position));
+	case ETextAlignment::TOPCENTER:    return fontPtr->renderTextCenter(surface, text, colorDest, transformPos(position));
+	case ETextAlignment::CENTER:       return fontPtr->renderTextCenter(surface, text, colorDest, transformPos(position));
+	case ETextAlignment::BOTTOMRIGHT:  return fontPtr->renderTextRight (surface, text, colorDest, transformPos(position));
 	}
 	}
 }
 }
 
 
 void Canvas::drawText(const Point & position, const EFonts & font, const ColorRGBA & colorDest, ETextAlignment alignment, const std::vector<std::string> & text )
 void Canvas::drawText(const Point & position, const EFonts & font, const ColorRGBA & colorDest, ETextAlignment alignment, const std::vector<std::string> & text )
 {
 {
+	const auto & fontPtr = GH.renderHandler().loadFont(font);
+
 	switch (alignment)
 	switch (alignment)
 	{
 	{
-	case ETextAlignment::TOPLEFT:      return graphics->fonts[font]->renderTextLinesLeft  (surface, text, colorDest, transformPos(position));
-	case ETextAlignment::TOPCENTER:    return graphics->fonts[font]->renderTextLinesCenter(surface, text, colorDest, transformPos(position));
-	case ETextAlignment::CENTER:       return graphics->fonts[font]->renderTextLinesCenter(surface, text, colorDest, transformPos(position));
-	case ETextAlignment::BOTTOMRIGHT:  return graphics->fonts[font]->renderTextLinesRight (surface, text, colorDest, transformPos(position));
+	case ETextAlignment::TOPLEFT:      return fontPtr->renderTextLinesLeft  (surface, text, colorDest, transformPos(position));
+	case ETextAlignment::TOPCENTER:    return fontPtr->renderTextLinesCenter(surface, text, colorDest, transformPos(position));
+	case ETextAlignment::CENTER:       return fontPtr->renderTextLinesCenter(surface, text, colorDest, transformPos(position));
+	case ETextAlignment::BOTTOMRIGHT:  return fontPtr->renderTextLinesRight (surface, text, colorDest, transformPos(position));
 	}
 	}
 }
 }
 
 

+ 1 - 1
client/render/Canvas.h

@@ -15,7 +15,7 @@
 
 
 struct SDL_Surface;
 struct SDL_Surface;
 class IImage;
 class IImage;
-enum EFonts : int;
+enum EFonts : int8_t;
 
 
 enum class CanvasScalingPolicy
 enum class CanvasScalingPolicy
 {
 {

+ 10 - 2
client/render/EFont.h

@@ -9,7 +9,15 @@
  */
  */
 #pragma once
 #pragma once
 
 
-enum EFonts : int
+enum EFonts : int8_t
 {
 {
-	FONT_BIG, FONT_CALLI, FONT_CREDITS, FONT_HIGH_SCORE, FONT_MEDIUM, FONT_SMALL, FONT_TIMES, FONT_TINY, FONT_VERD
+	FONT_BIG,
+	FONT_CALLI,
+	FONT_CREDITS,
+	FONT_HIGH_SCORE,
+	FONT_MEDIUM,
+	FONT_SMALL,
+	FONT_TIMES,
+	FONT_TINY,
+	FONT_VERD
 };
 };

+ 0 - 34
client/render/Graphics.cpp

@@ -19,25 +19,15 @@
 #include <vcmi/spells/Service.h>
 #include <vcmi/spells/Service.h>
 
 
 #include "../renderSDL/SDL_Extensions.h"
 #include "../renderSDL/SDL_Extensions.h"
-#include "../renderSDL/CBitmapFont.h"
-#include "../renderSDL/CBitmapHanFont.h"
-#include "../renderSDL/CTrueTypeFont.h"
 #include "../render/CAnimation.h"
 #include "../render/CAnimation.h"
 #include "../render/IImage.h"
 #include "../render/IImage.h"
-#include "../render/IRenderHandler.h"
-#include "../gui/CGuiHandler.h"
 
 
 #include "../lib/filesystem/Filesystem.h"
 #include "../lib/filesystem/Filesystem.h"
 #include "../lib/filesystem/CBinaryReader.h"
 #include "../lib/filesystem/CBinaryReader.h"
 #include "../../lib/json/JsonNode.h"
 #include "../../lib/json/JsonNode.h"
 #include "../lib/modding/CModHandler.h"
 #include "../lib/modding/CModHandler.h"
 #include "../lib/modding/ModScope.h"
 #include "../lib/modding/ModScope.h"
-#include "CGameInfo.h"
 #include "../lib/VCMI_Lib.h"
 #include "../lib/VCMI_Lib.h"
-#include "../CCallback.h"
-#include "../lib/texts/CGeneralTextHandler.h"
-#include "../lib/vcmi_endian.h"
-#include "../lib/CStopWatch.h"
 #include "../lib/CHeroHandler.h"
 #include "../lib/CHeroHandler.h"
 
 
 #include <SDL_surface.h>
 #include <SDL_surface.h>
@@ -127,7 +117,6 @@ void Graphics::initializeBattleGraphics()
 }
 }
 Graphics::Graphics()
 Graphics::Graphics()
 {
 {
-	loadFonts();
 	loadPaletteAndColors();
 	loadPaletteAndColors();
 	initializeBattleGraphics();
 	initializeBattleGraphics();
 	loadErmuToPicture();
 	loadErmuToPicture();
@@ -166,29 +155,6 @@ void Graphics::setPlayerFlagColor(SDL_Palette * targetPalette, PlayerColor playe
 	}
 	}
 }
 }
 
 
-void Graphics::loadFonts()
-{
-	const JsonNode config(JsonPath::builtin("config/fonts.json"));
-
-	const JsonVector & bmpConf = config["bitmap"].Vector();
-	const JsonNode   & ttfConf = config["trueType"];
-	const JsonNode   & hanConf = config["bitmapHan"];
-
-	assert(bmpConf.size() == FONTS_NUMBER);
-
-	for (size_t i=0; i<FONTS_NUMBER; i++)
-	{
-		std::string filename = bmpConf[i].String();
-
-		if (!hanConf[filename].isNull())
-			fonts[i] = std::make_shared<CBitmapHanFont>(hanConf[filename]);
-		else if (!ttfConf[filename].isNull()) // no ttf override
-			fonts[i] = std::make_shared<CTrueTypeFont>(ttfConf[filename]);
-		else
-			fonts[i] = std::make_shared<CBitmapFont>(filename);
-	}
-}
-
 void Graphics::loadErmuToPicture()
 void Graphics::loadErmuToPicture()
 {
 {
 	//loading ERMU to picture
 	//loading ERMU to picture

+ 2 - 22
client/render/Graphics.h

@@ -9,26 +9,11 @@
  */
  */
 #pragma once
 #pragma once
 
 
-#include "../lib/GameConstants.h"
+#include "../lib/constants/NumericConstants.h"
+#include "../lib/constants/EntityIdentifiers.h"
 #include "../lib/Color.h"
 #include "../lib/Color.h"
-#include "../lib/filesystem/ResourcePath.h"
-
-VCMI_LIB_NAMESPACE_BEGIN
-
-class CGHeroInstance;
-class CGTownInstance;
-class CHeroClass;
-struct InfoAboutHero;
-struct InfoAboutTown;
-class CGObjectInstance;
-class ObjectTemplate;
-class EntityService;
-class JsonNode;
-
-VCMI_LIB_NAMESPACE_END
 
 
 struct SDL_Palette;
 struct SDL_Palette;
-class IFont;
 
 
 /// Handles fonts, hero images, town images, various graphics
 /// Handles fonts, hero images, town images, various graphics
 class Graphics
 class Graphics
@@ -36,13 +21,8 @@ class Graphics
 	void initializeBattleGraphics();
 	void initializeBattleGraphics();
 	void loadPaletteAndColors();
 	void loadPaletteAndColors();
 	void loadErmuToPicture();
 	void loadErmuToPicture();
-	void loadFonts();
 
 
 public:
 public:
-	//Fonts
-	static const int FONTS_NUMBER = 9;
-	std::array< std::shared_ptr<IFont>, FONTS_NUMBER> fonts;
-
 	using PlayerPalette = std::array<ColorRGBA, 32>;
 	using PlayerPalette = std::array<ColorRGBA, 32>;
 
 
 	//various graphics
 	//various graphics

+ 21 - 1
client/render/IFont.cpp

@@ -23,13 +23,33 @@ int IFont::getScalingFactor() const
 	return GH.screenHandler().getScalingFactor();
 	return GH.screenHandler().getScalingFactor();
 }
 }
 
 
+size_t IFont::getLineHeight() const
+{
+	return getLineHeightScaled() / getScalingFactor();
+}
+
+size_t IFont::getGlyphWidth(const char * data) const
+{
+	return getGlyphWidthScaled(data) / getScalingFactor();
+}
+
 size_t IFont::getStringWidth(const std::string & data) const
 size_t IFont::getStringWidth(const std::string & data) const
+{
+	return getStringWidthScaled(data) / getScalingFactor();
+}
+
+size_t IFont::getFontAscent() const
+{
+	return getFontAscentScaled() / getScalingFactor();
+}
+
+size_t IFont::getStringWidthScaled(const std::string & data) const
 {
 {
 	size_t width = 0;
 	size_t width = 0;
 
 
 	for(size_t i=0; i<data.size(); i += TextOperations::getUnicodeCharacterSize(data[i]))
 	for(size_t i=0; i<data.size(); i += TextOperations::getUnicodeCharacterSize(data[i]))
 	{
 	{
-		width += getGlyphWidth(data.data() + i);
+		width += getGlyphWidthScaled(data.data() + i);
 	}
 	}
 	return width;
 	return width;
 }
 }

+ 19 - 5
client/render/IFont.h

@@ -19,8 +19,6 @@ struct SDL_Surface;
 class IFont : boost::noncopyable
 class IFont : boost::noncopyable
 {
 {
 protected:
 protected:
-	/// Internal function to render font, see renderTextLeft
-	virtual void renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const = 0;
 
 
 	int getScalingFactor() const;
 	int getScalingFactor() const;
 
 
@@ -29,11 +27,27 @@ public:
 	{}
 	{}
 
 
 	/// Returns height of font
 	/// Returns height of font
-	virtual size_t getLineHeight() const = 0;
+	virtual size_t getLineHeightScaled() const = 0;
+	/// Returns width, in pixels of a character glyph. Pointer must contain at least characterSize valid bytes
+	virtual size_t getGlyphWidthScaled(const char * data) const = 0;
+	/// Return width of the string
+	virtual size_t getStringWidthScaled(const std::string & data) const;
+	/// Returns distance from top of the font glyphs to baseline
+	virtual size_t getFontAscentScaled() const = 0;
+
+	/// Returns height of font
+	size_t getLineHeight() const;
 	/// Returns width, in pixels of a character glyph. Pointer must contain at least characterSize valid bytes
 	/// Returns width, in pixels of a character glyph. Pointer must contain at least characterSize valid bytes
-	virtual size_t getGlyphWidth(const char * data) const = 0;
+	size_t getGlyphWidth(const char * data) const;
 	/// Return width of the string
 	/// Return width of the string
-	virtual size_t getStringWidth(const std::string & data) const;
+	size_t getStringWidth(const std::string & data) const;
+	/// Returns distance from top of the font glyphs to baseline
+	size_t getFontAscent() const;
+
+	/// Internal function to render font, see renderTextLeft
+	virtual void renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const = 0;
+
+	virtual bool canRepresentCharacter(const char * data) const	= 0;
 
 
 	/**
 	/**
 	 * @param surface - destination to print text on
 	 * @param surface - destination to print text on

+ 5 - 0
client/render/IRenderHandler.h

@@ -17,9 +17,11 @@ VCMI_LIB_NAMESPACE_END
 
 
 struct SDL_Surface;
 struct SDL_Surface;
 
 
+class IFont;
 class IImage;
 class IImage;
 class CAnimation;
 class CAnimation;
 enum class EImageBlitMode : uint8_t;
 enum class EImageBlitMode : uint8_t;
+enum EFonts : int8_t;
 
 
 class IRenderHandler : public boost::noncopyable
 class IRenderHandler : public boost::noncopyable
 {
 {
@@ -40,4 +42,7 @@ public:
 
 
 	/// Loads animation using given path
 	/// Loads animation using given path
 	virtual std::shared_ptr<CAnimation> loadAnimation(const AnimationPath & path, EImageBlitMode mode) = 0;
 	virtual std::shared_ptr<CAnimation> loadAnimation(const AnimationPath & path, EImageBlitMode mode) = 0;
+
+	/// Returns font with specified identifer
+	virtual std::shared_ptr<const IFont> loadFont(EFonts font) = 0;
 };
 };

+ 30 - 28
client/renderSDL/CBitmapFont.cpp

@@ -96,21 +96,14 @@ static AtlasLayout doAtlasPacking(const std::map<int, Point> & images)
 	}
 	}
 }
 }
 
 
-void CBitmapFont::loadModFont(const std::string & modName, const ResourcePath & resource, std::unordered_map<CodePoint, EntryFNT> & loadedChars)
+void CBitmapFont::loadFont(const ResourcePath & resource, std::unordered_map<CodePoint, EntryFNT> & loadedChars)
 {
 {
-	if (!CResourceHandler::get(modName)->existsResource(resource))
-	{
-		logGlobal->error("Failed to load font %s from mod %s", resource.getName(), modName);
-		return;
-	}
-
-	auto data = CResourceHandler::get(modName)->load(resource)->readAll();
-	std::string modLanguage = CGI->modh->getModLanguage(modName);
+	auto data = CResourceHandler::get()->load(resource)->readAll();
+	std::string modName = VLC->modh->findResourceOrigin(resource);
+	std::string modLanguage = VLC->modh->getModLanguage(modName);
 	std::string modEncoding = Languages::getLanguageOptions(modLanguage).encoding;
 	std::string modEncoding = Languages::getLanguageOptions(modLanguage).encoding;
 
 
-	uint32_t dataHeight = data.first[5];
-
-	maxHeight = std::max(maxHeight, dataHeight);
+	height = data.first[5];
 
 
 	constexpr size_t symbolsInFile = 0x100;
 	constexpr size_t symbolsInFile = 0x100;
 	constexpr size_t baseIndex = 32;
 	constexpr size_t baseIndex = 32;
@@ -126,10 +119,10 @@ void CBitmapFont::loadModFont(const std::string & modName, const ResourcePath &
 		symbol.leftOffset =  read_le_u32(data.first.get() + baseIndex + charIndex * 12 + 0);
 		symbol.leftOffset =  read_le_u32(data.first.get() + baseIndex + charIndex * 12 + 0);
 		symbol.width =       read_le_u32(data.first.get() + baseIndex + charIndex * 12 + 4);
 		symbol.width =       read_le_u32(data.first.get() + baseIndex + charIndex * 12 + 4);
 		symbol.rightOffset = read_le_u32(data.first.get() + baseIndex + charIndex * 12 + 8);
 		symbol.rightOffset = read_le_u32(data.first.get() + baseIndex + charIndex * 12 + 8);
-		symbol.height = dataHeight;
+		symbol.height = height;
 
 
 		uint32_t pixelDataOffset = read_le_u32(data.first.get() + offsetIndex + charIndex * 4);
 		uint32_t pixelDataOffset = read_le_u32(data.first.get() + offsetIndex + charIndex * 4);
-		uint32_t pixelsCount = dataHeight * symbol.width;
+		uint32_t pixelsCount = height * symbol.width;
 
 
 		symbol.pixels.resize(pixelsCount);
 		symbol.pixels.resize(pixelsCount);
 
 
@@ -139,21 +132,27 @@ void CBitmapFont::loadModFont(const std::string & modName, const ResourcePath &
 
 
 		loadedChars[codepoint] = symbol;
 		loadedChars[codepoint] = symbol;
 	}
 	}
+
+	// Try to use symbol 'L' to detect font 'ascent' - number of pixels above text baseline
+	const auto & symbolL = loadedChars['L'];
+	uint32_t lastNonEmptyRow = 0;
+	for (uint32_t row = 0; row < symbolL.height; ++row)
+	{
+		for (uint32_t col = 0; col < symbolL.width; ++col)
+			if (symbolL.pixels.at(row * symbolL.width + col) == 255)
+				lastNonEmptyRow = std::max(lastNonEmptyRow, row);
+	}
+
+	ascent = lastNonEmptyRow + 1;
 }
 }
 
 
 CBitmapFont::CBitmapFont(const std::string & filename):
 CBitmapFont::CBitmapFont(const std::string & filename):
-	maxHeight(0)
+	height(0)
 {
 {
 	ResourcePath resource("data/" + filename, EResType::BMP_FONT);
 	ResourcePath resource("data/" + filename, EResType::BMP_FONT);
 
 
 	std::unordered_map<CodePoint, EntryFNT> loadedChars;
 	std::unordered_map<CodePoint, EntryFNT> loadedChars;
-	loadModFont("core", resource, loadedChars);
-
-	for(const auto & modName : VLC->modh->getActiveMods())
-	{
-		if (CResourceHandler::get(modName)->existsResource(resource))
-			loadModFont(modName, resource, loadedChars);
-	}
+	loadFont(resource, loadedChars);
 
 
 	std::map<int, Point> atlasSymbol;
 	std::map<int, Point> atlasSymbol;
 	for (auto const & symbol : loadedChars)
 	for (auto const & symbol : loadedChars)
@@ -213,8 +212,6 @@ CBitmapFont::CBitmapFont(const std::string & filename):
 		SDL_FreeSurface(atlasImage);
 		SDL_FreeSurface(atlasImage);
 		atlasImage = scaledSurface;
 		atlasImage = scaledSurface;
 	}
 	}
-
-	IMG_SavePNG(atlasImage, ("/home/ivan/font_" + filename).c_str());
 }
 }
 
 
 CBitmapFont::~CBitmapFont()
 CBitmapFont::~CBitmapFont()
@@ -222,12 +219,12 @@ CBitmapFont::~CBitmapFont()
 	SDL_FreeSurface(atlasImage);
 	SDL_FreeSurface(atlasImage);
 }
 }
 
 
-size_t CBitmapFont::getLineHeight() const
+size_t CBitmapFont::getLineHeightScaled() const
 {
 {
-	return maxHeight;
+	return height * getScalingFactor();
 }
 }
 
 
-size_t CBitmapFont::getGlyphWidth(const char * data) const
+size_t CBitmapFont::getGlyphWidthScaled(const char * data) const
 {
 {
 	CodePoint localChar = TextOperations::getUnicodeCodepoint(data, 4);
 	CodePoint localChar = TextOperations::getUnicodeCodepoint(data, 4);
 
 
@@ -236,7 +233,12 @@ size_t CBitmapFont::getGlyphWidth(const char * data) const
 	if (iter == chars.end())
 	if (iter == chars.end())
 		return 0;
 		return 0;
 
 
-	return iter->second.leftOffset + iter->second.positionInAtlas.w + iter->second.rightOffset;
+	return (iter->second.leftOffset + iter->second.positionInAtlas.w + iter->second.rightOffset) * getScalingFactor();
+}
+
+size_t CBitmapFont::getFontAscentScaled() const
+{
+	return ascent * getScalingFactor();
 }
 }
 
 
 bool CBitmapFont::canRepresentCharacter(const char *data) const
 bool CBitmapFont::canRepresentCharacter(const char *data) const

+ 7 - 5
client/renderSDL/CBitmapFont.h

@@ -40,9 +40,10 @@ class CBitmapFont final : public IFont
 	};
 	};
 
 
 	std::unordered_map<CodePoint, BitmapChar> chars;
 	std::unordered_map<CodePoint, BitmapChar> chars;
-	uint32_t maxHeight;
+	uint32_t height;
+	uint32_t ascent;
 
 
-	void loadModFont(const std::string & modName, const ResourcePath & resource, std::unordered_map<CodePoint, EntryFNT> & loadedChars);
+	void loadFont(const ResourcePath & resource, std::unordered_map<CodePoint, EntryFNT> & loadedChars);
 
 
 	void renderCharacter(SDL_Surface * surface, const BitmapChar & character, const ColorRGBA & color, int &posX, int &posY) const;
 	void renderCharacter(SDL_Surface * surface, const BitmapChar & character, const ColorRGBA & color, int &posX, int &posY) const;
 	void renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const override;
 	void renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const override;
@@ -50,11 +51,12 @@ public:
 	explicit CBitmapFont(const std::string & filename);
 	explicit CBitmapFont(const std::string & filename);
 	~CBitmapFont();
 	~CBitmapFont();
 
 
-	size_t getLineHeight() const override;
-	size_t getGlyphWidth(const char * data) const override;
+	size_t getFontAscentScaled() const override;
+	size_t getLineHeightScaled() const override;
+	size_t getGlyphWidthScaled(const char * data) const override;
 
 
 	/// returns true if this font contains provided utf-8 character
 	/// returns true if this font contains provided utf-8 character
-	bool canRepresentCharacter(const char * data) const;
+	bool canRepresentCharacter(const char * data) const override;
 	bool canRepresentString(const std::string & data) const;
 	bool canRepresentString(const std::string & data) const;
 
 
 	friend class CBitmapHanFont;
 	friend class CBitmapHanFont;

+ 0 - 127
client/renderSDL/CBitmapHanFont.cpp

@@ -1,127 +0,0 @@
-/*
- * CBitmapHanFont.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 "CBitmapHanFont.h"
-
-#include "CBitmapFont.h"
-#include "SDL_Extensions.h"
-
-#include "../../lib/filesystem/Filesystem.h"
-#include "../../lib/json/JsonNode.h"
-#include "../../lib/Rect.h"
-#include "../../lib/texts/TextOperations.h"
-
-#include <SDL_surface.h>
-
-size_t CBitmapHanFont::getCharacterDataOffset(size_t index) const
-{
-	size_t rowSize  = (size + 7) / 8; // 1 bit per pixel, rounded up
-	size_t charSize = rowSize * size; // glyph contains "size" rows
-	return index * charSize;
-}
-
-size_t CBitmapHanFont::getCharacterIndex(ui8 first, ui8 second) const
-{
-	if (second > 0x7f )
-		second--;
-
-	return (first - 0x81) * (12*16 - 2) + (second - 0x40);
-}
-
-void CBitmapHanFont::renderCharacter(SDL_Surface * surface, int characterIndex, const ColorRGBA & color, int &posX, int &posY) const
-{
-	//TODO: somewhat duplicated with CBitmapFont::renderCharacter();
-	Rect clipRect;
-	CSDL_Ext::getClipRect(surface, clipRect);
-
-	CSDL_Ext::TColorPutter colorPutter = CSDL_Ext::getPutterFor(surface);
-	uint8_t bpp = surface->format->BytesPerPixel;
-
-	// start of line, may differ from 0 due to end of surface or clipped surface
-	int lineBegin = std::max<int>(0, clipRect.y - posY);
-	int lineEnd   = std::min((int)size, clipRect.y + clipRect.h - posY);
-
-	// start end end of each row, may differ from 0
-	int rowBegin = std::max<int>(0, clipRect.x - posX);
-	int rowEnd   = std::min<int>((int)size, clipRect.x + clipRect.w - posX);
-
-	//for each line in symbol
-	for(int dy = lineBegin; dy <lineEnd; dy++)
-	{
-		uint8_t *dstLine = (uint8_t*)surface->pixels;
-		uint8_t *source = data.first.get() + getCharacterDataOffset(characterIndex);
-
-		// shift source\destination pixels to current position
-		dstLine += (posY+dy) * surface->pitch + posX * bpp;
-		source += ((size + 7) / 8) * dy;
-
-		//for each column in line
-		for(int dx = rowBegin; dx < rowEnd; dx++)
-		{
-			// select current bit in bitmap
-			int bit = (source[dx / 8] << (dx % 8)) & 0x80;
-
-			uint8_t* dstPixel = dstLine + dx*bpp;
-			if (bit != 0)
-				colorPutter(dstPixel, color.r, color.g, color.b);
-		}
-	}
-	posX += (int)size + 1;
-}
-
-void CBitmapHanFont::renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const
-{
-	int posX = pos.x;
-	int posY = pos.y;
-
-	SDL_LockSurface(surface);
-
-	for(size_t i=0; i<data.size(); i += TextOperations::getUnicodeCharacterSize(data[i]))
-	{
-		std::string localChar = TextOperations::fromUnicode(data.substr(i, TextOperations::getUnicodeCharacterSize(data[i])), "GBK");
-
-		if (localChar.size() == 1)
-			fallback->renderCharacter(surface, fallback->chars[ui8(localChar[0])], color, posX, posY);
-
-		if (localChar.size() == 2)
-			renderCharacter(surface, (int)getCharacterIndex(localChar[0], localChar[1]), color, posX, posY);
-	}
-	SDL_UnlockSurface(surface);
-}
-
-CBitmapHanFont::CBitmapHanFont(const JsonNode &config):
-	fallback(new CBitmapFont(config["fallback"].String())),
-	data(CResourceHandler::get()->load(ResourcePath("data/" + config["name"].String(), EResType::OTHER))->readAll()),
-	size((size_t)config["size"].Float())
-{
-	// basic tests to make sure that fonts are OK
-	// 1) fonts must contain 190 "sections", 126 symbols each.
-	assert(getCharacterIndex(0xfe, 0xff) == 190*126);
-	// 2) ensure that font size is correct - enough to fit all possible symbols
-	assert(getCharacterDataOffset(getCharacterIndex(0xfe, 0xff)) == data.second);
-}
-
-size_t CBitmapHanFont::getLineHeight() const
-{
-	return std::max(size + 1, fallback->getLineHeight());
-}
-
-size_t CBitmapHanFont::getGlyphWidth(const char * data) const
-{
-	std::string localChar = TextOperations::fromUnicode(std::string(data, TextOperations::getUnicodeCharacterSize(data[0])), "GBK");
-
-	if (localChar.size() == 1)
-		return fallback->getGlyphWidth(data);
-
-	if (localChar.size() == 2)
-		return size + 1;
-
-	return 0;
-}

+ 0 - 40
client/renderSDL/CBitmapHanFont.h

@@ -1,40 +0,0 @@
-/*
- * CBitmapHanFont.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 "../render/IFont.h"
-
-VCMI_LIB_NAMESPACE_BEGIN
-class JsonNode;
-VCMI_LIB_NAMESPACE_END
-
-class CBitmapFont;
-
-/// supports multi-byte characters for such languages like Chinese
-class CBitmapHanFont final : public IFont
-{
-	std::unique_ptr<CBitmapFont> fallback;
-	// data, directly copied from file
-	const std::pair<std::unique_ptr<ui8[]>, ui64> data;
-
-	// size of the font. Not available in file but needed for proper rendering
-	const size_t size;
-
-	size_t getCharacterDataOffset(size_t index) const;
-	size_t getCharacterIndex(ui8 first, ui8 second) const;
-
-	void renderCharacter(SDL_Surface * surface, int characterIndex, const ColorRGBA & color, int &posX, int &posY) const;
-	void renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const override;
-public:
-	CBitmapHanFont(const JsonNode & config);
-
-	size_t getLineHeight() const override;
-	size_t getGlyphWidth(const char * data) const override;
-};

+ 37 - 27
client/renderSDL/CTrueTypeFont.cpp

@@ -15,6 +15,7 @@
 #include "../render/Colors.h"
 #include "../render/Colors.h"
 #include "../renderSDL/SDL_Extensions.h"
 #include "../renderSDL/SDL_Extensions.h"
 
 
+#include "../../lib/CConfigHandler.h"
 #include "../../lib/json/JsonNode.h"
 #include "../../lib/json/JsonNode.h"
 #include "../../lib/filesystem/Filesystem.h"
 #include "../../lib/filesystem/Filesystem.h"
 #include "../../lib/texts/TextOperations.h"
 #include "../../lib/texts/TextOperations.h"
@@ -29,12 +30,13 @@ std::pair<std::unique_ptr<ui8[]>, ui64> CTrueTypeFont::loadData(const JsonNode &
 
 
 int CTrueTypeFont::getPointSize(const JsonNode & config) const
 int CTrueTypeFont::getPointSize(const JsonNode & config) const
 {
 {
+	float fontScale = settings["video"]["fontScalingFactor"].Float();
 	int scalingFactor = getScalingFactor();
 	int scalingFactor = getScalingFactor();
 
 
 	if (config.isNumber())
 	if (config.isNumber())
-		return config.Integer() * scalingFactor;
+		return std::round(config.Integer() * scalingFactor * fontScale);
 	else
 	else
-		return config[scalingFactor-1].Integer();
+		return std::round(config[scalingFactor-1].Integer() * fontScale);
 }
 }
 
 
 TTF_Font * CTrueTypeFont::loadFont(const JsonNode &config)
 TTF_Font * CTrueTypeFont::loadFont(const JsonNode &config)
@@ -62,57 +64,65 @@ int CTrueTypeFont::getFontStyle(const JsonNode &config) const
 CTrueTypeFont::CTrueTypeFont(const JsonNode & fontConfig):
 CTrueTypeFont::CTrueTypeFont(const JsonNode & fontConfig):
 	data(loadData(fontConfig)),
 	data(loadData(fontConfig)),
 	font(loadFont(fontConfig), TTF_CloseFont),
 	font(loadFont(fontConfig), TTF_CloseFont),
-	dropShadow(fontConfig["blend"].Bool()),
-	blended(fontConfig["blend"].Bool())
+	dropShadow(!fontConfig["noShadow"].Bool()),
+	outline(fontConfig["outline"].Bool()),
+	blended(true)
 {
 {
 	assert(font);
 	assert(font);
 
 
 	TTF_SetFontStyle(font.get(), getFontStyle(fontConfig));
 	TTF_SetFontStyle(font.get(), getFontStyle(fontConfig));
+	TTF_SetFontHinting(font.get(),TTF_HINTING_MONO);
 
 
-	std::string fallbackName = fontConfig["fallback"].String();
-
-	if (!fallbackName.empty())
-		fallbackFont = std::make_unique<CBitmapFont>(fallbackName);
 }
 }
 
 
 CTrueTypeFont::~CTrueTypeFont() = default;
 CTrueTypeFont::~CTrueTypeFont() = default;
 
 
-size_t CTrueTypeFont::getLineHeight() const
+size_t CTrueTypeFont::getFontAscentScaled() const
 {
 {
-	if (fallbackFont)
-		return fallbackFont->getLineHeight();
-
-	return TTF_FontHeight(font.get()) / getScalingFactor();
+	return TTF_FontAscent(font.get());
 }
 }
 
 
-size_t CTrueTypeFont::getGlyphWidth(const char *data) const
+size_t CTrueTypeFont::getLineHeightScaled() const
 {
 {
-	if (fallbackFont && fallbackFont->canRepresentCharacter(data))
-		return fallbackFont->getGlyphWidth(data);
+	return TTF_FontHeight(font.get());
+}
 
 
-	return getStringWidth(std::string(data, TextOperations::getUnicodeCharacterSize(*data)));
+size_t CTrueTypeFont::getGlyphWidthScaled(const char *data) const
+{
+	return getStringWidthScaled(std::string(data, TextOperations::getUnicodeCharacterSize(*data)));
 }
 }
 
 
-size_t CTrueTypeFont::getStringWidth(const std::string & data) const
+bool CTrueTypeFont::canRepresentCharacter(const char * data) const
 {
 {
-	if (fallbackFont && fallbackFont->canRepresentString(data))
-		return fallbackFont->getStringWidth(data);
+	uint32_t codepoint = TextOperations::getUnicodeCodepoint(data, TextOperations::getUnicodeCharacterSize(*data));
+#if SDL_TTF_VERSION_ATLEAST(2, 0, 18)
+	return TTF_GlyphIsProvided32(font.get(), codepoint);
+#elif SDL_TTF_VERSION_ATLEAST(2, 0, 12)
+	if (codepoint <= 0xffff)
+		return TTF_GlyphIsProvided(font.get(), codepoint);
+	return true;
+#else
+	return true;
+#endif
+}
 
 
+size_t CTrueTypeFont::getStringWidthScaled(const std::string & data) const
+{
 	int width;
 	int width;
 	TTF_SizeUTF8(font.get(), data.c_str(), &width, nullptr);
 	TTF_SizeUTF8(font.get(), data.c_str(), &width, nullptr);
-	return width / getScalingFactor();
+	return width;
 }
 }
 
 
 void CTrueTypeFont::renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const
 void CTrueTypeFont::renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const
 {
 {
-	if (fallbackFont && fallbackFont->canRepresentString(data))
+	if (color.r != 0 && color.g != 0 && color.b != 0) // not black - add shadow
 	{
 	{
-		fallbackFont->renderText(surface, data, color, pos);
-		return;
-	}
+		if (outline)
+			renderText(surface, data, Colors::BLACK, pos - Point(1,1) * getScalingFactor());
 
 
-	if (dropShadow && color.r != 0 && color.g != 0 && color.b != 0) // not black - add shadow
-		renderText(surface, data, Colors::BLACK, pos + Point(1,1) * getScalingFactor());
+		if (dropShadow || outline)
+			renderText(surface, data, Colors::BLACK, pos + Point(1,1) * getScalingFactor());
+	}
 
 
 	if (!data.empty())
 	if (!data.empty())
 	{
 	{

+ 7 - 4
client/renderSDL/CTrueTypeFont.h

@@ -21,11 +21,11 @@ using TTF_Font = struct _TTF_Font;
 
 
 class CTrueTypeFont final : public IFont
 class CTrueTypeFont final : public IFont
 {
 {
-	std::unique_ptr<CBitmapFont> fallbackFont;
 	const std::pair<std::unique_ptr<ui8[]>, ui64> data;
 	const std::pair<std::unique_ptr<ui8[]>, ui64> data;
 
 
 	const std::unique_ptr<TTF_Font, void (*)(TTF_Font*)> font;
 	const std::unique_ptr<TTF_Font, void (*)(TTF_Font*)> font;
 	const bool blended;
 	const bool blended;
+	const bool outline;
 	const bool dropShadow;
 	const bool dropShadow;
 
 
 	std::pair<std::unique_ptr<ui8[]>, ui64> loadData(const JsonNode & config);
 	std::pair<std::unique_ptr<ui8[]>, ui64> loadData(const JsonNode & config);
@@ -34,11 +34,14 @@ class CTrueTypeFont final : public IFont
 	int getFontStyle(const JsonNode & config) const;
 	int getFontStyle(const JsonNode & config) const;
 
 
 	void renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const override;
 	void renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const override;
+	size_t getFontAscentScaled() const override;
 public:
 public:
 	CTrueTypeFont(const JsonNode & fontConfig);
 	CTrueTypeFont(const JsonNode & fontConfig);
 	~CTrueTypeFont();
 	~CTrueTypeFont();
 
 
-	size_t getLineHeight() const override;
-	size_t getGlyphWidth(const char * data) const override;
-	size_t getStringWidth(const std::string & data) const override;
+	bool canRepresentCharacter(const char * data) const override;
+
+	size_t getLineHeightScaled() const override;
+	size_t getGlyphWidthScaled(const char * data) const override;
+	size_t getStringWidthScaled(const std::string & data) const override;
 };
 };

+ 136 - 0
client/renderSDL/FontChain.cpp

@@ -0,0 +1,136 @@
+/*
+ * FontChain.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 "FontChain.h"
+
+#include "CTrueTypeFont.h"
+#include "CBitmapFont.h"
+
+#include "../../lib/CConfigHandler.h"
+#include "../../lib/texts/TextOperations.h"
+
+void FontChain::renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const
+{
+	auto chunks = splitTextToChunks(data);
+	int maxAscent = getFontAscentScaled();
+	Point currentPos = pos;
+	for (auto const & chunk : chunks)
+	{
+		Point chunkPos = currentPos;
+		int currAscent = chunk.font->getFontAscentScaled();
+		chunkPos.y += maxAscent - currAscent;
+		chunk.font->renderText(surface, chunk.text, color, chunkPos);
+		currentPos.x += chunk.font->getStringWidthScaled(chunk.text);
+	}
+}
+
+size_t FontChain::getFontAscentScaled() const
+{
+	size_t maxHeight = 0;
+	for(const auto & font : chain)
+		maxHeight = std::max(maxHeight, font->getFontAscentScaled());
+	return maxHeight;
+}
+
+bool FontChain::bitmapFontsPrioritized() const
+{
+	const std::string & fontType = settings["video"]["fontsType"].String();
+	if (fontType == "original")
+		return true;
+	if (fontType == "scalable")
+		return false;
+
+	// else - autoselection.
+
+	if (getScalingFactor() != 1)
+		return false; // If xbrz in use ttf/scalable fonts are preferred
+
+	if (!vstd::isAlmostEqual(1.0, settings["video"]["fontScalingFactor"].Float()))
+		return false; // If player requested non-100% scaling - use scalable fonts
+
+	return true; // else - use original bitmap fonts
+}
+
+void FontChain::addTrueTypeFont(const JsonNode & trueTypeConfig)
+{
+	chain.insert(chain.begin(), std::make_unique<CTrueTypeFont>(trueTypeConfig));
+}
+
+void FontChain::addBitmapFont(const std::string & bitmapFilename)
+{
+	if (bitmapFontsPrioritized())
+		chain.insert(chain.begin(), std::make_unique<CBitmapFont>(bitmapFilename));
+	else
+		chain.push_back(std::make_unique<CBitmapFont>(bitmapFilename));
+}
+
+bool FontChain::canRepresentCharacter(const char * data) const
+{
+	for(const auto & font : chain)
+		if (font->canRepresentCharacter(data))
+			return true;
+	return false;
+}
+
+size_t FontChain::getLineHeightScaled() const
+{
+	size_t maxHeight = 0;
+	for(const auto & font : chain)
+		maxHeight = std::max(maxHeight, font->getLineHeightScaled());
+	return maxHeight;
+}
+
+size_t FontChain::getGlyphWidthScaled(const char * data) const
+{
+	for(const auto & font : chain)
+		if (font->canRepresentCharacter(data))
+			return font->getGlyphWidthScaled(data);
+	return 0;
+}
+
+std::vector<FontChain::TextChunk> FontChain::splitTextToChunks(const std::string & data) const
+{
+	std::vector<TextChunk> chunks;
+
+	for (size_t i = 0; i < data.size(); i += TextOperations::getUnicodeCharacterSize(data[i]))
+	{
+		const IFont * currentFont = nullptr;
+		for(const auto & font : chain)
+		{
+			if (font->canRepresentCharacter(data.data() + i))
+			{
+				currentFont = font.get();
+				break;
+			}
+		}
+
+		if (currentFont == nullptr)
+			continue; // not representable
+
+		std::string symbol = data.substr(i, TextOperations::getUnicodeCharacterSize(data[i]));
+
+		if (chunks.empty() || chunks.back().font != currentFont)
+			chunks.push_back({currentFont, symbol});
+		else
+			chunks.back().text += symbol;
+	}
+
+	return chunks;
+}
+
+size_t FontChain::getStringWidthScaled(const std::string & data) const
+{
+	size_t result = 0;
+	auto chunks = splitTextToChunks(data);
+	for (auto const & chunk : chunks)
+		result += chunk.font->getStringWidthScaled(chunk.text);
+
+	return result;
+}

+ 43 - 0
client/renderSDL/FontChain.h

@@ -0,0 +1,43 @@
+/*
+ * FontChain.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 "../render/IFont.h"
+
+VCMI_LIB_NAMESPACE_BEGIN
+class JsonNode;
+VCMI_LIB_NAMESPACE_END
+
+class FontChain final : public IFont
+{
+	struct TextChunk
+	{
+		const IFont * font;
+		std::string text;
+	};
+
+	std::vector<TextChunk> splitTextToChunks(const std::string & data) const;
+
+	std::vector<std::unique_ptr<IFont>> chain;
+
+	void renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const override;
+	size_t getFontAscentScaled() const override;
+	bool bitmapFontsPrioritized() const;
+public:
+	FontChain() = default;
+
+	void addTrueTypeFont(const JsonNode & trueTypeConfig);
+	void addBitmapFont(const std::string & bitmapFilename);
+
+	size_t getLineHeightScaled() const override;
+	size_t getGlyphWidthScaled(const char * data) const override;
+	size_t getStringWidthScaled(const std::string & data) const override;
+	bool canRepresentCharacter(const char * data) const override;
+};

+ 30 - 1
client/renderSDL/RenderHandler.cpp

@@ -12,6 +12,7 @@
 
 
 #include "SDLImage.h"
 #include "SDLImage.h"
 #include "ImageScaled.h"
 #include "ImageScaled.h"
+#include "FontChain.h"
 
 
 #include "../gui/CGuiHandler.h"
 #include "../gui/CGuiHandler.h"
 
 
@@ -20,7 +21,6 @@
 #include "../render/Colors.h"
 #include "../render/Colors.h"
 #include "../render/ColorFilter.h"
 #include "../render/ColorFilter.h"
 #include "../render/IScreenHandler.h"
 #include "../render/IScreenHandler.h"
-
 #include "../../lib/json/JsonUtils.h"
 #include "../../lib/json/JsonUtils.h"
 #include "../../lib/filesystem/Filesystem.h"
 #include "../../lib/filesystem/Filesystem.h"
 #include "../../lib/VCMIDirs.h"
 #include "../../lib/VCMIDirs.h"
@@ -335,3 +335,32 @@ void RenderHandler::onLibraryLoadingFinished(const Services * services)
 	addImageListEntries(services->spells());
 	addImageListEntries(services->spells());
 	addImageListEntries(services->skills());
 	addImageListEntries(services->skills());
 }
 }
+
+std::shared_ptr<const IFont> RenderHandler::loadFont(EFonts font)
+{
+	if (fonts.count(font))
+		return fonts.at(font);
+
+	const int8_t index = static_cast<int8_t>(font);
+	auto configList = CResourceHandler::get()->getResourcesWithName(JsonPath::builtin("config/fonts.json"));
+	std::shared_ptr<FontChain> loadedFont = std::make_shared<FontChain>();
+	std::string bitmapPath;
+
+	for(auto & loader : configList)
+	{
+		auto stream = loader->load(JsonPath::builtin("config/fonts.json"));
+		std::unique_ptr<ui8[]> textData(new ui8[stream->getSize()]);
+		stream->read(textData.get(), stream->getSize());
+		const JsonNode config(reinterpret_cast<const std::byte*>(textData.get()), stream->getSize(), "config/fonts.json");
+		const JsonVector & bmpConf = config["bitmap"].Vector();
+		const JsonNode   & ttfConf = config["trueType"];
+
+		bitmapPath = bmpConf[index].String();
+		if (!ttfConf[bitmapPath].isNull())
+			loadedFont->addTrueTypeFont(ttfConf[bitmapPath]);
+	}
+	loadedFont->addBitmapFont(bitmapPath);
+
+	fonts[font] = loadedFont;
+	return loadedFont;
+}

+ 4 - 0
client/renderSDL/RenderHandler.h

@@ -26,6 +26,7 @@ class RenderHandler : public IRenderHandler
 	std::map<AnimationPath, std::shared_ptr<CDefFile>> animationFiles;
 	std::map<AnimationPath, std::shared_ptr<CDefFile>> animationFiles;
 	std::map<AnimationPath, AnimationLayoutMap> animationLayouts;
 	std::map<AnimationPath, AnimationLayoutMap> animationLayouts;
 	std::map<ImageLocator, std::shared_ptr<ISharedImage>> imageFiles;
 	std::map<ImageLocator, std::shared_ptr<ISharedImage>> imageFiles;
+	std::map<EFonts, std::shared_ptr<const IFont>> fonts;
 
 
 	std::shared_ptr<CDefFile> getAnimationFile(const AnimationPath & path);
 	std::shared_ptr<CDefFile> getAnimationFile(const AnimationPath & path);
 	AnimationLayoutMap & getAnimationLayout(const AnimationPath & path);
 	AnimationLayoutMap & getAnimationLayout(const AnimationPath & path);
@@ -59,4 +60,7 @@ public:
 	std::shared_ptr<CAnimation> loadAnimation(const AnimationPath & path, EImageBlitMode mode) override;
 	std::shared_ptr<CAnimation> loadAnimation(const AnimationPath & path, EImageBlitMode mode) override;
 
 
 	std::shared_ptr<IImage> createImage(SDL_Surface * source) override;
 	std::shared_ptr<IImage> createImage(SDL_Surface * source) override;
+
+	/// Returns font with specified identifer
+	std::shared_ptr<const IFont> loadFont(EFonts font) override;
 };
 };

+ 4 - 1
client/widgets/CComponent.cpp

@@ -21,6 +21,7 @@
 #include "../gui/Shortcut.h"
 #include "../gui/Shortcut.h"
 #include "../render/Canvas.h"
 #include "../render/Canvas.h"
 #include "../render/IFont.h"
 #include "../render/IFont.h"
+#include "../render/IRenderHandler.h"
 #include "../render/Graphics.h"
 #include "../render/Graphics.h"
 #include "../windows/CMessage.h"
 #include "../windows/CMessage.h"
 #include "../windows/InfoWindows.h"
 #include "../windows/InfoWindows.h"
@@ -95,9 +96,11 @@ void CComponent::init(ComponentType Type, ComponentSubType Subtype, std::optiona
 		max = 80;
 		max = 80;
 
 
 	std::vector<std::string> textLines = CMessage::breakText(getSubtitle(), std::max<int>(max, pos.w), font);
 	std::vector<std::string> textLines = CMessage::breakText(getSubtitle(), std::max<int>(max, pos.w), font);
+	const auto & fontPtr = GH.renderHandler().loadFont(font);
+	const int height = static_cast<int>(fontPtr->getLineHeight());
+
 	for(auto & line : textLines)
 	for(auto & line : textLines)
 	{
 	{
-		int height = static_cast<int>(graphics->fonts[font]->getLineHeight());
 		auto label = std::make_shared<CLabel>(pos.w/2, pos.h + height/2, font, ETextAlignment::CENTER, Colors::WHITE, line);
 		auto label = std::make_shared<CLabel>(pos.w/2, pos.h + height/2, font, ETextAlignment::CENTER, Colors::WHITE, line);
 
 
 		pos.h += height;
 		pos.h += height;

+ 3 - 1
client/widgets/CTextInput.cpp

@@ -17,6 +17,7 @@
 #include "../gui/Shortcut.h"
 #include "../gui/Shortcut.h"
 #include "../render/Graphics.h"
 #include "../render/Graphics.h"
 #include "../render/IFont.h"
 #include "../render/IFont.h"
+#include "../render/IRenderHandler.h"
 
 
 #include "../../lib/texts/TextOperations.h"
 #include "../../lib/texts/TextOperations.h"
 
 
@@ -190,8 +191,9 @@ void CTextInput::updateLabel()
 	std::string visibleText = getVisibleText();
 	std::string visibleText = getVisibleText();
 
 
 	label->alignment = originalAlignment;
 	label->alignment = originalAlignment;
+	const auto & font = GH.renderHandler().loadFont(label->font);
 
 
-	while (graphics->fonts[label->font]->getStringWidth(visibleText) > pos.w)
+	while (font->getStringWidth(visibleText) > pos.w)
 	{
 	{
 		label->alignment = ETextAlignment::CENTERRIGHT;
 		label->alignment = ETextAlignment::CENTERRIGHT;
 		visibleText = visibleText.substr(TextOperations::getUnicodeCharacterSize(visibleText[0]));
 		visibleText = visibleText.substr(TextOperations::getUnicodeCharacterSize(visibleText[0]));

+ 25 - 16
client/widgets/TextControls.cpp

@@ -22,6 +22,7 @@
 #include "../render/Canvas.h"
 #include "../render/Canvas.h"
 #include "../render/Graphics.h"
 #include "../render/Graphics.h"
 #include "../render/IFont.h"
 #include "../render/IFont.h"
+#include "../render/IRenderHandler.h"
 
 
 #include "../../lib/texts/TextOperations.h"
 #include "../../lib/texts/TextOperations.h"
 
 
@@ -56,8 +57,9 @@ CLabel::CLabel(int x, int y, EFonts Font, ETextAlignment Align, const ColorRGBA
 
 
 	if(alignment == ETextAlignment::TOPLEFT) // causes issues for MIDDLE
 	if(alignment == ETextAlignment::TOPLEFT) // causes issues for MIDDLE
 	{
 	{
-		pos.w = (int)graphics->fonts[font]->getStringWidth(visibleText().c_str());
-		pos.h = (int)graphics->fonts[font]->getLineHeight();
+		const auto & fontPtr = GH.renderHandler().loadFont(font);
+		pos.w = fontPtr->getStringWidth(visibleText().c_str());
+		pos.h = fontPtr->getLineHeight();
 	}
 	}
 }
 }
 
 
@@ -114,8 +116,12 @@ void CLabel::setMaxWidth(int width)
 void CLabel::trimText()
 void CLabel::trimText()
 {
 {
 	if(maxWidth > 0)
 	if(maxWidth > 0)
-		while ((int)graphics->fonts[font]->getStringWidth(visibleText().c_str()) > maxWidth)
+	{
+		const auto & fontPtr = GH.renderHandler().loadFont(font);
+
+		while (fontPtr->getStringWidth(visibleText().c_str()) > maxWidth)
 			TextOperations::trimRightUnicode(text);
 			TextOperations::trimRightUnicode(text);
+	}
 }
 }
 
 
 void CLabel::setColor(const ColorRGBA & Color)
 void CLabel::setColor(const ColorRGBA & Color)
@@ -132,7 +138,8 @@ void CLabel::setColor(const ColorRGBA & Color)
 
 
 size_t CLabel::getWidth()
 size_t CLabel::getWidth()
 {
 {
-	return graphics->fonts[font]->getStringWidth(visibleText());
+	const auto & fontPtr = GH.renderHandler().loadFont(font);
+	return fontPtr->getStringWidth(visibleText());
 }
 }
 
 
 CMultiLineLabel::CMultiLineLabel(Rect position, EFonts Font, ETextAlignment Align, const ColorRGBA & Color, const std::string & Text) :
 CMultiLineLabel::CMultiLineLabel(Rect position, EFonts Font, ETextAlignment Align, const ColorRGBA & Color, const std::string & Text) :
@@ -171,7 +178,7 @@ void CMultiLineLabel::setText(const std::string & Txt)
 
 
 void CTextContainer::blitLine(Canvas & to, Rect destRect, std::string what)
 void CTextContainer::blitLine(Canvas & to, Rect destRect, std::string what)
 {
 {
-	const auto f = graphics->fonts[font];
+	const auto f = GH.renderHandler().loadFont(font);
 	Point where = destRect.topLeft();
 	Point where = destRect.topLeft();
 	const std::string delimiters = "{}";
 	const std::string delimiters = "{}";
 	auto delimitersCount = std::count_if(what.cbegin(), what.cend(), [&delimiters](char c)
 	auto delimitersCount = std::count_if(what.cbegin(), what.cend(), [&delimiters](char c)
@@ -264,7 +271,7 @@ void CMultiLineLabel::showAll(Canvas & to)
 {
 {
 	CIntObject::showAll(to);
 	CIntObject::showAll(to);
 
 
-	const auto f = graphics->fonts[font];
+	const auto & fontPtr = GH.renderHandler().loadFont(font);
 
 
 	// calculate which lines should be visible
 	// calculate which lines should be visible
 	int totalLines = static_cast<int>(lines.size());
 	int totalLines = static_cast<int>(lines.size());
@@ -274,17 +281,17 @@ void CMultiLineLabel::showAll(Canvas & to)
 	if(beginLine < 0)
 	if(beginLine < 0)
 		beginLine = 0;
 		beginLine = 0;
 	else
 	else
-		beginLine /= (int)f->getLineHeight();
+		beginLine /= fontPtr->getLineHeight();
 
 
 	if(endLine < 0)
 	if(endLine < 0)
 		endLine = 0;
 		endLine = 0;
 	else
 	else
-		endLine /= (int)f->getLineHeight();
+		endLine /= fontPtr->getLineHeight();
 	endLine++;
 	endLine++;
 
 
 	// and where they should be displayed
 	// and where they should be displayed
-	Point lineStart = getTextLocation().topLeft() - visibleSize + Point(0, beginLine * (int)f->getLineHeight());
-	Point lineSize = Point(getTextLocation().w, (int)f->getLineHeight());
+	Point lineStart = getTextLocation().topLeft() - visibleSize + Point(0, beginLine * fontPtr->getLineHeight());
+	Point lineSize = Point(getTextLocation().w, fontPtr->getLineHeight());
 
 
 	CSDL_Ext::CClipRectGuard guard(to.getInternalSurface(), getTextLocation()); // to properly trim text that is too big to fit
 	CSDL_Ext::CClipRectGuard guard(to.getInternalSurface(), getTextLocation()); // to properly trim text that is too big to fit
 
 
@@ -293,7 +300,7 @@ void CMultiLineLabel::showAll(Canvas & to)
 		if(!lines[i].empty()) //non-empty line
 		if(!lines[i].empty()) //non-empty line
 			blitLine(to, Rect(lineStart, lineSize), lines[i]);
 			blitLine(to, Rect(lineStart, lineSize), lines[i]);
 
 
-		lineStart.y += (int)f->getLineHeight();
+		lineStart.y += fontPtr->getLineHeight();
 	}
 	}
 }
 }
 
 
@@ -301,15 +308,15 @@ void CMultiLineLabel::splitText(const std::string & Txt, bool redrawAfter)
 {
 {
 	lines.clear();
 	lines.clear();
 
 
-	const auto f = graphics->fonts[font];
-	int lineHeight = static_cast<int>(f->getLineHeight());
+	const auto & fontPtr = GH.renderHandler().loadFont(font);
+	int lineHeight = static_cast<int>(fontPtr->getLineHeight());
 
 
 	lines = CMessage::breakText(Txt, pos.w, font);
 	lines = CMessage::breakText(Txt, pos.w, font);
 
 
 	textSize.y = lineHeight * (int)lines.size();
 	textSize.y = lineHeight * (int)lines.size();
 	textSize.x = 0;
 	textSize.x = 0;
 	for(const std::string & line : lines)
 	for(const std::string & line : lines)
-		vstd::amax(textSize.x, f->getStringWidth(line.c_str()));
+		vstd::amax(textSize.x, fontPtr->getStringWidth(line.c_str()));
 	if(redrawAfter)
 	if(redrawAfter)
 		redraw();
 		redraw();
 }
 }
@@ -322,7 +329,8 @@ Rect CMultiLineLabel::getTextLocation()
 	if(pos.h <= textSize.y)
 	if(pos.h <= textSize.y)
 		return pos;
 		return pos;
 
 
-	Point textSize(pos.w, (int)graphics->fonts[font]->getLineHeight() * (int)lines.size());
+	const auto & fontPtr = GH.renderHandler().loadFont(font);
+	Point textSize(pos.w, fontPtr->getLineHeight() * (int)lines.size());
 	Point textOffset(pos.w - textSize.x, pos.h - textSize.y);
 	Point textOffset(pos.w - textSize.x, pos.h - textSize.y);
 
 
 	switch(alignment)
 	switch(alignment)
@@ -421,11 +429,12 @@ void CTextBox::setText(const std::string & text)
 		label->pos.w = pos.w - 16;
 		label->pos.w = pos.w - 16;
 		assert(label->pos.w > 0);
 		assert(label->pos.w > 0);
 		label->setText(text);
 		label->setText(text);
+		const auto & fontPtr = GH.renderHandler().loadFont(label->font);
 
 
 		OBJECT_CONSTRUCTION;
 		OBJECT_CONSTRUCTION;
 		slider = std::make_shared<CSlider>(Point(pos.w - 16, 0), pos.h, std::bind(&CTextBox::sliderMoved, this, _1),
 		slider = std::make_shared<CSlider>(Point(pos.w - 16, 0), pos.h, std::bind(&CTextBox::sliderMoved, this, _1),
 			label->pos.h, label->textSize.y, 0, Orientation::VERTICAL, CSlider::EStyle(sliderStyle));
 			label->pos.h, label->textSize.y, 0, Orientation::VERTICAL, CSlider::EStyle(sliderStyle));
-		slider->setScrollStep((int)graphics->fonts[label->font]->getLineHeight());
+		slider->setScrollStep(fontPtr->getLineHeight());
 		slider->setPanningStep(1);
 		slider->setPanningStep(1);
 		slider->setScrollBounds(pos - slider->pos.topLeft());
 		slider->setScrollBounds(pos - slider->pos.topLeft());
 	}
 	}

+ 6 - 0
client/windows/CHeroBackpackWindow.cpp

@@ -77,6 +77,7 @@ CHeroQuickBackpackWindow::CHeroQuickBackpackWindow(const CGHeroInstance * hero,
 	addSet(arts);
 	addSet(arts);
 	arts->setHero(hero);
 	arts->setHero(hero);
 	addUsedEvents(GESTURE);
 	addUsedEvents(GESTURE);
+	addUsedEvents(LCLICK);
 	pos.w = stretchedBackground->pos.w = arts->pos.w + 2 * windowMargin;
 	pos.w = stretchedBackground->pos.w = arts->pos.w + 2 * windowMargin;
 	pos.h = stretchedBackground->pos.h = arts->pos.h + windowMargin;
 	pos.h = stretchedBackground->pos.h = arts->pos.h + windowMargin;
 }
 }
@@ -96,6 +97,11 @@ void CHeroQuickBackpackWindow::gesturePanning(const Point & initialPosition, con
 	redraw();
 	redraw();
 }
 }
 
 
+void CHeroQuickBackpackWindow::notFocusedClick()
+{
+	close();
+}
+
 void CHeroQuickBackpackWindow::showAll(Canvas & to)
 void CHeroQuickBackpackWindow::showAll(Canvas & to)
 {
 {
 	if(arts->getSlotsNum() == 0)
 	if(arts->getSlotsNum() == 0)

+ 1 - 0
client/windows/CHeroBackpackWindow.h

@@ -33,6 +33,7 @@ public:
 	CHeroQuickBackpackWindow(const CGHeroInstance * hero, ArtifactPosition targetSlot);
 	CHeroQuickBackpackWindow(const CGHeroInstance * hero, ArtifactPosition targetSlot);
 	void gesture(bool on, const Point & initialPosition, const Point & finalPosition) override;
 	void gesture(bool on, const Point & initialPosition, const Point & finalPosition) override;
 	void gesturePanning(const Point & initialPosition, const Point & currentPosition, const Point & lastUpdateDistance) override;
 	void gesturePanning(const Point & initialPosition, const Point & currentPosition, const Point & lastUpdateDistance) override;
+	void notFocusedClick() override;
 
 
 private:
 private:
 	std::shared_ptr<CArtifactsOfHeroQuickBackpack> arts;
 	std::shared_ptr<CArtifactsOfHeroQuickBackpack> arts;

+ 12 - 3
client/windows/CMessage.cpp

@@ -70,6 +70,8 @@ std::vector<std::string> CMessage::breakText(std::string text, size_t maxLineWid
 
 
 	boost::algorithm::trim_right_if(text, boost::algorithm::is_any_of(std::string(" ")));
 	boost::algorithm::trim_right_if(text, boost::algorithm::is_any_of(std::string(" ")));
 
 
+	const auto & fontPtr = GH.renderHandler().loadFont(font);
+
 	// each iteration generates one output line
 	// each iteration generates one output line
 	while(text.length())
 	while(text.length())
 	{
 	{
@@ -83,7 +85,7 @@ std::vector<std::string> CMessage::breakText(std::string text, size_t maxLineWid
 		std::string printableString;
 		std::string printableString;
 
 
 		// loops till line is full or end of text reached
 		// loops till line is full or end of text reached
-		while(currPos < text.length() && text[currPos] != 0x0a && graphics->fonts[font]->getStringWidth(printableString) <= maxLineWidth)
+		while(currPos < text.length() && text[currPos] != 0x0a && fontPtr->getStringWidth(printableString) <= maxLineWidth)
 		{
 		{
 			symbolSize = TextOperations::getUnicodeCharacterSize(text[currPos]);
 			symbolSize = TextOperations::getUnicodeCharacterSize(text[currPos]);
 
 
@@ -125,7 +127,14 @@ std::vector<std::string> CMessage::breakText(std::string text, size_t maxLineWid
 		if(currPos < text.length() && (text[currPos] != 0x0a))
 		if(currPos < text.length() && (text[currPos] != 0x0a))
 		{
 		{
 			if(wordBreak != ui32(-1))
 			if(wordBreak != ui32(-1))
+			{
 				currPos = wordBreak;
 				currPos = wordBreak;
+				if(text.substr(0, currPos).find('{') == std::string::npos)
+				{
+					opened = false;
+					color = "";
+				}
+			}
 			else
 			else
 				currPos -= symbolSize;
 				currPos -= symbolSize;
 		}
 		}
@@ -186,9 +195,9 @@ std::string CMessage::guessHeader(const std::string & msg)
 
 
 int CMessage::guessHeight(const std::string & txt, int width, EFonts font)
 int CMessage::guessHeight(const std::string & txt, int width, EFonts font)
 {
 {
-	const auto f = graphics->fonts[font];
+	const auto & fontPtr = GH.renderHandler().loadFont(font);
 	const auto lines = CMessage::breakText(txt, width, font);
 	const auto lines = CMessage::breakText(txt, width, font);
-	size_t lineHeight = f->getLineHeight();
+	size_t lineHeight = fontPtr->getLineHeight();
 	return lineHeight * lines.size();
 	return lineHeight * lines.size();
 }
 }
 
 

+ 5 - 0
client/windows/CWindowWithArtifacts.cpp

@@ -86,6 +86,11 @@ void CWindowWithArtifacts::clickPressedOnArtPlace(const CGHeroInstance * hero, c
 		if(allowExchange || hero->id == heroArtOwner->id)
 		if(allowExchange || hero->id == heroArtOwner->id)
 			putPickedArtifact(*hero, slot);
 			putPickedArtifact(*hero, slot);
 	}
 	}
+	else if(GH.isKeyboardShiftDown())
+	{
+		if(ArtifactUtils::isSlotEquipment(slot))
+			GH.windows().createAndPushWindow<CHeroQuickBackpackWindow>(hero, slot);
+	}
 	else if(auto art = hero->getArt(slot))
 	else if(auto art = hero->getArt(slot))
 	{
 	{
 		if(hero->getOwner() == LOCPLINT->playerID)
 		if(hero->getOwner() == LOCPLINT->playerID)

+ 9 - 4
client/windows/GUIClasses.cpp

@@ -34,6 +34,7 @@
 #include "../widgets/TextControls.h"
 #include "../widgets/TextControls.h"
 #include "../widgets/ObjectLists.h"
 #include "../widgets/ObjectLists.h"
 #include "../widgets/VideoWidget.h"
 #include "../widgets/VideoWidget.h"
+#include "../widgets/GraphicalPrimitiveCanvas.h"
 
 
 #include "../render/Canvas.h"
 #include "../render/Canvas.h"
 #include "../render/IRenderHandler.h"
 #include "../render/IRenderHandler.h"
@@ -1616,22 +1617,26 @@ VideoWindow::VideoWindow(VideoPath video, ImagePath rim, bool showBackground, fl
 
 
 	addUsedEvents(LCLICK | KEYBOARD);
 	addUsedEvents(LCLICK | KEYBOARD);
 
 
+	if(showBackground)
+		backgroundAroundWindow = std::make_shared<CFilledTexture>(ImagePath::builtin("DIBOXBCK"), Rect(0, 0, GH.screenDimensions().x, GH.screenDimensions().y));
+	
 	if(!rim.empty())
 	if(!rim.empty())
 	{
 	{
+		setBackground(rim);
 		videoPlayer = std::make_shared<VideoWidgetOnce>(Point(80, 186), video, true, [this](){ exit(false); });
 		videoPlayer = std::make_shared<VideoWidgetOnce>(Point(80, 186), video, true, [this](){ exit(false); });
 		pos = center(Rect(0, 0, 800, 600));
 		pos = center(Rect(0, 0, 800, 600));
 	}
 	}
 	else
 	else
 	{
 	{
+		blackBackground = std::make_shared<GraphicalPrimitiveCanvas>(Rect(0, 0, GH.screenDimensions().x, GH.screenDimensions().y));
 		videoPlayer = std::make_shared<VideoWidgetOnce>(Point(0, 0), video, true, scaleFactor, [this](){ exit(false); });
 		videoPlayer = std::make_shared<VideoWidgetOnce>(Point(0, 0), video, true, scaleFactor, [this](){ exit(false); });
 		pos = center(Rect(0, 0, videoPlayer->pos.w, videoPlayer->pos.h));
 		pos = center(Rect(0, 0, videoPlayer->pos.w, videoPlayer->pos.h));
+		blackBackground->addBox(Point(0, 0), Point(pos.x, pos.y), Colors::BLACK);
 	}
 	}
 
 
-	if(showBackground)
-		backgroundAroundWindow = std::make_shared<CFilledTexture>(ImagePath::builtin("DIBOXBCK"), Rect(-pos.x, -pos.y, GH.screenDimensions().x, GH.screenDimensions().y));
+	if(backgroundAroundWindow)
+		backgroundAroundWindow->pos.moveTo(Point(0, 0));
 
 
-	if(!rim.empty())
-		setBackground(rim);
 }
 }
 
 
 void VideoWindow::exit(bool skipped)
 void VideoWindow::exit(bool skipped)

+ 2 - 0
client/windows/GUIClasses.h

@@ -44,6 +44,7 @@ class CFilledTexture;
 class IImage;
 class IImage;
 class VideoWidget;
 class VideoWidget;
 class VideoWidgetOnce;
 class VideoWidgetOnce;
+class GraphicalPrimitiveCanvas;
 
 
 enum class EUserEvent;
 enum class EUserEvent;
 
 
@@ -506,6 +507,7 @@ class VideoWindow : public CWindowObject
 {
 {
 	std::shared_ptr<VideoWidgetOnce> videoPlayer;
 	std::shared_ptr<VideoWidgetOnce> videoPlayer;
 	std::shared_ptr<CFilledTexture> backgroundAroundWindow;
 	std::shared_ptr<CFilledTexture> backgroundAroundWindow;
+	std::shared_ptr<GraphicalPrimitiveCanvas> blackBackground;
 
 
 	std::function<void(bool)> closeCb;
 	std::function<void(bool)> closeCb;
 
 

+ 66 - 66
config/campaignOverrides.json

@@ -6,7 +6,7 @@
 		"introVideo": "H3X1intr",
 		"introVideo": "H3X1intr",
 		"videoRim": "IntroRm2"
 		"videoRim": "IntroRm2"
 	},
 	},
-	"MAPS/HC1_MAIN" : { // Heroes Chronicles 1
+	"MAPS/CHRONICLES/HC1_MAIN" : { // Heroes Chronicles 1
 		"regions":
 		"regions":
 		{
 		{
 			"background": "chronicles_1/CamBkHc",
 			"background": "chronicles_1/CamBkHc",
@@ -14,14 +14,14 @@
 			"suffix": ["1", "2", "3"],
 			"suffix": ["1", "2", "3"],
 			"color_suffix_length": 0,
 			"color_suffix_length": 0,
 			"desc": [
 			"desc": [
-				{ "infix": "1", "x": 27, "y": 43 },
-				{ "infix": "2", "x": 231, "y": 43 },
-				{ "infix": "3", "x": 27, "y": 178 },
-				{ "infix": "4", "x": 231, "y": 178 },
-				{ "infix": "5", "x": 27, "y": 312 },
-				{ "infix": "6", "x": 231, "y": 312 },
-				{ "infix": "7", "x": 27, "y": 447 },
-				{ "infix": "8", "x": 231, "y": 447 }
+				{ "infix": "1", "x": 27, "y": 43, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "2", "x": 231, "y": 43, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "3", "x": 27, "y": 178, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "4", "x": 231, "y": 178, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "5", "x": 27, "y": 312, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "6", "x": 231, "y": 312, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "7", "x": 27, "y": 447, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "8", "x": 231, "y": 447, "labelPos": { "x": 98, "y": 112 } }
 			]
 			]
 		},
 		},
 		"scenarioCount": 8,
 		"scenarioCount": 8,
@@ -39,7 +39,7 @@
 		"videoRim": "chronicles_1/INTRORIM",
 		"videoRim": "chronicles_1/INTRORIM",
 		"introVideo": "chronicles_1/Intro"
 		"introVideo": "chronicles_1/Intro"
 	},
 	},
-	"MAPS/HC2_MAIN" : { // Heroes Chronicles 2
+	"MAPS/CHRONICLES/HC2_MAIN" : { // Heroes Chronicles 2
 		"regions":
 		"regions":
 		{
 		{
 			"background": "chronicles_2/CamBkHc",
 			"background": "chronicles_2/CamBkHc",
@@ -47,14 +47,14 @@
 			"suffix": ["1", "2", "3"],
 			"suffix": ["1", "2", "3"],
 			"color_suffix_length": 0,
 			"color_suffix_length": 0,
 			"desc": [
 			"desc": [
-				{ "infix": "1", "x": 27, "y": 43 },
-				{ "infix": "2", "x": 231, "y": 43 },
-				{ "infix": "3", "x": 27, "y": 178 },
-				{ "infix": "4", "x": 231, "y": 178 },
-				{ "infix": "5", "x": 27, "y": 312 },
-				{ "infix": "6", "x": 231, "y": 312 },
-				{ "infix": "7", "x": 27, "y": 447 },
-				{ "infix": "8", "x": 231, "y": 447 }
+				{ "infix": "1", "x": 27, "y": 43, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "2", "x": 231, "y": 43, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "3", "x": 27, "y": 178, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "4", "x": 231, "y": 178, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "5", "x": 27, "y": 312, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "6", "x": 231, "y": 312, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "7", "x": 27, "y": 447, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "8", "x": 231, "y": 447, "labelPos": { "x": 98, "y": 112 } }
 			]
 			]
 		},
 		},
 		"scenarioCount": 8,
 		"scenarioCount": 8,
@@ -72,7 +72,7 @@
 		"videoRim": "chronicles_2/INTRORIM",
 		"videoRim": "chronicles_2/INTRORIM",
 		"introVideo": "chronicles_2/Intro"
 		"introVideo": "chronicles_2/Intro"
 	},
 	},
-	"MAPS/HC3_MAIN" : { // Heroes Chronicles 3
+	"MAPS/CHRONICLES/HC3_MAIN" : { // Heroes Chronicles 3
 		"regions":
 		"regions":
 		{
 		{
 			"background": "chronicles_3/CamBkHc",
 			"background": "chronicles_3/CamBkHc",
@@ -80,14 +80,14 @@
 			"suffix": ["1", "2", "3"],
 			"suffix": ["1", "2", "3"],
 			"color_suffix_length": 0,
 			"color_suffix_length": 0,
 			"desc": [
 			"desc": [
-				{ "infix": "1", "x": 27, "y": 43 },
-				{ "infix": "2", "x": 231, "y": 43 },
-				{ "infix": "3", "x": 27, "y": 178 },
-				{ "infix": "4", "x": 231, "y": 178 },
-				{ "infix": "5", "x": 27, "y": 312 },
-				{ "infix": "6", "x": 231, "y": 312 },
-				{ "infix": "7", "x": 27, "y": 447 },
-				{ "infix": "8", "x": 231, "y": 447 }
+				{ "infix": "1", "x": 27, "y": 43, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "2", "x": 231, "y": 43, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "3", "x": 27, "y": 178, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "4", "x": 231, "y": 178, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "5", "x": 27, "y": 312, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "6", "x": 231, "y": 312, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "7", "x": 27, "y": 447, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "8", "x": 231, "y": 447, "labelPos": { "x": 98, "y": 112 } }
 			]
 			]
 		},
 		},
 		"scenarioCount": 8,
 		"scenarioCount": 8,
@@ -105,7 +105,7 @@
 		"videoRim": "chronicles_3/INTRORIM",
 		"videoRim": "chronicles_3/INTRORIM",
 		"introVideo": "chronicles_3/Intro"
 		"introVideo": "chronicles_3/Intro"
 	},
 	},
-	"MAPS/HC4_MAIN" : { // Heroes Chronicles 4
+	"MAPS/CHRONICLES/HC4_MAIN" : { // Heroes Chronicles 4
 		"regions":
 		"regions":
 		{
 		{
 			"background": "chronicles_4/CamBkHc",
 			"background": "chronicles_4/CamBkHc",
@@ -113,14 +113,14 @@
 			"suffix": ["1", "2", "3"],
 			"suffix": ["1", "2", "3"],
 			"color_suffix_length": 0,
 			"color_suffix_length": 0,
 			"desc": [
 			"desc": [
-				{ "infix": "1", "x": 27, "y": 43 },
-				{ "infix": "2", "x": 231, "y": 43 },
-				{ "infix": "3", "x": 27, "y": 178 },
-				{ "infix": "4", "x": 231, "y": 178 },
-				{ "infix": "5", "x": 27, "y": 312 },
-				{ "infix": "6", "x": 231, "y": 312 },
-				{ "infix": "7", "x": 27, "y": 447 },
-				{ "infix": "8", "x": 231, "y": 447 }
+				{ "infix": "1", "x": 27, "y": 43, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "2", "x": 231, "y": 43, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "3", "x": 27, "y": 178, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "4", "x": 231, "y": 178, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "5", "x": 27, "y": 312, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "6", "x": 231, "y": 312, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "7", "x": 27, "y": 447, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "8", "x": 231, "y": 447, "labelPos": { "x": 98, "y": 112 } }
 			]
 			]
 		},
 		},
 		"scenarioCount": 8,
 		"scenarioCount": 8,
@@ -138,7 +138,7 @@
 		"videoRim": "chronicles_4/INTRORIM",
 		"videoRim": "chronicles_4/INTRORIM",
 		"introVideo": "chronicles_4/Intro"
 		"introVideo": "chronicles_4/Intro"
 	},
 	},
-	"MAPS/HC5_MAIN" : { // Heroes Chronicles 5
+	"MAPS/CHRONICLES/HC5_MAIN" : { // Heroes Chronicles 5
 		"regions":
 		"regions":
 		{
 		{
 			"background": "chronicles_5/CamBkHc",
 			"background": "chronicles_5/CamBkHc",
@@ -146,11 +146,11 @@
 			"suffix": ["1", "2", "3"],
 			"suffix": ["1", "2", "3"],
 			"color_suffix_length": 0,
 			"color_suffix_length": 0,
 			"desc": [
 			"desc": [
-				{ "infix": "1", "x": 34, "y": 184 },
-				{ "infix": "2", "x": 235, "y": 184 },
-				{ "infix": "3", "x": 34, "y": 320 },
-				{ "infix": "4", "x": 235, "y": 320 },
-				{ "infix": "5", "x": 129, "y": 459 }
+				{ "infix": "1", "x": 34, "y": 184, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "2", "x": 235, "y": 184, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "3", "x": 34, "y": 320, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "4", "x": 235, "y": 320, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "5", "x": 129, "y": 459, "labelPos": { "x": 98, "y": 112 } }
 			]
 			]
 		},
 		},
 		"scenarioCount": 5,
 		"scenarioCount": 5,
@@ -165,7 +165,7 @@
 		"videoRim": "chronicles_5/INTRORIM",
 		"videoRim": "chronicles_5/INTRORIM",
 		"introVideo": "chronicles_5/Intro"
 		"introVideo": "chronicles_5/Intro"
 	},
 	},
-	"MAPS/HC6_MAIN" : { // Heroes Chronicles 6
+	"MAPS/CHRONICLES/HC6_MAIN" : { // Heroes Chronicles 6
 		"regions":
 		"regions":
 		{
 		{
 			"background": "chronicles_6/CamBkHc",
 			"background": "chronicles_6/CamBkHc",
@@ -173,11 +173,11 @@
 			"suffix": ["1", "2", "3"],
 			"suffix": ["1", "2", "3"],
 			"color_suffix_length": 0,
 			"color_suffix_length": 0,
 			"desc": [
 			"desc": [
-				{ "infix": "1", "x": 34, "y": 184 },
-				{ "infix": "2", "x": 235, "y": 184 },
-				{ "infix": "3", "x": 34, "y": 320 },
-				{ "infix": "4", "x": 235, "y": 320 },
-				{ "infix": "5", "x": 129, "y": 459 }
+				{ "infix": "1", "x": 34, "y": 184, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "2", "x": 235, "y": 184, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "3", "x": 34, "y": 320, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "4", "x": 235, "y": 320, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "5", "x": 129, "y": 459, "labelPos": { "x": 98, "y": 112 } }
 			]
 			]
 		},
 		},
 		"scenarioCount": 5,
 		"scenarioCount": 5,
@@ -192,7 +192,7 @@
 		"videoRim": "chronicles_6/INTRORIM",
 		"videoRim": "chronicles_6/INTRORIM",
 		"introVideo": "chronicles_6/Intro"
 		"introVideo": "chronicles_6/Intro"
 	},
 	},
-	"MAPS/HC7_MAIN" : { // Heroes Chronicles 7
+	"MAPS/CHRONICLES/HC7_MAIN" : { // Heroes Chronicles 7
 		"regions":
 		"regions":
 		{
 		{
 			"background": "chronicles_7/CamBkHc",
 			"background": "chronicles_7/CamBkHc",
@@ -200,14 +200,14 @@
 			"suffix": ["1", "2", "3"],
 			"suffix": ["1", "2", "3"],
 			"color_suffix_length": 0,
 			"color_suffix_length": 0,
 			"desc": [
 			"desc": [
-				{ "infix": "1", "x": 27, "y": 43 },
-				{ "infix": "2", "x": 231, "y": 43 },
-				{ "infix": "3", "x": 27, "y": 178 },
-				{ "infix": "4", "x": 231, "y": 178 },
-				{ "infix": "5", "x": 27, "y": 312 },
-				{ "infix": "6", "x": 231, "y": 312 },
-				{ "infix": "7", "x": 27, "y": 447 },
-				{ "infix": "8", "x": 231, "y": 447 }
+				{ "infix": "1", "x": 27, "y": 43, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "2", "x": 231, "y": 43, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "3", "x": 27, "y": 178, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "4", "x": 231, "y": 178, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "5", "x": 27, "y": 312, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "6", "x": 231, "y": 312, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "7", "x": 27, "y": 447, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "8", "x": 231, "y": 447, "labelPos": { "x": 98, "y": 112 } }
 			]
 			]
 		},
 		},
 		"scenarioCount": 8,
 		"scenarioCount": 8,
@@ -225,7 +225,7 @@
 		"videoRim": "chronicles_7/INTRORIM",
 		"videoRim": "chronicles_7/INTRORIM",
 		"introVideo": "chronicles_7/Intro5"
 		"introVideo": "chronicles_7/Intro5"
 	},
 	},
-	"MAPS/HC8_MAIN" : { // Heroes Chronicles 8
+	"MAPS/CHRONICLES/HC8_MAIN" : { // Heroes Chronicles 8
 		"regions":
 		"regions":
 		{
 		{
 			"background": "chronicles_8/CamBkHc",
 			"background": "chronicles_8/CamBkHc",
@@ -233,14 +233,14 @@
 			"suffix": ["1", "2", "3"],
 			"suffix": ["1", "2", "3"],
 			"color_suffix_length": 0,
 			"color_suffix_length": 0,
 			"desc": [
 			"desc": [
-				{ "infix": "1", "x": 27, "y": 43 },
-				{ "infix": "2", "x": 231, "y": 43 },
-				{ "infix": "3", "x": 27, "y": 178 },
-				{ "infix": "4", "x": 231, "y": 178 },
-				{ "infix": "5", "x": 27, "y": 312 },
-				{ "infix": "6", "x": 231, "y": 312 },
-				{ "infix": "7", "x": 27, "y": 447 },
-				{ "infix": "8", "x": 231, "y": 447 }
+				{ "infix": "1", "x": 27, "y": 43, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "2", "x": 231, "y": 43, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "3", "x": 27, "y": 178, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "4", "x": 231, "y": 178, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "5", "x": 27, "y": 312, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "6", "x": 231, "y": 312, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "7", "x": 27, "y": 447, "labelPos": { "x": 98, "y": 112 } },
+				{ "infix": "8", "x": 231, "y": 447, "labelPos": { "x": 98, "y": 112 } }
 			]
 			]
 		},
 		},
 		"scenarioCount": 8,
 		"scenarioCount": 8,

+ 0 - 4
config/creatures/castle.json

@@ -10,10 +10,6 @@
 			"cavalryChargeImmunity" :
 			"cavalryChargeImmunity" :
 			{
 			{
 				"type" : "CHARGE_IMMUNITY"
 				"type" : "CHARGE_IMMUNITY"
-			},
-			"invincible" :
-			{
-				"type" : "INVINCIBLE"
 			}
 			}
 		},
 		},
 		"graphics" :
 		"graphics" :

+ 15 - 14
config/fonts.json

@@ -5,12 +5,12 @@
 	"bitmap" :
 	"bitmap" :
 	[
 	[
 		"BIGFONT",  // Mostly used for window titles
 		"BIGFONT",  // Mostly used for window titles
-		"CALLI10R", // Unused in VCMI
-		"CREDITS",  // Used for credits menu
-		"HISCORE",  // Unused in VCMI
+		"CALLI10R", // Only in World View menu
+		"CREDITS",  // Only in Credits menu
+		"HISCORE",  // Only in High Scores menu
 		"MEDFONT",  // Some titles
 		"MEDFONT",  // Some titles
 		"SMALFONT", // Most of the messages
 		"SMALFONT", // Most of the messages
-		"TIMES08R", // Used to display amounts on creature card 
+		"TIMES08R", // Unused in VCMI
 		"TINY",     // Some text
 		"TINY",     // Some text
 		"VERD10B"   // Unused in VCMI
 		"VERD10B"   // Unused in VCMI
 	],
 	],
@@ -25,17 +25,18 @@
 	// b) list of scaling factors for each scaling mode, e.g. [ 10, 16, 22, 26]. In this case game will select point size according to xBRZ scaling factor
 	// b) list of scaling factors for each scaling mode, e.g. [ 10, 16, 22, 26]. In this case game will select point size according to xBRZ scaling factor
 	//    so unscaled mode will use 10px, xbrz2 will use 16px, and xbrz3 will use 22
 	//    so unscaled mode will use 10px, xbrz2 will use 16px, and xbrz3 will use 22
 	// "style" - italic and\or bold, indicates font style
 	// "style" - italic and\or bold, indicates font style
-	// "blend" - if set to true, font will be antialiased
+	// "outline" - if set, black shadow will be generated around entire text (instead of only bottom-right side)
+	// "noShadow" - if set, this font will not drop any shadow
 	"trueType":
 	"trueType":
 	{
 	{
-		//"BIGFONT"  : { "file" : "LiberationSerif-Bold.ttf", "size" : 22, "blend" : true},
-		//"CALLI10R" : { "file" : "Georgia.ttf",       "size" : 10},
-		//"CREDITS"  : { "file" : "LiberationSerif-Bold.ttf", "size" : 28},
-		//"HISCORE"  : { "file" : "Georgia.ttf",       "size" : 13},
-		//"MEDFONT"  : { "file" : "LiberationSerif-Bold.ttf", "size" : 16}, // breaks messages (from map events)
-		//"SMALFONT" : { "file" : "LiberationSerif-Regular.ttf",       "size" : 13, "blend" : true},
-		//"TIMES08R" : { "file" : "LiberationSerif-Regular.ttf", "size" :  11, "blend" : true},
-		//"TINY"     : { "file" : "LiberationSerif-Regular.ttf",       "size" : 11, "blend" : true},
-		//"VERD10B"  : { "file" : "Georgia.ttf",       "size" : 13}
+		"BIGFONT"  : { "file" : "NotoSerif-Bold.ttf",   "size" : [ 19, 39, 58, 78] },
+		"CALLI10R" : { "file" : "NotoSerif-Bold.ttf",   "size" : [ 12, 24, 36, 48] }, // TODO: find better matching font? This is likely non-free 'Callisto MT' font
+		"CREDITS"  : { "file" : "NotoSerif-Black.ttf",  "size" : [ 22, 44, 66, 88], "outline" : true },
+		"HISCORE"  : { "file" : "NotoSerif-Black.ttf",  "size" : [ 18, 36, 54, 72], "outline" : true },
+		"MEDFONT"  : { "file" : "NotoSerif-Bold.ttf",   "size" : [ 15, 31, 46, 62] },
+		"SMALFONT" : { "file" : "NotoSerif-Medium.ttf", "size" : [ 12, 24, 36, 48] },
+		"TIMES08R" : { "file" : "NotoSerif-Medium.ttf", "size" : [  8, 16, 24, 32] },
+		"TINY"     : { "file" : "NotoSans-Medium.ttf",  "size" : [  9, 19, 28, 38], "noShadow" : true }, // The only H3 font without shadow
+		"VERD10B"  : { "file" : "NotoSans-Medium.ttf",  "size" : [ 13, 26, 39, 52] }
 	}
 	}
 }
 }

+ 2 - 0
config/gameConfig.json

@@ -335,6 +335,8 @@
 			"defensePointDamageFactorCap": 0.7,
 			"defensePointDamageFactorCap": 0.7,
 			// If set to true, double-wide creatures will trigger obstacle effect when moving one tile forward or backwards
 			// If set to true, double-wide creatures will trigger obstacle effect when moving one tile forward or backwards
 			"oneHexTriggersObstacles": false,
 			"oneHexTriggersObstacles": false,
+			// Allow area shooters with SPELL_LIKE_ATTACK bonus such as liches or magogs to target empty hexes
+			"areaShotCanTargetEmptyHex" : false,
 			
 			
 			// Positions of units on start of the combat
 			// Positions of units on start of the combat
 			// If battle does not defines specific configuration, 'default' configuration will be used
 			// If battle does not defines specific configuration, 'default' configuration will be used

+ 2 - 1
config/schemas/gameSettings.json

@@ -69,7 +69,8 @@
 				"defensePointDamageFactor" :    { "type" : "number" },
 				"defensePointDamageFactor" :    { "type" : "number" },
 				"defensePointDamageFactorCap" : { "type" : "number" },
 				"defensePointDamageFactorCap" : { "type" : "number" },
 				"oneHexTriggersObstacles" :     { "type" : "boolean" },
 				"oneHexTriggersObstacles" :     { "type" : "boolean" },
-				"layouts" :                     { "type" : "object" }
+				"layouts" :                     { "type" : "object" },
+				"areaShotCanTargetEmptyHex" :   { "type" : "boolean" }
 			}
 			}
 		},
 		},
 		"creatures": {
 		"creatures": {

+ 11 - 0
config/schemas/settings.json

@@ -166,6 +166,8 @@
 				"showfps",
 				"showfps",
 				"targetfps",
 				"targetfps",
 				"vsync",
 				"vsync",
+				"fontsType",
+				"fontScalingFactor",
 				"upscalingFilter",
 				"upscalingFilter",
 				"fontUpscalingFilter",
 				"fontUpscalingFilter",
 				"downscalingFilter"
 				"downscalingFilter"
@@ -232,6 +234,15 @@
 					"type" : "boolean",
 					"type" : "boolean",
 					"default" : true
 					"default" : true
 				},
 				},
+				"fontsType" : {
+					"type" : "string",
+					"enum" : [ "auto", "original", "scalable" ],
+					"default" : "auto"
+				},
+				"fontScalingFactor" : {
+					"type" : "number",
+					"default" : 1
+				},
 				"fontUpscalingFilter" : {
 				"fontUpscalingFilter" : {
 					"type" : "string",
 					"type" : "string",
 					"enum" : [ "nearest", "bilinear", "xbrz" ],
 					"enum" : [ "nearest", "bilinear", "xbrz" ],

+ 4 - 3
docs/modders/Campaign_Format.md

@@ -191,9 +191,9 @@ Predefined campaign regions are located in file `campaign_regions.json`
     "prefix": "G3",
     "prefix": "G3",
     "colorSuffixLength": 1,
     "colorSuffixLength": 1,
     "desc": [
     "desc": [
-        { "infix": "A", "x": 289, "y": 376 },
-        { "infix": "B", "x": 60, "y": 147 },
-        { "infix": "C", "x": 131, "y": 202 }
+        { "infix": "A", "x": 289, "y": 376, "labelPos": { "x": 98, "y": 112 } },
+        { "infix": "B", "x": 60, "y": 147, "labelPos": { "x": 98, "y": 112 } },
+        { "infix": "C", "x": 131, "y": 202, "labelPos": { "x": 98, "y": 112 } }
     ]
     ]
 },
 },
 ```
 ```
@@ -202,6 +202,7 @@ Predefined campaign regions are located in file `campaign_regions.json`
 - `"prefix"` used to identify all images related to campaign. In this example (if background parameter wouldn't exists), background picture will be `G3_BG`
 - `"prefix"` used to identify all images related to campaign. In this example (if background parameter wouldn't exists), background picture will be `G3_BG`
 - `"suffix"` optional - use other suffixes than the default `En`, `Se` and `Co` for the three different images
 - `"suffix"` optional - use other suffixes than the default `En`, `Se` and `Co` for the three different images
 - `"infix"` used to identify all images related to region. In this example, it will be pictures whose files names begin with `G3A_..., G3B_..., G3C_..."` 
 - `"infix"` used to identify all images related to region. In this example, it will be pictures whose files names begin with `G3A_..., G3B_..., G3C_..."` 
+- `"labelPos"` optional -  to add scenario name as label on map
 - `"colorSuffixLength"` identifies suffix length for region colourful frames. 0 is no color suffix (no colorisation), 1 is used for `R, B, N, G, O, V, T, P`, value 2 is used for `Re, Bl, Br, Gr, Or, Vi, Te, Pi`
 - `"colorSuffixLength"` identifies suffix length for region colourful frames. 0 is no color suffix (no colorisation), 1 is used for `R, B, N, G, O, V, T, P`, value 2 is used for `Re, Bl, Br, Gr, Or, Vi, Te, Pi`
 
 
 ## Packing campaign
 ## Packing campaign

+ 1 - 1
launcher/modManager/chroniclesextractor.cpp

@@ -168,7 +168,7 @@ void ChroniclesExtractor::extractFiles(int no) const
 	QDir outDirSprites(pathToQString(basePath / "Sprites" / chroniclesDir));
 	QDir outDirSprites(pathToQString(basePath / "Sprites" / chroniclesDir));
 	QDir outDirVideo(pathToQString(basePath / "Video" / chroniclesDir));
 	QDir outDirVideo(pathToQString(basePath / "Video" / chroniclesDir));
 	QDir outDirSounds(pathToQString(basePath / "Sounds" / chroniclesDir));
 	QDir outDirSounds(pathToQString(basePath / "Sounds" / chroniclesDir));
-	QDir outDirMaps(pathToQString(basePath / "Maps"));
+	QDir outDirMaps(pathToQString(basePath / "Maps" / "Chronicles"));
 
 
 	auto extract = [](QDir scrDir, QDir dest, QString file, std::vector<std::string> files = {}){
 	auto extract = [](QDir scrDir, QDir dest, QString file, std::vector<std::string> files = {}){
 		CArchiveLoader archive("", scrDir.filePath(scrDir.entryList({file}).front()).toStdString(), false);
 		CArchiveLoader archive("", scrDir.filePath(scrDir.entryList({file}).front()).toStdString(), false);

+ 33 - 21
launcher/settingsView/csettingsview_moc.cpp

@@ -174,17 +174,13 @@ void CSettingsView::loadSettings()
 	ui->sliderControllerSticksAcceleration->setValue(settings["input"]["controllerAxisScale"].Float() * 100);
 	ui->sliderControllerSticksAcceleration->setValue(settings["input"]["controllerAxisScale"].Float() * 100);
 	ui->lineEditGameLobbyHost->setText(QString::fromStdString(settings["lobby"]["hostname"].String()));
 	ui->lineEditGameLobbyHost->setText(QString::fromStdString(settings["lobby"]["hostname"].String()));
 	ui->spinBoxNetworkPortLobby->setValue(settings["lobby"]["port"].Integer());
 	ui->spinBoxNetworkPortLobby->setValue(settings["lobby"]["port"].Integer());
-	
-	auto mainWindow = getMainWindow();
-	if(mainWindow)
-	{
-		bool fontModAvailable = mainWindow->getModView()->isModInstalled("vcmi-extras.truetypefonts");
-		if(!fontModAvailable)
-		{
-			ui->labelTtfFont->hide();
-			ui->buttonTtfFont->hide();
-		}
-	}
+
+	if (settings["video"]["fontsType"].String() == "auto")
+		ui->buttonFontAuto->setChecked(true);
+	else if (settings["video"]["fontsType"].String() == "original")
+		ui->buttonFontOriginal->setChecked(true);
+	else
+		ui->buttonFontScalable->setChecked(true);
 
 
 	loadToggleButtonSettings();
 	loadToggleButtonSettings();
 }
 }
@@ -210,9 +206,9 @@ void CSettingsView::loadToggleButtonSettings()
 	int cursorTypeIndex = vstd::find_pos(cursorTypesList, cursorType);
 	int cursorTypeIndex = vstd::find_pos(cursorTypesList, cursorType);
 	setCheckbuttonState(ui->buttonCursorType, cursorTypeIndex);
 	setCheckbuttonState(ui->buttonCursorType, cursorTypeIndex);
 
 
-	auto mainWindow = getMainWindow();
-	if(mainWindow)
-		setCheckbuttonState(ui->buttonTtfFont, mainWindow->getModView()->isModEnabled("vcmi-extras.truetypefonts"));
+	int fontScalingPercentage = settings["video"]["fontScalingFactor"].Float() * 100;
+	ui->sliderScalingFont->setValue(fontScalingPercentage / 5);
+
 }
 }
 
 
 void CSettingsView::fillValidResolutions()
 void CSettingsView::fillValidResolutions()
@@ -770,12 +766,28 @@ void CSettingsView::on_sliderControllerSticksSensitivity_valueChanged(int value)
 	node->Integer() = value;
 	node->Integer() = value;
 }
 }
 
 
-void CSettingsView::on_buttonTtfFont_toggled(bool value)
+void CSettingsView::on_sliderScalingFont_valueChanged(int value)
 {
 {
-	auto mainWindow = getMainWindow();
-	if(value)
-		mainWindow->getModView()->enableModByName("vcmi-extras.truetypefonts");
-	else
-		mainWindow->getModView()->disableModByName("vcmi-extras.truetypefonts");
-	updateCheckbuttonText(ui->buttonTtfFont);
+	int actualValuePercentage = value * 5;
+	ui->labelScalingFontValue->setText(QString("%1%").arg(actualValuePercentage));
+	Settings node = settings.write["video"]["fontScalingFactor"];
+	node->Float() = actualValuePercentage / 100.0;
+}
+
+void CSettingsView::on_buttonFontAuto_clicked(bool checked)
+{
+	Settings node = settings.write["video"]["fontsType"];
+	node->String() = "auto";
+}
+
+void CSettingsView::on_buttonFontScalable_clicked(bool checked)
+{
+	Settings node = settings.write["video"]["fontsType"];
+	node->String() = "scalable";
+}
+
+void CSettingsView::on_buttonFontOriginal_clicked(bool checked)
+{
+	Settings node = settings.write["video"]["fontsType"];
+	node->String() = "original";
 }
 }

+ 7 - 1
launcher/settingsView/csettingsview_moc.h

@@ -88,7 +88,13 @@ private slots:
 
 
 	void on_sliderControllerSticksSensitivity_valueChanged(int value);
 	void on_sliderControllerSticksSensitivity_valueChanged(int value);
 
 
-	void on_buttonTtfFont_toggled(bool value);
+	//void on_buttonTtfFont_toggled(bool value);
+
+	void on_sliderScalingFont_valueChanged(int value);
+
+	void on_buttonFontAuto_clicked(bool checked);
+	void on_buttonFontScalable_clicked(bool checked);
+	void on_buttonFontOriginal_clicked(bool checked);
 
 
 private:
 private:
 	Ui::CSettingsView * ui;
 	Ui::CSettingsView * ui;

文件差异内容过多而无法显示
+ 470 - 389
launcher/settingsView/csettingsview_moc.ui


+ 151 - 87
launcher/translation/chinese.ts

@@ -235,7 +235,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
         <source>Description</source>
         <source>Description</source>
         <translation>详细介绍</translation>
         <translation>详细介绍</translation>
     </message>
     </message>
@@ -295,181 +295,191 @@
         <translation>终止</translation>
         <translation>终止</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
         <source>Mod name</source>
         <source>Mod name</source>
         <translation>模组名称</translation>
         <translation>模组名称</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
         <source>Installed version</source>
         <source>Installed version</source>
         <translation>已安装的版本</translation>
         <translation>已安装的版本</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
         <source>Latest version</source>
         <source>Latest version</source>
         <translation>最新版本</translation>
         <translation>最新版本</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
         <source>Size</source>
         <source>Size</source>
         <translation>大小</translation>
         <translation>大小</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
         <source>Download size</source>
         <source>Download size</source>
         <translation>下载大小</translation>
         <translation>下载大小</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
         <source>Authors</source>
         <source>Authors</source>
         <translation>作者</translation>
         <translation>作者</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
         <source>License</source>
         <source>License</source>
         <translation>授权许可</translation>
         <translation>授权许可</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
         <source>Contact</source>
         <source>Contact</source>
         <translation>联系方式</translation>
         <translation>联系方式</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
         <source>Compatibility</source>
         <source>Compatibility</source>
         <translation>兼容性</translation>
         <translation>兼容性</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>Required VCMI version</source>
         <source>Required VCMI version</source>
         <translation>需要VCMI版本</translation>
         <translation>需要VCMI版本</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>Supported VCMI version</source>
         <source>Supported VCMI version</source>
         <translation>支持的VCMI版本</translation>
         <translation>支持的VCMI版本</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>please upgrade mod</source>
         <source>please upgrade mod</source>
         <translation>请更新模组</translation>
         <translation>请更新模组</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
         <source>mods repository index</source>
         <source>mods repository index</source>
         <translation>模组源索引号</translation>
         <translation>模组源索引号</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>or newer</source>
         <source>or newer</source>
         <translation>或更新的版本</translation>
         <translation>或更新的版本</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
         <source>Supported VCMI versions</source>
         <source>Supported VCMI versions</source>
         <translation>支持的VCMI版本</translation>
         <translation>支持的VCMI版本</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
         <source>Languages</source>
         <source>Languages</source>
         <translation>语言</translation>
         <translation>语言</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
         <source>Required mods</source>
         <source>Required mods</source>
         <translatorcomment>Mod统一翻译为模组</translatorcomment>
         <translatorcomment>Mod统一翻译为模组</translatorcomment>
         <translation>前置模组</translation>
         <translation>前置模组</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
         <source>Conflicting mods</source>
         <source>Conflicting mods</source>
         <translatorcomment>Mod统一翻译为模组</translatorcomment>
         <translatorcomment>Mod统一翻译为模组</translatorcomment>
         <translation>冲突的模组</translation>
         <translation>冲突的模组</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <translation>这个模组无法被安装或者激活,因为下列依赖项未满足</translation>
         <translation>这个模组无法被安装或者激活,因为下列依赖项未满足</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <translation>这个模组无法被激活,因为下列模组与其不兼容</translation>
         <translation>这个模组无法被激活,因为下列模组与其不兼容</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <translation>这个模组无法被禁用,因为它被下列模组所依赖</translation>
         <translation>这个模组无法被禁用,因为它被下列模组所依赖</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <translation>这个模组无法被卸载或者更新,因为它被下列模组所依赖</translation>
         <translation>这个模组无法被卸载或者更新,因为它被下列模组所依赖</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <translation>这是一个附属模组它无法在所属模组外被直接被安装或者卸载</translation>
         <translation>这是一个附属模组它无法在所属模组外被直接被安装或者卸载</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
         <source>Notes</source>
         <source>Notes</source>
         <translation>笔记注释</translation>
         <translation>笔记注释</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
         <source>All supported files</source>
         <source>All supported files</source>
         <translation>所有支持的文件格式</translation>
         <translation>所有支持的文件格式</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
         <source>Maps</source>
         <source>Maps</source>
         <translation>地图</translation>
         <translation>地图</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
         <source>Campaigns</source>
         <source>Campaigns</source>
         <translation>战役</translation>
         <translation>战役</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
         <source>Configs</source>
         <source>Configs</source>
         <translation>配置</translation>
         <translation>配置</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
         <source>Mods</source>
         <source>Mods</source>
         <translation>模组</translation>
         <translation>模组</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
-        <source>Select files (configs, mods, maps, campaigns) to install...</source>
-        <translation>选择文件(配置,模组,地图,战役)来安装</translation>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
+        <source>Gog files</source>
+        <translation>Gog文件</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
+        <source>All files (*.*)</source>
+        <translation>所有文件 (*.*)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
+        <source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
+        <translation>选择需要安装的文件(配置,模组,地图,战役,gog文件)...</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Replace config file?</source>
         <source>Replace config file?</source>
         <translation>替换配置文件?</translation>
         <translation>替换配置文件?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Do you want to replace %1?</source>
         <source>Do you want to replace %1?</source>
         <translation>你想要替换%1吗?</translation>
         <translation>你想要替换%1吗?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <translation>正在下载 %1. %p% (%v MB 共 %m MB) 已完成</translation>
         <translation>正在下载 %1. %p% (%v MB 共 %m MB) 已完成</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
         <source>Download failed</source>
         <source>Download failed</source>
         <translation>下载失败</translation>
         <translation>下载失败</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
         <source>Unable to download all files.
         <source>Unable to download all files.
 
 
 Encountered errors:
 Encountered errors:
@@ -482,7 +492,7 @@ Encountered errors:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
         <source>
         <source>
 
 
 Install successfully downloaded?</source>
 Install successfully downloaded?</source>
@@ -491,34 +501,39 @@ Install successfully downloaded?</source>
 安装下载成功的部分?</translation>
 安装下载成功的部分?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
+        <source>Installing chronicles</source>
+        <translation>安装历代记</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
         <source>Installing mod %1</source>
         <source>Installing mod %1</source>
         <translation>正在安装模组 %1</translation>
         <translation>正在安装模组 %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
         <source>Operation failed</source>
         <source>Operation failed</source>
         <translation>操作失败</translation>
         <translation>操作失败</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
         <source>Encountered errors:
         <source>Encountered errors:
 </source>
 </source>
         <translation>遇到问题:
         <translation>遇到问题:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
         <source>screenshots</source>
         <source>screenshots</source>
         <translation>截图</translation>
         <translation>截图</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
         <source>Screenshot %1</source>
         <source>Screenshot %1</source>
         <translation>截图 %1</translation>
         <translation>截图 %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
         <source>Mod is incompatible</source>
         <source>Mod is incompatible</source>
         <translatorcomment>Mod统一翻译为模组</translatorcomment>
         <translatorcomment>Mod统一翻译为模组</translatorcomment>
         <translation>模组不兼容</translation>
         <translation>模组不兼容</translation>
@@ -624,7 +639,7 @@ Install successfully downloaded?</source>
 <context>
 <context>
     <name>CSettingsView</name>
     <name>CSettingsView</name>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
         <source>Off</source>
         <source>Off</source>
         <translation>关闭</translation>
         <translation>关闭</translation>
     </message>
     </message>
@@ -718,6 +733,11 @@ Install successfully downloaded?</source>
         <source>xBRZ x4</source>
         <source>xBRZ x4</source>
         <translation>xBRZ x4</translation>
         <translation>xBRZ x4</translation>
     </message>
     </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
+        <source>Use scalable fonts</source>
+        <translation>使用可缩放字体</translation>
+    </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <source>Online Lobby address</source>
         <source>Online Lobby address</source>
@@ -884,7 +904,7 @@ Install successfully downloaded?</source>
         <translation>渲染器</translation>
         <translation>渲染器</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
         <source>On</source>
         <source>On</source>
         <translation>开启</translation>
         <translation>开启</translation>
     </message>
     </message>
@@ -972,31 +992,67 @@ Fullscreen Exclusive Mode - game will cover entirety of your screen and will use
         <translation>显示开场动画</translation>
         <translation>显示开场动画</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
         <source>Active</source>
         <source>Active</source>
         <translation>激活</translation>
         <translation>激活</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
         <source>Disabled</source>
         <source>Disabled</source>
         <translation>禁用</translation>
         <translation>禁用</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
         <source>Enable</source>
         <source>Enable</source>
         <translation>启用</translation>
         <translation>启用</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
         <source>Not Installed</source>
         <source>Not Installed</source>
         <translation>未安装</translation>
         <translation>未安装</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
         <source>Install</source>
         <source>Install</source>
         <translation>安装</translation>
         <translation>安装</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>ChroniclesExtractor</name>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="48"/>
+        <source>File cannot opened</source>
+        <translation>无法打开文件</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>Invalid file selected</source>
+        <translation>所选的文件无效</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <source>You have to select an gog installer file!</source>
+        <translation>您必须选择一个gog安装文件!</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>You have to select an chronicle installer file!</source>
+        <translation>您必须选择一个历代记安装文件!</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="87"/>
+        <source>Extracting error!</source>
+        <translation>提取错误!</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="104"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="105"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="141"/>
+        <source>Heroes Chronicles</source>
+        <translation>英雄无敌历代记</translation>
+    </message>
+</context>
 <context>
 <context>
     <name>File size</name>
     <name>File size</name>
     <message>
     <message>
@@ -1215,113 +1271,101 @@ Offline installer consists of two parts, .exe and .bin. Make sure you download b
         <translation>追随神迹</translation>
         <translation>追随神迹</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Heroes III installation found!</source>
         <source>Heroes III installation found!</source>
         <translation>英雄无敌3安装目录已找到!</translation>
         <translation>英雄无敌3安装目录已找到!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Copy data to VCMI folder?</source>
         <source>Copy data to VCMI folder?</source>
         <translation>复制数据到VCMI文件夹吗?</translation>
         <translation>复制数据到VCMI文件夹吗?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
         <source>Select %1 file...</source>
         <source>Select %1 file...</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation>选择%1文件...</translation>
         <translation>选择%1文件...</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
         <source>You have to select %1 file!</source>
         <source>You have to select %1 file!</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation>你必须选择%1文件!</translation>
         <translation>你必须选择%1文件!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
         <source>GOG file (*.*)</source>
         <source>GOG file (*.*)</source>
         <translation>GOG文件 (*.*)</translation>
         <translation>GOG文件 (*.*)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
         <source>File selection</source>
         <source>File selection</source>
         <translation>选择文件</translation>
         <translation>选择文件</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
         <source>File cannot be opened</source>
         <source>File cannot be opened</source>
         <translation>打开文件失败</translation>
         <translation>打开文件失败</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
         <source>Invalid file selected</source>
         <source>Invalid file selected</source>
         <translation>所选的文件无效</translation>
         <translation>所选的文件无效</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
         <source>GOG installer</source>
         <source>GOG installer</source>
         <translation>GOG安装包</translation>
         <translation>GOG安装包</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
         <source>GOG data</source>
         <source>GOG data</source>
         <translation>GOC数据</translation>
         <translation>GOC数据</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>No Heroes III data!</source>
         <source>No Heroes III data!</source>
         <translation>没有英雄无敌3数据!</translation>
         <translation>没有英雄无敌3数据!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>Selected files do not contain Heroes III data!</source>
         <source>Selected files do not contain Heroes III data!</source>
         <translation>所选的文件不包含英雄无敌3数据!</translation>
         <translation>所选的文件不包含英雄无敌3数据!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Heroes III data not found!</source>
         <source>Heroes III data not found!</source>
         <translation>未找到英雄无敌3数据!</translation>
         <translation>未找到英雄无敌3数据!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
         <source>Failed to detect valid Heroes III data in chosen directory.
         <source>Failed to detect valid Heroes III data in chosen directory.
 Please select directory with installed Heroes III data.</source>
 Please select directory with installed Heroes III data.</source>
         <translation>从所选目录检测有效的英雄无敌3数据失败。
         <translation>从所选目录检测有效的英雄无敌3数据失败。
 请选择已安装英雄无敌3的数据目录。</translation>
 请选择已安装英雄无敌3的数据目录。</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <translation>您提供的是GOG Galaxy安装器!这个文件不包含游戏内容,请下载离线游戏安装器!</translation>
         <translation>您提供的是GOG Galaxy安装器!这个文件不包含游戏内容,请下载离线游戏安装器!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
-        <source>Stream error while extracting files!
-error reason: </source>
-        <translation>提取文件时遭遇文件流错误!
-错误原因: </translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
-        <source>Not a supported Inno Setup installer!</source>
-        <translation>这不是一个支持的Inno Setup安装器!</translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
         <source>Extracting error!</source>
         <source>Extracting error!</source>
         <translation>提取错误!</translation>
         <translation>提取错误!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
         <source>Heroes III: HD Edition files are not supported by VCMI.
         <source>Heroes III: HD Edition files are not supported by VCMI.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation>VCMI不支持英雄无敌3高清版文件。
         <translation>VCMI不支持英雄无敌3高清版文件。
 请选择包含《英雄无敌3:完全版》或《英雄无敌3:死亡阴影》的目录。</translation>
 请选择包含《英雄无敌3:完全版》或《英雄无敌3:死亡阴影》的目录。</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Unknown or unsupported Heroes III version found.
         <source>Unknown or unsupported Heroes III version found.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation>检测到未知或不支持的英雄无敌3版本。
         <translation>检测到未知或不支持的英雄无敌3版本。
@@ -1336,6 +1380,26 @@ Please select directory with Heroes III: Complete Edition or Heroes III: Shadow
         <translation>图片查看器</translation>
         <translation>图片查看器</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>Innoextract</name>
+    <message>
+        <location filename="../innoextract.cpp" line="42"/>
+        <source>Stream error while extracting files!
+error reason: </source>
+        <translation>提取文件时遭遇文件流错误!
+错误原因: </translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="55"/>
+        <source>Not a supported Inno Setup installer!</source>
+        <translation>这不是一个支持的Inno Setup安装器!</translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="58"/>
+        <source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
+        <translation>VCMI编译时没有启用innoextract支持,启用了才可以从exe文件中提取数据!</translation>
+    </message>
+</context>
 <context>
 <context>
     <name>Language</name>
     <name>Language</name>
     <message>
     <message>

+ 150 - 86
launcher/translation/czech.ts

@@ -233,7 +233,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
         <source>Description</source>
         <source>Description</source>
         <translation>Popis</translation>
         <translation>Popis</translation>
     </message>
     </message>
@@ -293,179 +293,189 @@
         <translation>Zrušit</translation>
         <translation>Zrušit</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
         <source>Mod name</source>
         <source>Mod name</source>
         <translation>Název modifikace</translation>
         <translation>Název modifikace</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
         <source>Installed version</source>
         <source>Installed version</source>
         <translation>Nainstalovaná verze</translation>
         <translation>Nainstalovaná verze</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
         <source>Latest version</source>
         <source>Latest version</source>
         <translation>Nejnovější verze</translation>
         <translation>Nejnovější verze</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
         <source>Size</source>
         <source>Size</source>
         <translation>Velikost</translation>
         <translation>Velikost</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
         <source>Download size</source>
         <source>Download size</source>
         <translation>Velikost ke stažení</translation>
         <translation>Velikost ke stažení</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
         <source>Authors</source>
         <source>Authors</source>
         <translation>Autoři</translation>
         <translation>Autoři</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
         <source>License</source>
         <source>License</source>
         <translation>Licence</translation>
         <translation>Licence</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
         <source>Contact</source>
         <source>Contact</source>
         <translation>Kontakt</translation>
         <translation>Kontakt</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
         <source>Compatibility</source>
         <source>Compatibility</source>
         <translation>Kompabilita</translation>
         <translation>Kompabilita</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>Required VCMI version</source>
         <source>Required VCMI version</source>
         <translation>Vyžadovaná verze VCMI</translation>
         <translation>Vyžadovaná verze VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>Supported VCMI version</source>
         <source>Supported VCMI version</source>
         <translation>Podporovaná verze VCMI</translation>
         <translation>Podporovaná verze VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>please upgrade mod</source>
         <source>please upgrade mod</source>
         <translation>prosíme aktualizujte modifikaci</translation>
         <translation>prosíme aktualizujte modifikaci</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
         <source>mods repository index</source>
         <source>mods repository index</source>
         <translation>index repozitáře modifikací</translation>
         <translation>index repozitáře modifikací</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>or newer</source>
         <source>or newer</source>
         <translation>nebo novější</translation>
         <translation>nebo novější</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
         <source>Supported VCMI versions</source>
         <source>Supported VCMI versions</source>
         <translation>Podporované verze VCMI</translation>
         <translation>Podporované verze VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
         <source>Languages</source>
         <source>Languages</source>
         <translation>Jazyky</translation>
         <translation>Jazyky</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
         <source>Required mods</source>
         <source>Required mods</source>
         <translation>Vyžadované modifikace VCMI</translation>
         <translation>Vyžadované modifikace VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
         <source>Conflicting mods</source>
         <source>Conflicting mods</source>
         <translation>Modifikace v kolizi</translation>
         <translation>Modifikace v kolizi</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <translation>Tato modifikace nemůže být nainstalována nebo povolena, protože následující závislosti nejsou přítomny</translation>
         <translation>Tato modifikace nemůže být nainstalována nebo povolena, protože následující závislosti nejsou přítomny</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <translation>Tato modifikace nemůže být povolena, protože následující modifikace s ní nejsou kompatibilní</translation>
         <translation>Tato modifikace nemůže být povolena, protože následující modifikace s ní nejsou kompatibilní</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <translation>Tato modifikace nemůže být zakázána, protože je vyžadována následujícími modifikacemi</translation>
         <translation>Tato modifikace nemůže být zakázána, protože je vyžadována následujícími modifikacemi</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <translation>Tato modifikace nemůže být odinstalována nebo aktualizována, protože je vyžadována následujícími modifikacemi</translation>
         <translation>Tato modifikace nemůže být odinstalována nebo aktualizována, protože je vyžadována následujícími modifikacemi</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <translation>Toto je podmodifikace, která nemůže být nainstalována nebo odinstalována bez její rodičovské modifikace</translation>
         <translation>Toto je podmodifikace, která nemůže být nainstalována nebo odinstalována bez její rodičovské modifikace</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
         <source>Notes</source>
         <source>Notes</source>
         <translation>Poznámky</translation>
         <translation>Poznámky</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
         <source>All supported files</source>
         <source>All supported files</source>
         <translation>Všechny podporované soubory</translation>
         <translation>Všechny podporované soubory</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
         <source>Maps</source>
         <source>Maps</source>
         <translation>Mapy</translation>
         <translation>Mapy</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
         <source>Campaigns</source>
         <source>Campaigns</source>
         <translation>Kampaně</translation>
         <translation>Kampaně</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
         <source>Configs</source>
         <source>Configs</source>
         <translation>Nastavení</translation>
         <translation>Nastavení</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
         <source>Mods</source>
         <source>Mods</source>
         <translation>Modifikace</translation>
         <translation>Modifikace</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
-        <source>Select files (configs, mods, maps, campaigns) to install...</source>
-        <translation>Vyberte soubory (nastavení, modifikace, mapy anebo kampaně) pro instalaci...</translation>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
+        <source>Gog files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
+        <source>All files (*.*)</source>
+        <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
+        <source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Replace config file?</source>
         <source>Replace config file?</source>
         <translation>Nahradit soubor nastavení?</translation>
         <translation>Nahradit soubor nastavení?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Do you want to replace %1?</source>
         <source>Do you want to replace %1?</source>
         <translation>Chcete nahradit %1?</translation>
         <translation>Chcete nahradit %1?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
         <source>Download failed</source>
         <source>Download failed</source>
         <translation>Stahování selhalo</translation>
         <translation>Stahování selhalo</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
         <source>Unable to download all files.
         <source>Unable to download all files.
 
 
 Encountered errors:
 Encountered errors:
@@ -478,7 +488,7 @@ Vyskytly se chyby:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
         <source>
         <source>
 
 
 Install successfully downloaded?</source>
 Install successfully downloaded?</source>
@@ -487,34 +497,39 @@ Install successfully downloaded?</source>
 Nainstalovat úspěšně stažené?</translation>
 Nainstalovat úspěšně stažené?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
+        <source>Installing chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
         <source>Installing mod %1</source>
         <source>Installing mod %1</source>
         <translation>Instalování modifikace %1</translation>
         <translation>Instalování modifikace %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
         <source>Operation failed</source>
         <source>Operation failed</source>
         <translation>Operace selhala</translation>
         <translation>Operace selhala</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
         <source>Encountered errors:
         <source>Encountered errors:
 </source>
 </source>
         <translation>Vyskytly se chyby:
         <translation>Vyskytly se chyby:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
         <source>screenshots</source>
         <source>screenshots</source>
         <translation>snímky obrazovky</translation>
         <translation>snímky obrazovky</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
         <source>Screenshot %1</source>
         <source>Screenshot %1</source>
         <translation>Snímek obrazovky %1</translation>
         <translation>Snímek obrazovky %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
         <source>Mod is incompatible</source>
         <source>Mod is incompatible</source>
         <translation>Modifikace není kompatibilní</translation>
         <translation>Modifikace není kompatibilní</translation>
     </message>
     </message>
@@ -619,7 +634,7 @@ Nainstalovat úspěšně stažené?</translation>
 <context>
 <context>
     <name>CSettingsView</name>
     <name>CSettingsView</name>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
         <source>Off</source>
         <source>Off</source>
         <translation>Vypnuto</translation>
         <translation>Vypnuto</translation>
     </message>
     </message>
@@ -713,6 +728,11 @@ Nainstalovat úspěšně stažené?</translation>
         <source>xBRZ x4</source>
         <source>xBRZ x4</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
+        <source>Use scalable fonts</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <source>Online Lobby address</source>
         <source>Online Lobby address</source>
@@ -879,7 +899,7 @@ Nainstalovat úspěšně stažené?</translation>
         <translation>Vykreslovač</translation>
         <translation>Vykreslovač</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
         <source>On</source>
         <source>On</source>
         <translation>Zapnuto</translation>
         <translation>Zapnuto</translation>
     </message>
     </message>
@@ -966,31 +986,67 @@ Exkluzivní celá obrazovka - hra zakryje vaši celou obrazovku a použije vybra
         <translation>Zobrazit intro</translation>
         <translation>Zobrazit intro</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
         <source>Active</source>
         <source>Active</source>
         <translation>Aktivní</translation>
         <translation>Aktivní</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
         <source>Disabled</source>
         <source>Disabled</source>
         <translation>Zakázáno</translation>
         <translation>Zakázáno</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
         <source>Enable</source>
         <source>Enable</source>
         <translation>Povolit</translation>
         <translation>Povolit</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
         <source>Not Installed</source>
         <source>Not Installed</source>
         <translation>Nenainstalováno</translation>
         <translation>Nenainstalováno</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
         <source>Install</source>
         <source>Install</source>
         <translation>Instalovat</translation>
         <translation>Instalovat</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>ChroniclesExtractor</name>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="48"/>
+        <source>File cannot opened</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>Invalid file selected</source>
+        <translation type="unfinished">Vybrán neplatný soubor</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <source>You have to select an gog installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>You have to select an chronicle installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="87"/>
+        <source>Extracting error!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="104"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="105"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="141"/>
+        <source>Heroes Chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>File size</name>
     <name>File size</name>
     <message>
     <message>
@@ -1208,112 +1264,101 @@ Offline instalátor obsahuje dvě části, .exe a .bin. Ujistěte se, že stahuj
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Heroes III installation found!</source>
         <source>Heroes III installation found!</source>
         <translation>Instalace Heroes III nalezena!</translation>
         <translation>Instalace Heroes III nalezena!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Copy data to VCMI folder?</source>
         <source>Copy data to VCMI folder?</source>
         <translation>Zkopírovat data do složky VCMI?</translation>
         <translation>Zkopírovat data do složky VCMI?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
         <source>Select %1 file...</source>
         <source>Select %1 file...</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation>Vyberte soubor %1...</translation>
         <translation>Vyberte soubor %1...</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
         <source>You have to select %1 file!</source>
         <source>You have to select %1 file!</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation>Musíte vybrat soubor %1!</translation>
         <translation>Musíte vybrat soubor %1!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
         <source>GOG file (*.*)</source>
         <source>GOG file (*.*)</source>
         <translation>GOG soubor (*.*)</translation>
         <translation>GOG soubor (*.*)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
         <source>File selection</source>
         <source>File selection</source>
         <translation>Výběr souboru</translation>
         <translation>Výběr souboru</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
         <source>File cannot be opened</source>
         <source>File cannot be opened</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
         <source>Invalid file selected</source>
         <source>Invalid file selected</source>
         <translation>Vybrán neplatný soubor</translation>
         <translation>Vybrán neplatný soubor</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
         <source>GOG installer</source>
         <source>GOG installer</source>
         <translation>Instalátor GOG</translation>
         <translation>Instalátor GOG</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
         <source>GOG data</source>
         <source>GOG data</source>
         <translation>Data GOG</translation>
         <translation>Data GOG</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
-        <source>Stream error while extracting files!
-error reason: </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
-        <source>Not a supported Inno Setup installer!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
         <source>Extracting error!</source>
         <source>Extracting error!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>No Heroes III data!</source>
         <source>No Heroes III data!</source>
         <translation>Žádná data Heroes III!</translation>
         <translation>Žádná data Heroes III!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>Selected files do not contain Heroes III data!</source>
         <source>Selected files do not contain Heroes III data!</source>
         <translation>Vybrané soubory neobsahují data Heroes III!</translation>
         <translation>Vybrané soubory neobsahují data Heroes III!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Heroes III data not found!</source>
         <source>Heroes III data not found!</source>
         <translation>Data Heroes III nenalezena!</translation>
         <translation>Data Heroes III nenalezena!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
         <source>Failed to detect valid Heroes III data in chosen directory.
         <source>Failed to detect valid Heroes III data in chosen directory.
 Please select directory with installed Heroes III data.</source>
 Please select directory with installed Heroes III data.</source>
         <translation>Detekce platných dat Heroes III ve vybrané složce selhala.
         <translation>Detekce platných dat Heroes III ve vybrané složce selhala.
 Prosíme vyberte složku s nainstalovanými daty Heroes III.</translation>
 Prosíme vyberte složku s nainstalovanými daty Heroes III.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
         <source>Heroes III: HD Edition files are not supported by VCMI.
         <source>Heroes III: HD Edition files are not supported by VCMI.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation>Soubory Heroes III HD Edice nejsou podporována ve VCMI.
         <translation>Soubory Heroes III HD Edice nejsou podporována ve VCMI.
 Prosíme vyberte složku s Heroes III: Complete Edition nebo Heroes III: Shadow of Death.</translation>
 Prosíme vyberte složku s Heroes III: Complete Edition nebo Heroes III: Shadow of Death.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Unknown or unsupported Heroes III version found.
         <source>Unknown or unsupported Heroes III version found.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation>Nalezena neznámá nebo nepodporovaná verze Heroes III.
         <translation>Nalezena neznámá nebo nepodporovaná verze Heroes III.
@@ -1328,6 +1373,25 @@ Prosíme vyberte složku s Heroes III: Complete Edition nebo Heroes III: Shadow
         <translation>Prohlížeč obrázků</translation>
         <translation>Prohlížeč obrázků</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>Innoextract</name>
+    <message>
+        <location filename="../innoextract.cpp" line="42"/>
+        <source>Stream error while extracting files!
+error reason: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="55"/>
+        <source>Not a supported Inno Setup installer!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="58"/>
+        <source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>Language</name>
     <name>Language</name>
     <message>
     <message>

+ 149 - 85
launcher/translation/english.ts

@@ -233,7 +233,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
         <source>Description</source>
         <source>Description</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -293,179 +293,189 @@
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
         <source>Mod name</source>
         <source>Mod name</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
         <source>Installed version</source>
         <source>Installed version</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
         <source>Latest version</source>
         <source>Latest version</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
         <source>Size</source>
         <source>Size</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
         <source>Download size</source>
         <source>Download size</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
         <source>Authors</source>
         <source>Authors</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
         <source>License</source>
         <source>License</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
         <source>Contact</source>
         <source>Contact</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
         <source>Compatibility</source>
         <source>Compatibility</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>Required VCMI version</source>
         <source>Required VCMI version</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>Supported VCMI version</source>
         <source>Supported VCMI version</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>please upgrade mod</source>
         <source>please upgrade mod</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
         <source>mods repository index</source>
         <source>mods repository index</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>or newer</source>
         <source>or newer</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
         <source>Supported VCMI versions</source>
         <source>Supported VCMI versions</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
         <source>Languages</source>
         <source>Languages</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
         <source>Required mods</source>
         <source>Required mods</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
         <source>Conflicting mods</source>
         <source>Conflicting mods</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
         <source>Notes</source>
         <source>Notes</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
         <source>All supported files</source>
         <source>All supported files</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
         <source>Maps</source>
         <source>Maps</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
         <source>Campaigns</source>
         <source>Campaigns</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
         <source>Configs</source>
         <source>Configs</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
         <source>Mods</source>
         <source>Mods</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
-        <source>Select files (configs, mods, maps, campaigns) to install...</source>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
+        <source>Gog files</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
+        <source>All files (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
+        <source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Replace config file?</source>
         <source>Replace config file?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Do you want to replace %1?</source>
         <source>Do you want to replace %1?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
         <source>Download failed</source>
         <source>Download failed</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
         <source>Unable to download all files.
         <source>Unable to download all files.
 
 
 Encountered errors:
 Encountered errors:
@@ -474,40 +484,45 @@ Encountered errors:
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
         <source>
         <source>
 
 
 Install successfully downloaded?</source>
 Install successfully downloaded?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
+        <source>Installing chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
         <source>Installing mod %1</source>
         <source>Installing mod %1</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
         <source>Operation failed</source>
         <source>Operation failed</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
         <source>Encountered errors:
         <source>Encountered errors:
 </source>
 </source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
         <source>screenshots</source>
         <source>screenshots</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
         <source>Screenshot %1</source>
         <source>Screenshot %1</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
         <source>Mod is incompatible</source>
         <source>Mod is incompatible</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -611,7 +626,7 @@ Install successfully downloaded?</source>
 <context>
 <context>
     <name>CSettingsView</name>
     <name>CSettingsView</name>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
         <source>Off</source>
         <source>Off</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -700,6 +715,11 @@ Install successfully downloaded?</source>
         <source>xBRZ x4</source>
         <source>xBRZ x4</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
+        <source>Use scalable fonts</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <source>Online Lobby address</source>
         <source>Online Lobby address</source>
@@ -871,7 +891,7 @@ Install successfully downloaded?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
         <source>On</source>
         <source>On</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -952,31 +972,67 @@ Fullscreen Exclusive Mode - game will cover entirety of your screen and will use
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
         <source>Active</source>
         <source>Active</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
         <source>Disabled</source>
         <source>Disabled</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
         <source>Enable</source>
         <source>Enable</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
         <source>Not Installed</source>
         <source>Not Installed</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
         <source>Install</source>
         <source>Install</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>ChroniclesExtractor</name>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="48"/>
+        <source>File cannot opened</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>Invalid file selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <source>You have to select an gog installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>You have to select an chronicle installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="87"/>
+        <source>Extracting error!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="104"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="105"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="141"/>
+        <source>Heroes Chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>File size</name>
     <name>File size</name>
     <message>
     <message>
@@ -1187,110 +1243,99 @@ Offline installer consists of two parts, .exe and .bin. Make sure you download b
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Heroes III installation found!</source>
         <source>Heroes III installation found!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Copy data to VCMI folder?</source>
         <source>Copy data to VCMI folder?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
         <source>Select %1 file...</source>
         <source>Select %1 file...</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
         <source>You have to select %1 file!</source>
         <source>You have to select %1 file!</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
         <source>GOG file (*.*)</source>
         <source>GOG file (*.*)</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
         <source>File selection</source>
         <source>File selection</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
         <source>File cannot be opened</source>
         <source>File cannot be opened</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
         <source>Invalid file selected</source>
         <source>Invalid file selected</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
         <source>GOG installer</source>
         <source>GOG installer</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
         <source>GOG data</source>
         <source>GOG data</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
-        <source>Stream error while extracting files!
-error reason: </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
-        <source>Not a supported Inno Setup installer!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
         <source>Extracting error!</source>
         <source>Extracting error!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>No Heroes III data!</source>
         <source>No Heroes III data!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>Selected files do not contain Heroes III data!</source>
         <source>Selected files do not contain Heroes III data!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Heroes III data not found!</source>
         <source>Heroes III data not found!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
         <source>Failed to detect valid Heroes III data in chosen directory.
         <source>Failed to detect valid Heroes III data in chosen directory.
 Please select directory with installed Heroes III data.</source>
 Please select directory with installed Heroes III data.</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
         <source>Heroes III: HD Edition files are not supported by VCMI.
         <source>Heroes III: HD Edition files are not supported by VCMI.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Unknown or unsupported Heroes III version found.
         <source>Unknown or unsupported Heroes III version found.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
@@ -1304,6 +1349,25 @@ Please select directory with Heroes III: Complete Edition or Heroes III: Shadow
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>Innoextract</name>
+    <message>
+        <location filename="../innoextract.cpp" line="42"/>
+        <source>Stream error while extracting files!
+error reason: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="55"/>
+        <source>Not a supported Inno Setup installer!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="58"/>
+        <source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>Language</name>
     <name>Language</name>
     <message>
     <message>

+ 153 - 89
launcher/translation/french.ts

@@ -238,7 +238,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
         <source>Description</source>
         <source>Description</source>
         <translation>Description</translation>
         <translation>Description</translation>
     </message>
     </message>
@@ -293,184 +293,194 @@
         <translation>Abandonner</translation>
         <translation>Abandonner</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
         <source>Mod name</source>
         <source>Mod name</source>
         <translation>Nom du mod</translation>
         <translation>Nom du mod</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
         <source>Installed version</source>
         <source>Installed version</source>
         <translation>Version installée</translation>
         <translation>Version installée</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
         <source>Latest version</source>
         <source>Latest version</source>
         <translation>Dernière version</translation>
         <translation>Dernière version</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
         <source>Size</source>
         <source>Size</source>
         <translation>Taille</translation>
         <translation>Taille</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
         <source>Download size</source>
         <source>Download size</source>
         <translation>Taille de téléchargement</translation>
         <translation>Taille de téléchargement</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
         <source>Authors</source>
         <source>Authors</source>
         <translation>Auteur(s)</translation>
         <translation>Auteur(s)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
         <source>License</source>
         <source>License</source>
         <translation>Licence</translation>
         <translation>Licence</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
         <source>Contact</source>
         <source>Contact</source>
         <translation>Contact</translation>
         <translation>Contact</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
         <source>Compatibility</source>
         <source>Compatibility</source>
         <translation>Compatibilité</translation>
         <translation>Compatibilité</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>Required VCMI version</source>
         <source>Required VCMI version</source>
         <translation>Version requise de VCMI</translation>
         <translation>Version requise de VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>Supported VCMI version</source>
         <source>Supported VCMI version</source>
         <translation>Version supportée de VCMI</translation>
         <translation>Version supportée de VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>please upgrade mod</source>
         <source>please upgrade mod</source>
         <translation>veuillez mettre à jour le mod</translation>
         <translation>veuillez mettre à jour le mod</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
         <source>mods repository index</source>
         <source>mods repository index</source>
         <translation>Index du dépôt de mods</translation>
         <translation>Index du dépôt de mods</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>or newer</source>
         <source>or newer</source>
         <translation>ou plus récente</translation>
         <translation>ou plus récente</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
         <source>Supported VCMI versions</source>
         <source>Supported VCMI versions</source>
         <translation>Versions supportées de VCMI</translation>
         <translation>Versions supportées de VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
         <source>Languages</source>
         <source>Languages</source>
         <translation>Langues</translation>
         <translation>Langues</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
         <source>Required mods</source>
         <source>Required mods</source>
         <translation>Mods requis</translation>
         <translation>Mods requis</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
         <source>Conflicting mods</source>
         <source>Conflicting mods</source>
         <translation>Mods en conflit</translation>
         <translation>Mods en conflit</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <translation>Ce mod ne peut pas être installé ou activé car les dépendances suivantes ne sont pas présents
         <translation>Ce mod ne peut pas être installé ou activé car les dépendances suivantes ne sont pas présents
             </translation>
             </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <translation>Ce mod ne peut pas être installé ou activé, car les dépendances suivantes sont incompatibles avec lui
         <translation>Ce mod ne peut pas être installé ou activé, car les dépendances suivantes sont incompatibles avec lui
             </translation>
             </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <translation>Ce mod ne peut pas être désactivé car il est requis pour les dépendances suivantes
         <translation>Ce mod ne peut pas être désactivé car il est requis pour les dépendances suivantes
             </translation>
             </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <translation>Ce mod ne peut pas être désinstallé ou mis à jour car il est requis pour les dépendances suivantes
         <translation>Ce mod ne peut pas être désinstallé ou mis à jour car il est requis pour les dépendances suivantes
             </translation>
             </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <translation>Ce sous-mod ne peut pas être installé ou mis à jour séparément du mod parent
         <translation>Ce sous-mod ne peut pas être installé ou mis à jour séparément du mod parent
             </translation>
             </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
         <source>Notes</source>
         <source>Notes</source>
         <translation>Notes</translation>
         <translation>Notes</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
         <source>All supported files</source>
         <source>All supported files</source>
         <translation>Tous les fichiers supportés</translation>
         <translation>Tous les fichiers supportés</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
         <source>Maps</source>
         <source>Maps</source>
         <translation>Cartes</translation>
         <translation>Cartes</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
         <source>Campaigns</source>
         <source>Campaigns</source>
         <translation>Campagnes</translation>
         <translation>Campagnes</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
         <source>Configs</source>
         <source>Configs</source>
         <translation>Configurations</translation>
         <translation>Configurations</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
         <source>Mods</source>
         <source>Mods</source>
         <translation>Mods</translation>
         <translation>Mods</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
-        <source>Select files (configs, mods, maps, campaigns) to install...</source>
-        <translation>Sélectionner les fichiers à installer (configurations, mods, cartes, campagnes)...</translation>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
+        <source>Gog files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
+        <source>All files (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
+        <source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
+        <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Replace config file?</source>
         <source>Replace config file?</source>
         <translation>Remplacer le fichier de configuration ?</translation>
         <translation>Remplacer le fichier de configuration ?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Do you want to replace %1?</source>
         <source>Do you want to replace %1?</source>
         <translation>Voulez vous remplacer %1 ?</translation>
         <translation>Voulez vous remplacer %1 ?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <translation>Téléchargement %1. %p% (%v Mo sur %m Mo) terminé</translation>
         <translation>Téléchargement %1. %p% (%v Mo sur %m Mo) terminé</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
         <source>Download failed</source>
         <source>Download failed</source>
         <translation>Téléchargement échoué</translation>
         <translation>Téléchargement échoué</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
         <source>Unable to download all files.
         <source>Unable to download all files.
 
 
 Encountered errors:
 Encountered errors:
@@ -483,7 +493,7 @@ Erreur rencontrées:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
         <source>
         <source>
 
 
 Install successfully downloaded?</source>
 Install successfully downloaded?</source>
@@ -492,34 +502,39 @@ Install successfully downloaded?</source>
 Installer les téchargements réussis?</translation>
 Installer les téchargements réussis?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
+        <source>Installing chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
         <source>Installing mod %1</source>
         <source>Installing mod %1</source>
         <translation>Installer le mod %1</translation>
         <translation>Installer le mod %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
         <source>Operation failed</source>
         <source>Operation failed</source>
         <translation>Opération échouée</translation>
         <translation>Opération échouée</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
         <source>Encountered errors:
         <source>Encountered errors:
 </source>
 </source>
         <translation>Erreurs rencontrées:
         <translation>Erreurs rencontrées:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
         <source>screenshots</source>
         <source>screenshots</source>
         <translation>captures d&apos;écran</translation>
         <translation>captures d&apos;écran</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
         <source>Screenshot %1</source>
         <source>Screenshot %1</source>
         <translation>Impression écran %1</translation>
         <translation>Impression écran %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
         <source>Mod is incompatible</source>
         <source>Mod is incompatible</source>
         <translation>Ce mod est incompatible</translation>
         <translation>Ce mod est incompatible</translation>
     </message>
     </message>
@@ -624,7 +639,7 @@ Installer les téchargements réussis?</translation>
 <context>
 <context>
     <name>CSettingsView</name>
     <name>CSettingsView</name>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
         <source>Off</source>
         <source>Off</source>
         <translation>Désactivé</translation>
         <translation>Désactivé</translation>
     </message>
     </message>
@@ -634,7 +649,7 @@ Installer les téchargements réussis?</translation>
         <translation>Intelligence Artificielle</translation>
         <translation>Intelligence Artificielle</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
         <source>On</source>
         <source>On</source>
         <translation>Activé</translation>
         <translation>Activé</translation>
     </message>
     </message>
@@ -708,6 +723,11 @@ Installer les téchargements réussis?</translation>
         <source>xBRZ x4</source>
         <source>xBRZ x4</source>
         <translation>xBRZ x4</translation>
         <translation>xBRZ x4</translation>
     </message>
     </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
+        <source>Use scalable fonts</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <source>Online Lobby address</source>
         <source>Online Lobby address</source>
@@ -971,31 +991,67 @@ Mode exclusif plein écran - le jeu couvrira l&quot;intégralité de votre écra
         <translation>Montrer l&apos;intro</translation>
         <translation>Montrer l&apos;intro</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
         <source>Active</source>
         <source>Active</source>
         <translation>Actif</translation>
         <translation>Actif</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
         <source>Disabled</source>
         <source>Disabled</source>
         <translation>Désactivé</translation>
         <translation>Désactivé</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
         <source>Enable</source>
         <source>Enable</source>
         <translation>Activé</translation>
         <translation>Activé</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
         <source>Not Installed</source>
         <source>Not Installed</source>
         <translation>Pas Installé</translation>
         <translation>Pas Installé</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
         <source>Install</source>
         <source>Install</source>
         <translation>Installer</translation>
         <translation>Installer</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>ChroniclesExtractor</name>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="48"/>
+        <source>File cannot opened</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>Invalid file selected</source>
+        <translation type="unfinished">Fichier sélectionné non valide</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <source>You have to select an gog installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>You have to select an chronicle installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="87"/>
+        <source>Extracting error!</source>
+        <translation type="unfinished">Erreur d&apos;extraction !</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="104"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="105"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="141"/>
+        <source>Heroes Chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>File size</name>
     <name>File size</name>
     <message>
     <message>
@@ -1213,113 +1269,101 @@ Heroes® of Might and Magic® III HD n&quot;est actuellement pas pris en charge
         <translation>Installer une version compatible de &quot;In The Wake of Gods&quot;, une extension Heroes III créée par des fans</translation>
         <translation>Installer une version compatible de &quot;In The Wake of Gods&quot;, une extension Heroes III créée par des fans</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Heroes III installation found!</source>
         <source>Heroes III installation found!</source>
         <translation>Installation de Heroes III trouvée!</translation>
         <translation>Installation de Heroes III trouvée!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Copy data to VCMI folder?</source>
         <source>Copy data to VCMI folder?</source>
         <translation>Copier le dossier data dans le dossier VCMI ?</translation>
         <translation>Copier le dossier data dans le dossier VCMI ?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
         <source>Select %1 file...</source>
         <source>Select %1 file...</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation>Sélectionner le fichier %1...</translation>
         <translation>Sélectionner le fichier %1...</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
         <source>You have to select %1 file!</source>
         <source>You have to select %1 file!</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation>Vous avez sélectionné le fichier %1 !</translation>
         <translation>Vous avez sélectionné le fichier %1 !</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
         <source>GOG file (*.*)</source>
         <source>GOG file (*.*)</source>
         <translation>Fichier GOG (*.*)</translation>
         <translation>Fichier GOG (*.*)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
         <source>File selection</source>
         <source>File selection</source>
         <translation>Sélection de fichier</translation>
         <translation>Sélection de fichier</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
         <source>File cannot be opened</source>
         <source>File cannot be opened</source>
         <translation>Le fichier ne peut pas être ouvert</translation>
         <translation>Le fichier ne peut pas être ouvert</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
         <source>Invalid file selected</source>
         <source>Invalid file selected</source>
         <translation>Fichier sélectionné non valide</translation>
         <translation>Fichier sélectionné non valide</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
         <source>GOG installer</source>
         <source>GOG installer</source>
         <translation>Installateur GOG</translation>
         <translation>Installateur GOG</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
         <source>GOG data</source>
         <source>GOG data</source>
         <translation>Données GOG</translation>
         <translation>Données GOG</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>No Heroes III data!</source>
         <source>No Heroes III data!</source>
         <translation>Pas de données Heroes III!</translation>
         <translation>Pas de données Heroes III!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>Selected files do not contain Heroes III data!</source>
         <source>Selected files do not contain Heroes III data!</source>
         <translation>Les fichiers sélectionnés ne contiennent pas les données de Heroes III !</translation>
         <translation>Les fichiers sélectionnés ne contiennent pas les données de Heroes III !</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Heroes III data not found!</source>
         <source>Heroes III data not found!</source>
         <translation>Données Heroes III introuvables !</translation>
         <translation>Données Heroes III introuvables !</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
         <source>Failed to detect valid Heroes III data in chosen directory.
         <source>Failed to detect valid Heroes III data in chosen directory.
 Please select directory with installed Heroes III data.</source>
 Please select directory with installed Heroes III data.</source>
         <translation>Impossible de détecter des données Heroes III valides dans le répertoire choisi,
         <translation>Impossible de détecter des données Heroes III valides dans le répertoire choisi,
 Veuillez selectionner un dossier ou les données de Heroes III sont présentes.</translation>
 Veuillez selectionner un dossier ou les données de Heroes III sont présentes.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
-        <translation>Vous avez fourni le programme d&apos;installation de GOG Galaxy ! Ce fichier ne contient pas le jeu. Veuillez télécharger le programme d&apos;installation de sauvegarde hors ligne du jeu !</translation>
+        <translation>Vous avez fourni le programme d&apos;installation de GOG Galaxy&#xa0;! Ce fichier ne contient pas le jeu. Veuillez télécharger le programme d&apos;installation de sauvegarde hors ligne du jeu&#xa0;!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
-        <source>Stream error while extracting files!
-error reason: </source>
-        <translation>Erreur de flux lors de l&apos;extraction des fichiers !
-Raison de l&apos;erreur : </translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
-        <source>Not a supported Inno Setup installer!</source>
-        <translation>Programme d’installation Inno Setup non pris en charge !</translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
         <source>Extracting error!</source>
         <source>Extracting error!</source>
         <translation>Erreur d&apos;extraction !</translation>
         <translation>Erreur d&apos;extraction !</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
         <source>Heroes III: HD Edition files are not supported by VCMI.
         <source>Heroes III: HD Edition files are not supported by VCMI.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation>Les fichiers de Heroes III HD Edition ne sont pas supportés par VCMI.
         <translation>Les fichiers de Heroes III HD Edition ne sont pas supportés par VCMI.
 Veuillez sélectionner un dossier contenant les données de Heroes III: Complete Edition ou Heroes III: Shadow of Death.</translation>
 Veuillez sélectionner un dossier contenant les données de Heroes III: Complete Edition ou Heroes III: Shadow of Death.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Unknown or unsupported Heroes III version found.
         <source>Unknown or unsupported Heroes III version found.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation>Version inconnue ou non supportée de Heroes III.
         <translation>Version inconnue ou non supportée de Heroes III.
@@ -1334,6 +1378,26 @@ Veuillez sélectionner un dossier contenant les données de Heroes III: Complete
         <translation>Afficheur d&apos;Image</translation>
         <translation>Afficheur d&apos;Image</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>Innoextract</name>
+    <message>
+        <location filename="../innoextract.cpp" line="42"/>
+        <source>Stream error while extracting files!
+error reason: </source>
+        <translation type="unfinished">Erreur de flux lors de l&apos;extraction des fichiers&#xa0;!
+Raison de l&apos;erreur&#xa0;: </translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="55"/>
+        <source>Not a supported Inno Setup installer!</source>
+        <translation type="unfinished">Programme d’installation Inno Setup non pris en charge&#xa0;!</translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="58"/>
+        <source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>Language</name>
     <name>Language</name>
     <message>
     <message>
@@ -1485,7 +1549,7 @@ Veuillez sélectionner un dossier contenant les données de Heroes III: Complete
         <source>Failed to start %1
         <source>Failed to start %1
 Reason: %2</source>
 Reason: %2</source>
         <translation>Échec de démarrage %1
         <translation>Échec de démarrage %1
-Raison : %2</translation>
+Raison&#xa0;: %2</translation>
     </message>
     </message>
 </context>
 </context>
 <context>
 <context>

+ 151 - 87
launcher/translation/german.ts

@@ -233,7 +233,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
         <source>Description</source>
         <source>Description</source>
         <translation>Beschreibung</translation>
         <translation>Beschreibung</translation>
     </message>
     </message>
@@ -293,179 +293,189 @@
         <translation>Abbrechen</translation>
         <translation>Abbrechen</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
         <source>Mod name</source>
         <source>Mod name</source>
         <translation>Mod-Name</translation>
         <translation>Mod-Name</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
         <source>Installed version</source>
         <source>Installed version</source>
         <translation>Installierte Version</translation>
         <translation>Installierte Version</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
         <source>Latest version</source>
         <source>Latest version</source>
         <translation>Letzte Version</translation>
         <translation>Letzte Version</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
         <source>Size</source>
         <source>Size</source>
         <translation>Größe</translation>
         <translation>Größe</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
         <source>Download size</source>
         <source>Download size</source>
         <translation>Downloadgröße</translation>
         <translation>Downloadgröße</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
         <source>Authors</source>
         <source>Authors</source>
         <translation>Autoren</translation>
         <translation>Autoren</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
         <source>License</source>
         <source>License</source>
         <translation>Lizenz</translation>
         <translation>Lizenz</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
         <source>Contact</source>
         <source>Contact</source>
         <translation>Kontakt</translation>
         <translation>Kontakt</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
         <source>Compatibility</source>
         <source>Compatibility</source>
         <translation>Kompatibilität</translation>
         <translation>Kompatibilität</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>Required VCMI version</source>
         <source>Required VCMI version</source>
         <translation>Benötigte VCMI Version</translation>
         <translation>Benötigte VCMI Version</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>Supported VCMI version</source>
         <source>Supported VCMI version</source>
         <translation>Unterstützte VCMI Version</translation>
         <translation>Unterstützte VCMI Version</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>please upgrade mod</source>
         <source>please upgrade mod</source>
         <translation>bitte Mod upgraden</translation>
         <translation>bitte Mod upgraden</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
         <source>mods repository index</source>
         <source>mods repository index</source>
         <translation>Mod Verzeichnis Index</translation>
         <translation>Mod Verzeichnis Index</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>or newer</source>
         <source>or newer</source>
         <translation>oder neuer</translation>
         <translation>oder neuer</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
         <source>Supported VCMI versions</source>
         <source>Supported VCMI versions</source>
         <translation>Unterstützte VCMI Versionen</translation>
         <translation>Unterstützte VCMI Versionen</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
         <source>Languages</source>
         <source>Languages</source>
         <translation>Sprachen</translation>
         <translation>Sprachen</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
         <source>Required mods</source>
         <source>Required mods</source>
         <translation>Benötigte Mods</translation>
         <translation>Benötigte Mods</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
         <source>Conflicting mods</source>
         <source>Conflicting mods</source>
         <translation>Mods mit Konflikt</translation>
         <translation>Mods mit Konflikt</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <translation>Diese Mod kann nicht installiert oder aktiviert werden, da die folgenden Abhängigkeiten nicht vorhanden sind</translation>
         <translation>Diese Mod kann nicht installiert oder aktiviert werden, da die folgenden Abhängigkeiten nicht vorhanden sind</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <translation>Diese Mod kann nicht aktiviert werden, da folgende Mods nicht mit dieser Mod kompatibel sind</translation>
         <translation>Diese Mod kann nicht aktiviert werden, da folgende Mods nicht mit dieser Mod kompatibel sind</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <translation>Diese Mod kann nicht deaktiviert werden, da sie zum Ausführen der folgenden Mods erforderlich ist</translation>
         <translation>Diese Mod kann nicht deaktiviert werden, da sie zum Ausführen der folgenden Mods erforderlich ist</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <translation>Diese Mod kann nicht deinstalliert oder aktualisiert werden, da sie für die folgenden Mods erforderlich ist</translation>
         <translation>Diese Mod kann nicht deinstalliert oder aktualisiert werden, da sie für die folgenden Mods erforderlich ist</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <translation>Dies ist eine Submod und kann nicht separat von der Hauptmod installiert oder deinstalliert werden</translation>
         <translation>Dies ist eine Submod und kann nicht separat von der Hauptmod installiert oder deinstalliert werden</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
         <source>Notes</source>
         <source>Notes</source>
         <translation>Anmerkungen</translation>
         <translation>Anmerkungen</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
         <source>All supported files</source>
         <source>All supported files</source>
         <translation>Alle unterstützten Dateien</translation>
         <translation>Alle unterstützten Dateien</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
         <source>Maps</source>
         <source>Maps</source>
         <translation>Karten</translation>
         <translation>Karten</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
         <source>Campaigns</source>
         <source>Campaigns</source>
         <translation>Kampagnen</translation>
         <translation>Kampagnen</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
         <source>Configs</source>
         <source>Configs</source>
         <translation>Konfigurationen</translation>
         <translation>Konfigurationen</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
         <source>Mods</source>
         <source>Mods</source>
         <translation>Mods</translation>
         <translation>Mods</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
-        <source>Select files (configs, mods, maps, campaigns) to install...</source>
-        <translation>Wähle Dateien (Konfigurationen, Mods, Karten, Kampagnen) zum installieren...</translation>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
+        <source>Gog files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
+        <source>All files (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
+        <source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
+        <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Replace config file?</source>
         <source>Replace config file?</source>
         <translation>Konfigurationsdatei ersetzen?</translation>
         <translation>Konfigurationsdatei ersetzen?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Do you want to replace %1?</source>
         <source>Do you want to replace %1?</source>
         <translation>Soll %1 ersetzt werden?</translation>
         <translation>Soll %1 ersetzt werden?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <translation>Downloade %1. %p% (%v MB von %m MB) abgeschlossen</translation>
         <translation>Downloade %1. %p% (%v MB von %m MB) abgeschlossen</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
         <source>Download failed</source>
         <source>Download failed</source>
         <translation>Download fehlgeschlagen</translation>
         <translation>Download fehlgeschlagen</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
         <source>Unable to download all files.
         <source>Unable to download all files.
 
 
 Encountered errors:
 Encountered errors:
@@ -478,7 +488,7 @@ Es sind Fehler aufgetreten:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
         <source>
         <source>
 
 
 Install successfully downloaded?</source>
 Install successfully downloaded?</source>
@@ -487,34 +497,39 @@ Install successfully downloaded?</source>
 Installation erfolgreich heruntergeladen?</translation>
 Installation erfolgreich heruntergeladen?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
+        <source>Installing chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
         <source>Installing mod %1</source>
         <source>Installing mod %1</source>
         <translation>Installation von Mod %1</translation>
         <translation>Installation von Mod %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
         <source>Operation failed</source>
         <source>Operation failed</source>
         <translation>Operation fehlgeschlagen</translation>
         <translation>Operation fehlgeschlagen</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
         <source>Encountered errors:
         <source>Encountered errors:
 </source>
 </source>
         <translation>Aufgetretene Fehler:
         <translation>Aufgetretene Fehler:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
         <source>screenshots</source>
         <source>screenshots</source>
         <translation>Screenshots</translation>
         <translation>Screenshots</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
         <source>Screenshot %1</source>
         <source>Screenshot %1</source>
         <translation>Screenshot %1</translation>
         <translation>Screenshot %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
         <source>Mod is incompatible</source>
         <source>Mod is incompatible</source>
         <translation>Mod ist inkompatibel</translation>
         <translation>Mod ist inkompatibel</translation>
     </message>
     </message>
@@ -619,7 +634,7 @@ Installation erfolgreich heruntergeladen?</translation>
 <context>
 <context>
     <name>CSettingsView</name>
     <name>CSettingsView</name>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
         <source>Off</source>
         <source>Off</source>
         <translation>Aus</translation>
         <translation>Aus</translation>
     </message>
     </message>
@@ -713,6 +728,11 @@ Installation erfolgreich heruntergeladen?</translation>
         <source>xBRZ x4</source>
         <source>xBRZ x4</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
+        <source>Use scalable fonts</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <source>Online Lobby address</source>
         <source>Online Lobby address</source>
@@ -879,7 +899,7 @@ Installation erfolgreich heruntergeladen?</translation>
         <translation>Renderer</translation>
         <translation>Renderer</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
         <source>On</source>
         <source>On</source>
         <translation>An</translation>
         <translation>An</translation>
     </message>
     </message>
@@ -966,31 +986,67 @@ Exklusiver Vollbildmodus - das Spiel bedeckt den gesamten Bildschirm und verwend
         <translation>Intro anzeigen</translation>
         <translation>Intro anzeigen</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
         <source>Active</source>
         <source>Active</source>
         <translation>Aktiv</translation>
         <translation>Aktiv</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
         <source>Disabled</source>
         <source>Disabled</source>
         <translation>Deaktiviert</translation>
         <translation>Deaktiviert</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
         <source>Enable</source>
         <source>Enable</source>
         <translation>Aktivieren</translation>
         <translation>Aktivieren</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
         <source>Not Installed</source>
         <source>Not Installed</source>
         <translation>Nicht installiert</translation>
         <translation>Nicht installiert</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
         <source>Install</source>
         <source>Install</source>
         <translation>Installieren</translation>
         <translation>Installieren</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>ChroniclesExtractor</name>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="48"/>
+        <source>File cannot opened</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>Invalid file selected</source>
+        <translation type="unfinished">Ungültige Datei ausgewählt</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <source>You have to select an gog installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>You have to select an chronicle installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="87"/>
+        <source>Extracting error!</source>
+        <translation type="unfinished">Fehler beim Extrahieren!</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="104"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="105"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="141"/>
+        <source>Heroes Chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>File size</name>
     <name>File size</name>
     <message>
     <message>
@@ -1208,113 +1264,101 @@ Der Offline-Installer besteht aus zwei Teilen, .exe und .bin. Stellen Sie sicher
         <translation>In The Wake of Gods</translation>
         <translation>In The Wake of Gods</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Heroes III installation found!</source>
         <source>Heroes III installation found!</source>
         <translation>Heroes III-Installation gefunden!</translation>
         <translation>Heroes III-Installation gefunden!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Copy data to VCMI folder?</source>
         <source>Copy data to VCMI folder?</source>
         <translation>Daten in den VCMI-Ordner kopieren?</translation>
         <translation>Daten in den VCMI-Ordner kopieren?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
         <source>Select %1 file...</source>
         <source>Select %1 file...</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation>%1 Datei auswählen...</translation>
         <translation>%1 Datei auswählen...</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
         <source>You have to select %1 file!</source>
         <source>You have to select %1 file!</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation>Sie müssen %1 Datei auswählen!</translation>
         <translation>Sie müssen %1 Datei auswählen!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
         <source>GOG file (*.*)</source>
         <source>GOG file (*.*)</source>
         <translation>GOG Datei (*.*)</translation>
         <translation>GOG Datei (*.*)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
         <source>File selection</source>
         <source>File selection</source>
         <translation>Dateiauswahl</translation>
         <translation>Dateiauswahl</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
         <source>File cannot be opened</source>
         <source>File cannot be opened</source>
         <translation>Datei kann nicht geöffnet werden</translation>
         <translation>Datei kann nicht geöffnet werden</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
         <source>Invalid file selected</source>
         <source>Invalid file selected</source>
         <translation>Ungültige Datei ausgewählt</translation>
         <translation>Ungültige Datei ausgewählt</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
         <source>GOG installer</source>
         <source>GOG installer</source>
         <translation>GOG-Installationsprogramm</translation>
         <translation>GOG-Installationsprogramm</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
         <source>GOG data</source>
         <source>GOG data</source>
         <translation>GOG-Datendatei</translation>
         <translation>GOG-Datendatei</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>No Heroes III data!</source>
         <source>No Heroes III data!</source>
         <translation>Keine Heroes III-Daten!</translation>
         <translation>Keine Heroes III-Daten!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>Selected files do not contain Heroes III data!</source>
         <source>Selected files do not contain Heroes III data!</source>
         <translation>Die ausgewählten Dateien enthalten keine Heroes III-Daten!</translation>
         <translation>Die ausgewählten Dateien enthalten keine Heroes III-Daten!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Heroes III data not found!</source>
         <source>Heroes III data not found!</source>
         <translation>Heroes III Daten nicht gefunden!</translation>
         <translation>Heroes III Daten nicht gefunden!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
         <source>Failed to detect valid Heroes III data in chosen directory.
         <source>Failed to detect valid Heroes III data in chosen directory.
 Please select directory with installed Heroes III data.</source>
 Please select directory with installed Heroes III data.</source>
         <translation>Es konnten keine gültigen Heroes III-Daten im gewählten Verzeichnis gefunden werden.
         <translation>Es konnten keine gültigen Heroes III-Daten im gewählten Verzeichnis gefunden werden.
 Bitte wählen Sie ein Verzeichnis mit installierten Heroes III-Daten.</translation>
 Bitte wählen Sie ein Verzeichnis mit installierten Heroes III-Daten.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <translation>Es wurde der GOG Galaxy-Installer ausgewählt! Das Spiel ist in dieser Datei nicht enthalten. Lade den Offline-Backup-Installer für das Spiel herunter!</translation>
         <translation>Es wurde der GOG Galaxy-Installer ausgewählt! Das Spiel ist in dieser Datei nicht enthalten. Lade den Offline-Backup-Installer für das Spiel herunter!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
-        <source>Stream error while extracting files!
-error reason: </source>
-        <translation>Stream-Fehler beim Extrahieren von Dateien!
-Fehlerursache: </translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
-        <source>Not a supported Inno Setup installer!</source>
-        <translation>Kein unterstütztes Inno Setup Installationsprogramm!</translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
         <source>Extracting error!</source>
         <source>Extracting error!</source>
         <translation>Fehler beim Extrahieren!</translation>
         <translation>Fehler beim Extrahieren!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
         <source>Heroes III: HD Edition files are not supported by VCMI.
         <source>Heroes III: HD Edition files are not supported by VCMI.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation>Heroes III: HD Edition Dateien werden von VCMI nicht unterstützt.
         <translation>Heroes III: HD Edition Dateien werden von VCMI nicht unterstützt.
 Bitte wählen Sie ein Verzeichnis mit Heroes III: Complete Edition oder Heroes III: Shadow of Death.</translation>
 Bitte wählen Sie ein Verzeichnis mit Heroes III: Complete Edition oder Heroes III: Shadow of Death.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Unknown or unsupported Heroes III version found.
         <source>Unknown or unsupported Heroes III version found.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation>Unbekannte oder nicht unterstützte Heroes III-Version gefunden.
         <translation>Unbekannte oder nicht unterstützte Heroes III-Version gefunden.
@@ -1329,6 +1373,26 @@ Bitte wählen Sie ein Verzeichnis mit Heroes III: Complete Edition oder Heroes I
         <translation>Bildbetrachter</translation>
         <translation>Bildbetrachter</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>Innoextract</name>
+    <message>
+        <location filename="../innoextract.cpp" line="42"/>
+        <source>Stream error while extracting files!
+error reason: </source>
+        <translation type="unfinished">Stream-Fehler beim Extrahieren von Dateien!
+Fehlerursache: </translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="55"/>
+        <source>Not a supported Inno Setup installer!</source>
+        <translation type="unfinished">Kein unterstütztes Inno Setup Installationsprogramm!</translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="58"/>
+        <source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>Language</name>
     <name>Language</name>
     <message>
     <message>

+ 151 - 87
launcher/translation/polish.ts

@@ -233,7 +233,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
         <source>Description</source>
         <source>Description</source>
         <translation>Opis</translation>
         <translation>Opis</translation>
     </message>
     </message>
@@ -293,179 +293,189 @@
         <translation>Przerwij</translation>
         <translation>Przerwij</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
         <source>Mod name</source>
         <source>Mod name</source>
         <translation>Nazwa moda</translation>
         <translation>Nazwa moda</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
         <source>Installed version</source>
         <source>Installed version</source>
         <translation>Zainstalowana wersja</translation>
         <translation>Zainstalowana wersja</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
         <source>Latest version</source>
         <source>Latest version</source>
         <translation>Najnowsza wersja</translation>
         <translation>Najnowsza wersja</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
         <source>Size</source>
         <source>Size</source>
         <translation>Rozmiar</translation>
         <translation>Rozmiar</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
         <source>Download size</source>
         <source>Download size</source>
         <translation>Rozmiar pobierania</translation>
         <translation>Rozmiar pobierania</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
         <source>Authors</source>
         <source>Authors</source>
         <translation>Autorzy</translation>
         <translation>Autorzy</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
         <source>License</source>
         <source>License</source>
         <translation>Licencja</translation>
         <translation>Licencja</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
         <source>Contact</source>
         <source>Contact</source>
         <translation>Kontakt</translation>
         <translation>Kontakt</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
         <source>Compatibility</source>
         <source>Compatibility</source>
         <translation>Kompatybilność</translation>
         <translation>Kompatybilność</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>Required VCMI version</source>
         <source>Required VCMI version</source>
         <translation>Wymagana wersja VCMI</translation>
         <translation>Wymagana wersja VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>Supported VCMI version</source>
         <source>Supported VCMI version</source>
         <translation>Wspierana wersja VCMI</translation>
         <translation>Wspierana wersja VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>please upgrade mod</source>
         <source>please upgrade mod</source>
         <translation>proszę zaktualizować moda</translation>
         <translation>proszę zaktualizować moda</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
         <source>mods repository index</source>
         <source>mods repository index</source>
         <translation>indeks repozytorium modów</translation>
         <translation>indeks repozytorium modów</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>or newer</source>
         <source>or newer</source>
         <translation>lub nowsze</translation>
         <translation>lub nowsze</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
         <source>Supported VCMI versions</source>
         <source>Supported VCMI versions</source>
         <translation>Wspierane wersje VCMI</translation>
         <translation>Wspierane wersje VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
         <source>Languages</source>
         <source>Languages</source>
         <translation>Języki</translation>
         <translation>Języki</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
         <source>Required mods</source>
         <source>Required mods</source>
         <translation>Wymagane mody</translation>
         <translation>Wymagane mody</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
         <source>Conflicting mods</source>
         <source>Conflicting mods</source>
         <translation>Konfliktujące mody</translation>
         <translation>Konfliktujące mody</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <translation>Ten mod nie może zostać zainstalowany lub włączony ponieważ następujące zależności nie zostały spełnione</translation>
         <translation>Ten mod nie może zostać zainstalowany lub włączony ponieważ następujące zależności nie zostały spełnione</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <translation>Ten mod nie może zostać włączony ponieważ następujące mody są z nim niekompatybilne</translation>
         <translation>Ten mod nie może zostać włączony ponieważ następujące mody są z nim niekompatybilne</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <translation>Ten mod nie może zostać wyłączony ponieważ jest wymagany do uruchomienia następujących modów</translation>
         <translation>Ten mod nie może zostać wyłączony ponieważ jest wymagany do uruchomienia następujących modów</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <translation>Ten mod nie może zostać odinstalowany lub zaktualizowany ponieważ jest wymagany do uruchomienia następujących modów</translation>
         <translation>Ten mod nie może zostać odinstalowany lub zaktualizowany ponieważ jest wymagany do uruchomienia następujących modów</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <translation>To jest moduł składowy innego moda i nie może być zainstalowany lub odinstalowany oddzielnie od moda nadrzędnego</translation>
         <translation>To jest moduł składowy innego moda i nie może być zainstalowany lub odinstalowany oddzielnie od moda nadrzędnego</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
         <source>Notes</source>
         <source>Notes</source>
         <translation>Uwagi</translation>
         <translation>Uwagi</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
         <source>All supported files</source>
         <source>All supported files</source>
         <translation>Wszystkie wspierane pliki</translation>
         <translation>Wszystkie wspierane pliki</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
         <source>Maps</source>
         <source>Maps</source>
         <translation>Mapy</translation>
         <translation>Mapy</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
         <source>Campaigns</source>
         <source>Campaigns</source>
         <translation>Kampanie</translation>
         <translation>Kampanie</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
         <source>Configs</source>
         <source>Configs</source>
         <translation>Konfiguracje</translation>
         <translation>Konfiguracje</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
         <source>Mods</source>
         <source>Mods</source>
         <translation>Mody</translation>
         <translation>Mody</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
-        <source>Select files (configs, mods, maps, campaigns) to install...</source>
-        <translation>Wybierz pliki (konfiguracyjne, mody, mapy, kampanie) do zainstalowania...</translation>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
+        <source>Gog files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
+        <source>All files (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
+        <source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
+        <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Replace config file?</source>
         <source>Replace config file?</source>
         <translation>Zastąpić plik konfiguracji?</translation>
         <translation>Zastąpić plik konfiguracji?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Do you want to replace %1?</source>
         <source>Do you want to replace %1?</source>
         <translation>Czy chcesz zastąpić %1?</translation>
         <translation>Czy chcesz zastąpić %1?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <translation>Pobieranie %1. %p% (%v MB z %m MB) ukończono</translation>
         <translation>Pobieranie %1. %p% (%v MB z %m MB) ukończono</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
         <source>Download failed</source>
         <source>Download failed</source>
         <translation>Pobieranie nieudane</translation>
         <translation>Pobieranie nieudane</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
         <source>Unable to download all files.
         <source>Unable to download all files.
 
 
 Encountered errors:
 Encountered errors:
@@ -478,7 +488,7 @@ Napotkane błędy:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
         <source>
         <source>
 
 
 Install successfully downloaded?</source>
 Install successfully downloaded?</source>
@@ -487,34 +497,39 @@ Install successfully downloaded?</source>
 Zainstalować pomyślnie pobrane?</translation>
 Zainstalować pomyślnie pobrane?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
+        <source>Installing chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
         <source>Installing mod %1</source>
         <source>Installing mod %1</source>
         <translation>Instalowanie modyfikacji %1</translation>
         <translation>Instalowanie modyfikacji %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
         <source>Operation failed</source>
         <source>Operation failed</source>
         <translation>Operacja nieudana</translation>
         <translation>Operacja nieudana</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
         <source>Encountered errors:
         <source>Encountered errors:
 </source>
 </source>
         <translation>Napotkane błędy:
         <translation>Napotkane błędy:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
         <source>screenshots</source>
         <source>screenshots</source>
         <translation>zrzuty ekranu</translation>
         <translation>zrzuty ekranu</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
         <source>Screenshot %1</source>
         <source>Screenshot %1</source>
         <translation>Zrzut ekranu %1</translation>
         <translation>Zrzut ekranu %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
         <source>Mod is incompatible</source>
         <source>Mod is incompatible</source>
         <translation>Mod jest niekompatybilny</translation>
         <translation>Mod jest niekompatybilny</translation>
     </message>
     </message>
@@ -619,7 +634,7 @@ Zainstalować pomyślnie pobrane?</translation>
 <context>
 <context>
     <name>CSettingsView</name>
     <name>CSettingsView</name>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
         <source>Off</source>
         <source>Off</source>
         <translation>Wyłączony</translation>
         <translation>Wyłączony</translation>
     </message>
     </message>
@@ -713,6 +728,11 @@ Zainstalować pomyślnie pobrane?</translation>
         <source>xBRZ x4</source>
         <source>xBRZ x4</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
+        <source>Use scalable fonts</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <source>Online Lobby address</source>
         <source>Online Lobby address</source>
@@ -879,7 +899,7 @@ Zainstalować pomyślnie pobrane?</translation>
         <translation>Renderer</translation>
         <translation>Renderer</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
         <source>On</source>
         <source>On</source>
         <translation>Włączony</translation>
         <translation>Włączony</translation>
     </message>
     </message>
@@ -966,31 +986,67 @@ Pełny ekran klasyczny - gra przysłoni cały ekran uruchamiając się w wybrane
         <translation>Pokaż intro</translation>
         <translation>Pokaż intro</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
         <source>Active</source>
         <source>Active</source>
         <translation>Aktywny</translation>
         <translation>Aktywny</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
         <source>Disabled</source>
         <source>Disabled</source>
         <translation>Wyłączone</translation>
         <translation>Wyłączone</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
         <source>Enable</source>
         <source>Enable</source>
         <translation>Włącz</translation>
         <translation>Włącz</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
         <source>Not Installed</source>
         <source>Not Installed</source>
         <translation>Nie zainstalowano</translation>
         <translation>Nie zainstalowano</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
         <source>Install</source>
         <source>Install</source>
         <translation>Zainstaluj</translation>
         <translation>Zainstaluj</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>ChroniclesExtractor</name>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="48"/>
+        <source>File cannot opened</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>Invalid file selected</source>
+        <translation type="unfinished">Wybrano nieprawidłowy plik</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <source>You have to select an gog installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>You have to select an chronicle installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="87"/>
+        <source>Extracting error!</source>
+        <translation type="unfinished">Błąd wypakowywania!</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="104"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="105"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="141"/>
+        <source>Heroes Chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>File size</name>
     <name>File size</name>
     <message>
     <message>
@@ -1208,113 +1264,101 @@ Instalator offline składa się z dwóch części, .exe i .bin. Upewnij się, ż
         <translation>In The Wake of Gods</translation>
         <translation>In The Wake of Gods</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Heroes III installation found!</source>
         <source>Heroes III installation found!</source>
         <translation>Znaleziono zainstalowane Heroes III!</translation>
         <translation>Znaleziono zainstalowane Heroes III!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Copy data to VCMI folder?</source>
         <source>Copy data to VCMI folder?</source>
         <translation>Skopiować dane do folderu VCMI?</translation>
         <translation>Skopiować dane do folderu VCMI?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
         <source>Select %1 file...</source>
         <source>Select %1 file...</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation>Wybierz plik %1...</translation>
         <translation>Wybierz plik %1...</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
         <source>You have to select %1 file!</source>
         <source>You have to select %1 file!</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation>Musisz wybrać plik %1!</translation>
         <translation>Musisz wybrać plik %1!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
         <source>GOG file (*.*)</source>
         <source>GOG file (*.*)</source>
         <translation>Instalator GOG (*.*)</translation>
         <translation>Instalator GOG (*.*)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
         <source>File selection</source>
         <source>File selection</source>
         <translation>Wybór pliku</translation>
         <translation>Wybór pliku</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
         <source>File cannot be opened</source>
         <source>File cannot be opened</source>
         <translation>Nieudane otwarcie pliku</translation>
         <translation>Nieudane otwarcie pliku</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
         <source>Invalid file selected</source>
         <source>Invalid file selected</source>
         <translation>Wybrano nieprawidłowy plik</translation>
         <translation>Wybrano nieprawidłowy plik</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
         <source>GOG installer</source>
         <source>GOG installer</source>
         <translation>Instalator GOG</translation>
         <translation>Instalator GOG</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
         <source>GOG data</source>
         <source>GOG data</source>
         <translation>Dane GOG</translation>
         <translation>Dane GOG</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>No Heroes III data!</source>
         <source>No Heroes III data!</source>
         <translation>Brak danych Heroes III!</translation>
         <translation>Brak danych Heroes III!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>Selected files do not contain Heroes III data!</source>
         <source>Selected files do not contain Heroes III data!</source>
         <translation>Wybrane pliki nie zawierają danych Heroes III!</translation>
         <translation>Wybrane pliki nie zawierają danych Heroes III!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Heroes III data not found!</source>
         <source>Heroes III data not found!</source>
         <translation>Dane Heroes III nie znalezione!</translation>
         <translation>Dane Heroes III nie znalezione!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
         <source>Failed to detect valid Heroes III data in chosen directory.
         <source>Failed to detect valid Heroes III data in chosen directory.
 Please select directory with installed Heroes III data.</source>
 Please select directory with installed Heroes III data.</source>
         <translation>Nieudane znalezienie poprawnych plików Heroes III w podanej lokalizacji.
         <translation>Nieudane znalezienie poprawnych plików Heroes III w podanej lokalizacji.
 Proszę wybrać folder z zainstalowanymi danymi Heroes III.</translation>
 Proszę wybrać folder z zainstalowanymi danymi Heroes III.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <translation>Podany plik jest instalatorem GOG Galaxy! Ten plik nie zawiera gry. Proszę pobrać zapasowy instalator offline gry!</translation>
         <translation>Podany plik jest instalatorem GOG Galaxy! Ten plik nie zawiera gry. Proszę pobrać zapasowy instalator offline gry!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
-        <source>Stream error while extracting files!
-error reason: </source>
-        <translation>Błąd strumienia podczas rozpakowywania plików!
-powód błędu: </translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
-        <source>Not a supported Inno Setup installer!</source>
-        <translation>To nie jest wspierany instalator Inno Setup!</translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
         <source>Extracting error!</source>
         <source>Extracting error!</source>
         <translation>Błąd wypakowywania!</translation>
         <translation>Błąd wypakowywania!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
         <source>Heroes III: HD Edition files are not supported by VCMI.
         <source>Heroes III: HD Edition files are not supported by VCMI.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation>Pliki Heroes III HD Edition nie są wspierane przez VCMI.
         <translation>Pliki Heroes III HD Edition nie są wspierane przez VCMI.
 Proszę wybrać folder z Heroes III: Complete Edition lub Heroes III: Shadow of Death.</translation>
 Proszę wybrać folder z Heroes III: Complete Edition lub Heroes III: Shadow of Death.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Unknown or unsupported Heroes III version found.
         <source>Unknown or unsupported Heroes III version found.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation>Znaleziono nieznaną lub niewspieraną wersję Heroes III.
         <translation>Znaleziono nieznaną lub niewspieraną wersję Heroes III.
@@ -1329,6 +1373,26 @@ Proszę wybrać folder z Heroes III: Complete Edition lub Heroes III: Shadow of
         <translation>Wyświetlacz obrazków</translation>
         <translation>Wyświetlacz obrazków</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>Innoextract</name>
+    <message>
+        <location filename="../innoextract.cpp" line="42"/>
+        <source>Stream error while extracting files!
+error reason: </source>
+        <translation type="unfinished">Błąd strumienia podczas rozpakowywania plików!
+powód błędu: </translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="55"/>
+        <source>Not a supported Inno Setup installer!</source>
+        <translation type="unfinished">To nie jest wspierany instalator Inno Setup!</translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="58"/>
+        <source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>Language</name>
     <name>Language</name>
     <message>
     <message>

+ 165 - 101
launcher/translation/portuguese.ts

@@ -11,7 +11,7 @@
     <message>
     <message>
         <location filename="../aboutProject/aboutproject_moc.ui" line="29"/>
         <location filename="../aboutProject/aboutproject_moc.ui" line="29"/>
         <source>Have a question? Found a bug? Want to help? Join us!</source>
         <source>Have a question? Found a bug? Want to help? Join us!</source>
-        <translation>Tem uma pergunta? Encontrou algum erro? Quer ajudar? Junte-se a nós</translation>
+        <translation>Tem uma pergunta? Encontrou algum erro? Quer ajudar? Junte-se a nós!</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../aboutProject/aboutproject_moc.ui" line="36"/>
         <location filename="../aboutProject/aboutproject_moc.ui" line="36"/>
@@ -233,7 +233,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
         <source>Description</source>
         <source>Description</source>
         <translation>Descrição</translation>
         <translation>Descrição</translation>
     </message>
     </message>
@@ -293,179 +293,189 @@
         <translation>Cancelar</translation>
         <translation>Cancelar</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
         <source>Mod name</source>
         <source>Mod name</source>
         <translation>Nome do mod</translation>
         <translation>Nome do mod</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
         <source>Installed version</source>
         <source>Installed version</source>
         <translation>Versão instalada</translation>
         <translation>Versão instalada</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
         <source>Latest version</source>
         <source>Latest version</source>
         <translation>Última versão</translation>
         <translation>Última versão</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
         <source>Size</source>
         <source>Size</source>
         <translation>Tamanho</translation>
         <translation>Tamanho</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
         <source>Download size</source>
         <source>Download size</source>
         <translation>Tamanho do download</translation>
         <translation>Tamanho do download</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
         <source>Authors</source>
         <source>Authors</source>
         <translation>Autores</translation>
         <translation>Autores</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
         <source>License</source>
         <source>License</source>
         <translation>Licença</translation>
         <translation>Licença</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
         <source>Contact</source>
         <source>Contact</source>
         <translation>Contato</translation>
         <translation>Contato</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
         <source>Compatibility</source>
         <source>Compatibility</source>
         <translation>Compatibilidade</translation>
         <translation>Compatibilidade</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>Required VCMI version</source>
         <source>Required VCMI version</source>
         <translation>Versão do VCMI necessária</translation>
         <translation>Versão do VCMI necessária</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>Supported VCMI version</source>
         <source>Supported VCMI version</source>
         <translation>Versão do VCMI suportada</translation>
         <translation>Versão do VCMI suportada</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>please upgrade mod</source>
         <source>please upgrade mod</source>
         <translation>por favor, atualize o mod</translation>
         <translation>por favor, atualize o mod</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
         <source>mods repository index</source>
         <source>mods repository index</source>
         <translation>índice do repositório de mods</translation>
         <translation>índice do repositório de mods</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>or newer</source>
         <source>or newer</source>
         <translation>ou mais recente</translation>
         <translation>ou mais recente</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
         <source>Supported VCMI versions</source>
         <source>Supported VCMI versions</source>
         <translation>Versões do VCMI suportadas</translation>
         <translation>Versões do VCMI suportadas</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
         <source>Languages</source>
         <source>Languages</source>
         <translation>Idiomas</translation>
         <translation>Idiomas</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
         <source>Required mods</source>
         <source>Required mods</source>
         <translation>Mods requeridos</translation>
         <translation>Mods requeridos</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
         <source>Conflicting mods</source>
         <source>Conflicting mods</source>
         <translation>Mods conflitantes</translation>
         <translation>Mods conflitantes</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <translation>Este mod não pode ser instalado ou ativado porque as seguintes dependências não estão presentes</translation>
         <translation>Este mod não pode ser instalado ou ativado porque as seguintes dependências não estão presentes</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <translation>Este mod não pode ser ativado porque os seguintes mods são incompatíveis com ele</translation>
         <translation>Este mod não pode ser ativado porque os seguintes mods são incompatíveis com ele</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <translation>Este mod não pode ser desativado porque é necessário pelos seguintes mods</translation>
         <translation>Este mod não pode ser desativado porque é necessário pelos seguintes mods</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <translation>Este mod não pode ser desinstalado ou atualizado porque é necessário pelos seguintes mods</translation>
         <translation>Este mod não pode ser desinstalado ou atualizado porque é necessário pelos seguintes mods</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <translation>Este é um submod e não pode ser instalado ou desinstalado separadamente do seu mod principal</translation>
         <translation>Este é um submod e não pode ser instalado ou desinstalado separadamente do seu mod principal</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
         <source>Notes</source>
         <source>Notes</source>
         <translation>Notas</translation>
         <translation>Notas</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
         <source>All supported files</source>
         <source>All supported files</source>
         <translation>Todos os arquivos suportados</translation>
         <translation>Todos os arquivos suportados</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
         <source>Maps</source>
         <source>Maps</source>
         <translation>Mapas</translation>
         <translation>Mapas</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
         <source>Campaigns</source>
         <source>Campaigns</source>
         <translation>Campanhas</translation>
         <translation>Campanhas</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
         <source>Configs</source>
         <source>Configs</source>
         <translation>Configurações</translation>
         <translation>Configurações</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
         <source>Mods</source>
         <source>Mods</source>
         <translation>Mods</translation>
         <translation>Mods</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
-        <source>Select files (configs, mods, maps, campaigns) to install...</source>
-        <translation>Selecione arquivos (configurações, mods, mapas, campanhas) para instalar...</translation>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
+        <source>Gog files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
+        <source>All files (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
+        <source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
+        <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Replace config file?</source>
         <source>Replace config file?</source>
         <translation>Substituir arquivo de configuração?</translation>
         <translation>Substituir arquivo de configuração?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Do you want to replace %1?</source>
         <source>Do you want to replace %1?</source>
         <translation>Você deseja substituir %1?</translation>
         <translation>Você deseja substituir %1?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <translation>Baixando %1. %p% (%v MB de %m MB) concluído</translation>
         <translation>Baixando %1. %p% (%v MB de %m MB) concluído</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
         <source>Download failed</source>
         <source>Download failed</source>
         <translation>Falha no download</translation>
         <translation>Falha no download</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
         <source>Unable to download all files.
         <source>Unable to download all files.
 
 
 Encountered errors:
 Encountered errors:
@@ -478,7 +488,7 @@ Encontrados os seguintes erros:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
         <source>
         <source>
 
 
 Install successfully downloaded?</source>
 Install successfully downloaded?</source>
@@ -487,34 +497,39 @@ Install successfully downloaded?</source>
 Instalar o download realizado com sucesso?</translation>
 Instalar o download realizado com sucesso?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
+        <source>Installing chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
         <source>Installing mod %1</source>
         <source>Installing mod %1</source>
         <translation>Instalando mod %1</translation>
         <translation>Instalando mod %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
         <source>Operation failed</source>
         <source>Operation failed</source>
         <translation>Falha na operação</translation>
         <translation>Falha na operação</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
         <source>Encountered errors:
         <source>Encountered errors:
 </source>
 </source>
         <translation>Erros encontrados:
         <translation>Erros encontrados:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
         <source>screenshots</source>
         <source>screenshots</source>
         <translation>capturas de tela</translation>
         <translation>capturas de tela</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
         <source>Screenshot %1</source>
         <source>Screenshot %1</source>
         <translation>Captura de tela %1</translation>
         <translation>Captura de tela %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
         <source>Mod is incompatible</source>
         <source>Mod is incompatible</source>
         <translation>O mod é incompatível</translation>
         <translation>O mod é incompatível</translation>
     </message>
     </message>
@@ -619,7 +634,7 @@ Instalar o download realizado com sucesso?</translation>
 <context>
 <context>
     <name>CSettingsView</name>
     <name>CSettingsView</name>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
         <source>Off</source>
         <source>Off</source>
         <translation>Desativado</translation>
         <translation>Desativado</translation>
     </message>
     </message>
@@ -648,11 +663,6 @@ Instalar o download realizado com sucesso?</translation>
         <source>Additional repository</source>
         <source>Additional repository</source>
         <translation>Repositório adicional</translation>
         <translation>Repositório adicional</translation>
     </message>
     </message>
-    <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="893"/>
-        <source>Downscaling Filter</source>
-        <translation type="unfinished"></translation>
-    </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="931"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="931"/>
         <source>Adventure Map Allies</source>
         <source>Adventure Map Allies</source>
@@ -676,7 +686,7 @@ Instalar o download realizado com sucesso?</translation>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="618"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="618"/>
         <source>Automatic (Linear)</source>
         <source>Automatic (Linear)</source>
-        <translation type="unfinished"></translation>
+        <translation>Automático (Linear)</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="798"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="798"/>
@@ -691,27 +701,27 @@ Instalar o download realizado com sucesso?</translation>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="1166"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="1166"/>
         <source>Automatic</source>
         <source>Automatic</source>
-        <translation type="unfinished"></translation>
+        <translation>Automático</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="1171"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="1171"/>
         <source>None</source>
         <source>None</source>
-        <translation type="unfinished"></translation>
+        <translation>Nenhum</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="1176"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="1176"/>
         <source>xBRZ x2</source>
         <source>xBRZ x2</source>
-        <translation type="unfinished"></translation>
+        <translation>xBRZ x2</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="1181"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="1181"/>
         <source>xBRZ x3</source>
         <source>xBRZ x3</source>
-        <translation type="unfinished"></translation>
+        <translation>xBRZ x3</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="1186"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="1186"/>
         <source>xBRZ x4</source>
         <source>xBRZ x4</source>
-        <translation type="unfinished"></translation>
+        <translation>xBRZ x4</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
@@ -758,6 +768,11 @@ Instalar o download realizado com sucesso?</translation>
         <source>Reset</source>
         <source>Reset</source>
         <translation>Redefinir</translation>
         <translation>Redefinir</translation>
     </message>
     </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
+        <source>Use scalable fonts</source>
+        <translation>Usar Fontes Escaláveis</translation>
+    </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="854"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="854"/>
         <source>Network</source>
         <source>Network</source>
@@ -838,6 +853,11 @@ Instalar o download realizado com sucesso?</translation>
         <source>Autosave limit (0 = off)</source>
         <source>Autosave limit (0 = off)</source>
         <translation>Limite de salvamento automático (0 = sem limite)</translation>
         <translation>Limite de salvamento automático (0 = sem limite)</translation>
     </message>
     </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="893"/>
+        <source>Downscaling Filter</source>
+        <translation>Filtro de Redução de Escala</translation>
+    </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="1030"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="1030"/>
         <source>Framerate Limit</source>
         <source>Framerate Limit</source>
@@ -879,12 +899,12 @@ Instalar o download realizado com sucesso?</translation>
         <translation>Renderizador</translation>
         <translation>Renderizador</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
         <source>On</source>
         <source>On</source>
         <translation>Ativado</translation>
         <translation>Ativado</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="391"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="389"/>
         <source>Select display mode for game
         <source>Select display mode for game
 
 
 Windowed - game will run inside a window that covers part of your screen
 Windowed - game will run inside a window that covers part of your screen
@@ -966,31 +986,67 @@ Modo de tela cheia exclusivo - o jogo cobrirá toda a sua tela e usará a resolu
         <translation>Mostrar introdução</translation>
         <translation>Mostrar introdução</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
         <source>Active</source>
         <source>Active</source>
         <translation>Ativo</translation>
         <translation>Ativo</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
         <source>Disabled</source>
         <source>Disabled</source>
         <translation>Desativado</translation>
         <translation>Desativado</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
         <source>Enable</source>
         <source>Enable</source>
         <translation>Ativar</translation>
         <translation>Ativar</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
         <source>Not Installed</source>
         <source>Not Installed</source>
         <translation>Não Instalado</translation>
         <translation>Não Instalado</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
         <source>Install</source>
         <source>Install</source>
         <translation>Instalar</translation>
         <translation>Instalar</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>ChroniclesExtractor</name>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="48"/>
+        <source>File cannot opened</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>Invalid file selected</source>
+        <translation type="unfinished">Arquivo selecionado inválido</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <source>You have to select an gog installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>You have to select an chronicle installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="87"/>
+        <source>Extracting error!</source>
+        <translation type="unfinished">Erro ao extrair!</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="104"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="105"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="141"/>
+        <source>Heroes Chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>File size</name>
     <name>File size</name>
     <message>
     <message>
@@ -1173,7 +1229,7 @@ O instalador offline consiste em duas partes, .exe e .bin. Certifique-se de baix
     </message>
     </message>
     <message>
     <message>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="441"/>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="441"/>
-       <source>Heroes III data files</source>
+        <source>Heroes III data files</source>
         <translation>Arquivos de dados do Heroes III</translation>
         <translation>Arquivos de dados do Heroes III</translation>
     </message>
     </message>
     <message>
     <message>
@@ -1208,113 +1264,101 @@ O instalador offline consiste em duas partes, .exe e .bin. Certifique-se de baix
         <translation>In The Wake of Gods</translation>
         <translation>In The Wake of Gods</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Heroes III installation found!</source>
         <source>Heroes III installation found!</source>
         <translation>Instalação do Heroes III encontrada!</translation>
         <translation>Instalação do Heroes III encontrada!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Copy data to VCMI folder?</source>
         <source>Copy data to VCMI folder?</source>
         <translation>Copiar dados para a pasta do VCMI?</translation>
         <translation>Copiar dados para a pasta do VCMI?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
         <source>Select %1 file...</source>
         <source>Select %1 file...</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation>Selecionar arquivo %1...</translation>
         <translation>Selecionar arquivo %1...</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
         <source>You have to select %1 file!</source>
         <source>You have to select %1 file!</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation>Você precisa selecionar o arquivo %1!</translation>
         <translation>Você precisa selecionar o arquivo %1!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
         <source>GOG file (*.*)</source>
         <source>GOG file (*.*)</source>
         <translation>Arquivo GOG (*.*)</translation>
         <translation>Arquivo GOG (*.*)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
         <source>File selection</source>
         <source>File selection</source>
         <translation>Seleção de arquivo</translation>
         <translation>Seleção de arquivo</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
         <source>File cannot be opened</source>
         <source>File cannot be opened</source>
         <translation>O arquivo não pode ser aberto</translation>
         <translation>O arquivo não pode ser aberto</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
         <source>Invalid file selected</source>
         <source>Invalid file selected</source>
         <translation>Arquivo selecionado inválido</translation>
         <translation>Arquivo selecionado inválido</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
         <source>GOG installer</source>
         <source>GOG installer</source>
         <translation>Instalador GOG</translation>
         <translation>Instalador GOG</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
         <source>GOG data</source>
         <source>GOG data</source>
         <translation>Dados do GOG</translation>
         <translation>Dados do GOG</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <translation>Você forneceu o instalador do GOG Galaxy! Este arquivo não contém o jogo. Por favor, faça o download do instalador offline de backup do jogo!</translation>
         <translation>Você forneceu o instalador do GOG Galaxy! Este arquivo não contém o jogo. Por favor, faça o download do instalador offline de backup do jogo!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
-        <source>Stream error while extracting files!
-error reason: </source>
-        <translation>Erro de fluxo ao extrair arquivos!
-Motivo do erro: </translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
-        <source>Not a supported Inno Setup installer!</source>
-        <translation>Instalador Inno Setup não suportado!</translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
         <source>Extracting error!</source>
         <source>Extracting error!</source>
         <translation>Erro ao extrair!</translation>
         <translation>Erro ao extrair!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>No Heroes III data!</source>
         <source>No Heroes III data!</source>
         <translation>Nenhum dado do Heroes III!</translation>
         <translation>Nenhum dado do Heroes III!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>Selected files do not contain Heroes III data!</source>
         <source>Selected files do not contain Heroes III data!</source>
         <translation>Os arquivos selecionados não contêm dados do Heroes III!</translation>
         <translation>Os arquivos selecionados não contêm dados do Heroes III!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Heroes III data not found!</source>
         <source>Heroes III data not found!</source>
         <translation>Dados do Heroes III não encontrados!</translation>
         <translation>Dados do Heroes III não encontrados!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
         <source>Failed to detect valid Heroes III data in chosen directory.
         <source>Failed to detect valid Heroes III data in chosen directory.
 Please select directory with installed Heroes III data.</source>
 Please select directory with installed Heroes III data.</source>
         <translation>Falha ao detectar dados válidos do Heroes III no diretório escolhido.
         <translation>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.</translation>
 Por favor, selecione o diretório com os dados do Heroes III instalados.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
         <source>Heroes III: HD Edition files are not supported by VCMI.
         <source>Heroes III: HD Edition files are not supported by VCMI.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation>Arquivos do Heroes III: HD Edition não são suportados pelo VCMI.
         <translation>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: Shadow of Death.</translation>
 Por favor, selecione o diretório com Heroes III: Complete Edition ou Heroes III: Shadow of Death.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Unknown or unsupported Heroes III version found.
         <source>Unknown or unsupported Heroes III version found.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation>Versão desconhecida ou não suportada do Heroes III encontrada.
         <translation>Versão desconhecida ou não suportada do Heroes III encontrada.
@@ -1329,6 +1373,26 @@ Por favor, selecione o diretório com Heroes III: Complete Edition ou Heroes III
         <translation>Visualizador de Imagens</translation>
         <translation>Visualizador de Imagens</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>Innoextract</name>
+    <message>
+        <location filename="../innoextract.cpp" line="42"/>
+        <source>Stream error while extracting files!
+error reason: </source>
+        <translation type="unfinished">Erro de fluxo ao extrair arquivos!
+Motivo do erro: </translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="55"/>
+        <source>Not a supported Inno Setup installer!</source>
+        <translation type="unfinished">Instalador Inno Setup não suportado!</translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="58"/>
+        <source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>Language</name>
     <name>Language</name>
     <message>
     <message>

+ 149 - 85
launcher/translation/russian.ts

@@ -233,7 +233,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
         <source>Description</source>
         <source>Description</source>
         <translation>Описание</translation>
         <translation>Описание</translation>
     </message>
     </message>
@@ -293,179 +293,189 @@
         <translation>Отмена</translation>
         <translation>Отмена</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
         <source>Mod name</source>
         <source>Mod name</source>
         <translation>Название мода</translation>
         <translation>Название мода</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
         <source>Installed version</source>
         <source>Installed version</source>
         <translation>Установленная версия</translation>
         <translation>Установленная версия</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
         <source>Latest version</source>
         <source>Latest version</source>
         <translation>Последняя версия</translation>
         <translation>Последняя версия</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
         <source>Size</source>
         <source>Size</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
         <source>Download size</source>
         <source>Download size</source>
         <translation>Размер загрузки</translation>
         <translation>Размер загрузки</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
         <source>Authors</source>
         <source>Authors</source>
         <translation>Авторы</translation>
         <translation>Авторы</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
         <source>License</source>
         <source>License</source>
         <translation>Лицензия</translation>
         <translation>Лицензия</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
         <source>Contact</source>
         <source>Contact</source>
         <translation>Контакты</translation>
         <translation>Контакты</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
         <source>Compatibility</source>
         <source>Compatibility</source>
         <translation>Совместимость</translation>
         <translation>Совместимость</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>Required VCMI version</source>
         <source>Required VCMI version</source>
         <translation>Требуемая версия VCMI</translation>
         <translation>Требуемая версия VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>Supported VCMI version</source>
         <source>Supported VCMI version</source>
         <translation>Поддерживаемая версия VCMI</translation>
         <translation>Поддерживаемая версия VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>please upgrade mod</source>
         <source>please upgrade mod</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
         <source>mods repository index</source>
         <source>mods repository index</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>or newer</source>
         <source>or newer</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
         <source>Supported VCMI versions</source>
         <source>Supported VCMI versions</source>
         <translation>Поддерживаемые версии VCMI</translation>
         <translation>Поддерживаемые версии VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
         <source>Languages</source>
         <source>Languages</source>
         <translation>Языки</translation>
         <translation>Языки</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
         <source>Required mods</source>
         <source>Required mods</source>
         <translation>Зависимости</translation>
         <translation>Зависимости</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
         <source>Conflicting mods</source>
         <source>Conflicting mods</source>
         <translation>Конфликтующие моды</translation>
         <translation>Конфликтующие моды</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <translation>Этот мод не может быть установлен или активирован, так как отсутствуют следующие зависимости</translation>
         <translation>Этот мод не может быть установлен или активирован, так как отсутствуют следующие зависимости</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <translation>Этот мод не может быть установлен или активирован, так как следующие моды несовместимы с этим</translation>
         <translation>Этот мод не может быть установлен или активирован, так как следующие моды несовместимы с этим</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <translation>Этот мод не может быть выключен, так как он является зависимостью для следующих</translation>
         <translation>Этот мод не может быть выключен, так как он является зависимостью для следующих</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <translation>Этот мод не может быть удален или обновлен, так как является зависимостью для следующих модов</translation>
         <translation>Этот мод не может быть удален или обновлен, так как является зависимостью для следующих модов</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <translation>Это вложенный мод, он не может быть установлен или удален отдельно от родительского</translation>
         <translation>Это вложенный мод, он не может быть установлен или удален отдельно от родительского</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
         <source>Notes</source>
         <source>Notes</source>
         <translation>Замечания</translation>
         <translation>Замечания</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
         <source>All supported files</source>
         <source>All supported files</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
         <source>Maps</source>
         <source>Maps</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
         <source>Campaigns</source>
         <source>Campaigns</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
         <source>Configs</source>
         <source>Configs</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
         <source>Mods</source>
         <source>Mods</source>
         <translation type="unfinished">Моды</translation>
         <translation type="unfinished">Моды</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
-        <source>Select files (configs, mods, maps, campaigns) to install...</source>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
+        <source>Gog files</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
+        <source>All files (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
+        <source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Replace config file?</source>
         <source>Replace config file?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Do you want to replace %1?</source>
         <source>Do you want to replace %1?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
         <source>Download failed</source>
         <source>Download failed</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
         <source>Unable to download all files.
         <source>Unable to download all files.
 
 
 Encountered errors:
 Encountered errors:
@@ -474,40 +484,45 @@ Encountered errors:
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
         <source>
         <source>
 
 
 Install successfully downloaded?</source>
 Install successfully downloaded?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
+        <source>Installing chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
         <source>Installing mod %1</source>
         <source>Installing mod %1</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
         <source>Operation failed</source>
         <source>Operation failed</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
         <source>Encountered errors:
         <source>Encountered errors:
 </source>
 </source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
         <source>screenshots</source>
         <source>screenshots</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
         <source>Screenshot %1</source>
         <source>Screenshot %1</source>
         <translation>Скриншот %1</translation>
         <translation>Скриншот %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
         <source>Mod is incompatible</source>
         <source>Mod is incompatible</source>
         <translation>Мод несовместим</translation>
         <translation>Мод несовместим</translation>
     </message>
     </message>
@@ -616,12 +631,12 @@ Install successfully downloaded?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
         <source>Off</source>
         <source>Off</source>
         <translation>Отключено</translation>
         <translation>Отключено</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
         <source>On</source>
         <source>On</source>
         <translation>Включено</translation>
         <translation>Включено</translation>
     </message>
     </message>
@@ -735,6 +750,11 @@ Install successfully downloaded?</source>
         <source>xBRZ x4</source>
         <source>xBRZ x4</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
+        <source>Use scalable fonts</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <source>Online Lobby address</source>
         <source>Online Lobby address</source>
@@ -952,31 +972,67 @@ Fullscreen Exclusive Mode - game will cover entirety of your screen and will use
         <translation>Вступление</translation>
         <translation>Вступление</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
         <source>Active</source>
         <source>Active</source>
         <translation>Активен</translation>
         <translation>Активен</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
         <source>Disabled</source>
         <source>Disabled</source>
         <translation>Отключен</translation>
         <translation>Отключен</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
         <source>Enable</source>
         <source>Enable</source>
         <translation>Включить</translation>
         <translation>Включить</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
         <source>Not Installed</source>
         <source>Not Installed</source>
         <translation>Не установлен</translation>
         <translation>Не установлен</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
         <source>Install</source>
         <source>Install</source>
         <translation>Установить</translation>
         <translation>Установить</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>ChroniclesExtractor</name>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="48"/>
+        <source>File cannot opened</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>Invalid file selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <source>You have to select an gog installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>You have to select an chronicle installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="87"/>
+        <source>Extracting error!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="104"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="105"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="141"/>
+        <source>Heroes Chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>File size</name>
     <name>File size</name>
     <message>
     <message>
@@ -1193,110 +1249,99 @@ Offline installer consists of two parts, .exe and .bin. Make sure you download b
         <translation></translation>
         <translation></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Heroes III installation found!</source>
         <source>Heroes III installation found!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Copy data to VCMI folder?</source>
         <source>Copy data to VCMI folder?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
         <source>Select %1 file...</source>
         <source>Select %1 file...</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
         <source>You have to select %1 file!</source>
         <source>You have to select %1 file!</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
         <source>GOG file (*.*)</source>
         <source>GOG file (*.*)</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
         <source>File selection</source>
         <source>File selection</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
         <source>File cannot be opened</source>
         <source>File cannot be opened</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
         <source>Invalid file selected</source>
         <source>Invalid file selected</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
         <source>GOG installer</source>
         <source>GOG installer</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
         <source>GOG data</source>
         <source>GOG data</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
-        <source>Stream error while extracting files!
-error reason: </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
-        <source>Not a supported Inno Setup installer!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
         <source>Extracting error!</source>
         <source>Extracting error!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>No Heroes III data!</source>
         <source>No Heroes III data!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>Selected files do not contain Heroes III data!</source>
         <source>Selected files do not contain Heroes III data!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Heroes III data not found!</source>
         <source>Heroes III data not found!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
         <source>Failed to detect valid Heroes III data in chosen directory.
         <source>Failed to detect valid Heroes III data in chosen directory.
 Please select directory with installed Heroes III data.</source>
 Please select directory with installed Heroes III data.</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
         <source>Heroes III: HD Edition files are not supported by VCMI.
         <source>Heroes III: HD Edition files are not supported by VCMI.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Unknown or unsupported Heroes III version found.
         <source>Unknown or unsupported Heroes III version found.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
@@ -1310,6 +1355,25 @@ Please select directory with Heroes III: Complete Edition or Heroes III: Shadow
         <translation>Просмотр изображений</translation>
         <translation>Просмотр изображений</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>Innoextract</name>
+    <message>
+        <location filename="../innoextract.cpp" line="42"/>
+        <source>Stream error while extracting files!
+error reason: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="55"/>
+        <source>Not a supported Inno Setup installer!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="58"/>
+        <source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>Language</name>
     <name>Language</name>
     <message>
     <message>

+ 149 - 85
launcher/translation/spanish.ts

@@ -233,7 +233,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
         <source>Description</source>
         <source>Description</source>
         <translation>Descripción</translation>
         <translation>Descripción</translation>
     </message>
     </message>
@@ -293,179 +293,189 @@
         <translation>Cancelar</translation>
         <translation>Cancelar</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
         <source>Mod name</source>
         <source>Mod name</source>
         <translation>Nombre del mod</translation>
         <translation>Nombre del mod</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
         <source>Installed version</source>
         <source>Installed version</source>
         <translation>Versión instalada</translation>
         <translation>Versión instalada</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
         <source>Latest version</source>
         <source>Latest version</source>
         <translation>Última versión</translation>
         <translation>Última versión</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
         <source>Size</source>
         <source>Size</source>
         <translation>Tamaño</translation>
         <translation>Tamaño</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
         <source>Download size</source>
         <source>Download size</source>
         <translation>Tamaño de descarga</translation>
         <translation>Tamaño de descarga</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
         <source>Authors</source>
         <source>Authors</source>
         <translation>Autores</translation>
         <translation>Autores</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
         <source>License</source>
         <source>License</source>
         <translation>Licencia</translation>
         <translation>Licencia</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
         <source>Contact</source>
         <source>Contact</source>
         <translation>Contacto</translation>
         <translation>Contacto</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
         <source>Compatibility</source>
         <source>Compatibility</source>
         <translation>Compatibilidad</translation>
         <translation>Compatibilidad</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>Required VCMI version</source>
         <source>Required VCMI version</source>
         <translation>Versión de VCMI requerida</translation>
         <translation>Versión de VCMI requerida</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>Supported VCMI version</source>
         <source>Supported VCMI version</source>
         <translation>Versión de VCMI compatible</translation>
         <translation>Versión de VCMI compatible</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>please upgrade mod</source>
         <source>please upgrade mod</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
         <source>mods repository index</source>
         <source>mods repository index</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>or newer</source>
         <source>or newer</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
         <source>Supported VCMI versions</source>
         <source>Supported VCMI versions</source>
         <translation>Versiones de VCMI compatibles</translation>
         <translation>Versiones de VCMI compatibles</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
         <source>Languages</source>
         <source>Languages</source>
         <translation>Idiomas</translation>
         <translation>Idiomas</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
         <source>Required mods</source>
         <source>Required mods</source>
         <translation>Mods requeridos</translation>
         <translation>Mods requeridos</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
         <source>Conflicting mods</source>
         <source>Conflicting mods</source>
         <translation>Mods conflictivos</translation>
         <translation>Mods conflictivos</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <translation>Este mod no se puede instalar o habilitar porque no están presentes las siguientes dependencias</translation>
         <translation>Este mod no se puede instalar o habilitar porque no están presentes las siguientes dependencias</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <translation>Este mod no se puede habilitar porque los siguientes mods son incompatibles con él</translation>
         <translation>Este mod no se puede habilitar porque los siguientes mods son incompatibles con él</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <translation>No se puede desactivar este mod porque es necesario para ejecutar los siguientes mods</translation>
         <translation>No se puede desactivar este mod porque es necesario para ejecutar los siguientes mods</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <translation>No se puede desinstalar o actualizar este mod porque es necesario para ejecutar los siguientes mods</translation>
         <translation>No se puede desinstalar o actualizar este mod porque es necesario para ejecutar los siguientes mods</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <translation>Este es un submod y no se puede instalar o desinstalar por separado del mod principal</translation>
         <translation>Este es un submod y no se puede instalar o desinstalar por separado del mod principal</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
         <source>Notes</source>
         <source>Notes</source>
         <translation>Notas</translation>
         <translation>Notas</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
         <source>All supported files</source>
         <source>All supported files</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
         <source>Maps</source>
         <source>Maps</source>
         <translation type="unfinished">Mapas</translation>
         <translation type="unfinished">Mapas</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
         <source>Campaigns</source>
         <source>Campaigns</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
         <source>Configs</source>
         <source>Configs</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
         <source>Mods</source>
         <source>Mods</source>
         <translation type="unfinished">Mods</translation>
         <translation type="unfinished">Mods</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
-        <source>Select files (configs, mods, maps, campaigns) to install...</source>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
+        <source>Gog files</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
+        <source>All files (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
+        <source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Replace config file?</source>
         <source>Replace config file?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Do you want to replace %1?</source>
         <source>Do you want to replace %1?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
         <source>Download failed</source>
         <source>Download failed</source>
         <translation>Descarga fallida</translation>
         <translation>Descarga fallida</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
         <source>Unable to download all files.
         <source>Unable to download all files.
 
 
 Encountered errors:
 Encountered errors:
@@ -478,7 +488,7 @@ Errores encontrados:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
         <source>
         <source>
 
 
 Install successfully downloaded?</source>
 Install successfully downloaded?</source>
@@ -487,34 +497,39 @@ Install successfully downloaded?</source>
 Instalar lo correctamente descargado?</translation>
 Instalar lo correctamente descargado?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
+        <source>Installing chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
         <source>Installing mod %1</source>
         <source>Installing mod %1</source>
         <translation>Instalando mod %1</translation>
         <translation>Instalando mod %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
         <source>Operation failed</source>
         <source>Operation failed</source>
         <translation>Operación fallida</translation>
         <translation>Operación fallida</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
         <source>Encountered errors:
         <source>Encountered errors:
 </source>
 </source>
         <translation>Errores encontrados:
         <translation>Errores encontrados:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
         <source>screenshots</source>
         <source>screenshots</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
         <source>Screenshot %1</source>
         <source>Screenshot %1</source>
         <translation>Captura de pantalla %1</translation>
         <translation>Captura de pantalla %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
         <source>Mod is incompatible</source>
         <source>Mod is incompatible</source>
         <translation>El mod es incompatible</translation>
         <translation>El mod es incompatible</translation>
     </message>
     </message>
@@ -618,7 +633,7 @@ Instalar lo correctamente descargado?</translation>
 <context>
 <context>
     <name>CSettingsView</name>
     <name>CSettingsView</name>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
         <source>Off</source>
         <source>Off</source>
         <translation>Desactivado</translation>
         <translation>Desactivado</translation>
     </message>
     </message>
@@ -712,6 +727,11 @@ Instalar lo correctamente descargado?</translation>
         <source>xBRZ x4</source>
         <source>xBRZ x4</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
+        <source>Use scalable fonts</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <source>Online Lobby address</source>
         <source>Online Lobby address</source>
@@ -878,7 +898,7 @@ Instalar lo correctamente descargado?</translation>
         <translation>Render</translation>
         <translation>Render</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
         <source>On</source>
         <source>On</source>
         <translation>Activado</translation>
         <translation>Activado</translation>
     </message>
     </message>
@@ -965,31 +985,67 @@ Pantalla completa - el juego cubrirá la totalidad de la pantalla y utilizará l
         <translation>Comprovar al inicio</translation>
         <translation>Comprovar al inicio</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
         <source>Active</source>
         <source>Active</source>
         <translation>Activado</translation>
         <translation>Activado</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
         <source>Disabled</source>
         <source>Disabled</source>
         <translation>Desactivado</translation>
         <translation>Desactivado</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
         <source>Enable</source>
         <source>Enable</source>
         <translation>Activar</translation>
         <translation>Activar</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
         <source>Not Installed</source>
         <source>Not Installed</source>
         <translation>No Instalado</translation>
         <translation>No Instalado</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
         <source>Install</source>
         <source>Install</source>
         <translation>Instalar</translation>
         <translation>Instalar</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>ChroniclesExtractor</name>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="48"/>
+        <source>File cannot opened</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>Invalid file selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <source>You have to select an gog installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>You have to select an chronicle installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="87"/>
+        <source>Extracting error!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="104"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="105"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="141"/>
+        <source>Heroes Chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>File size</name>
     <name>File size</name>
     <message>
     <message>
@@ -1206,110 +1262,99 @@ Offline installer consists of two parts, .exe and .bin. Make sure you download b
         <translation>Finalizar</translation>
         <translation>Finalizar</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Heroes III installation found!</source>
         <source>Heroes III installation found!</source>
         <translation>Instalación de Heroes III encontrada!</translation>
         <translation>Instalación de Heroes III encontrada!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Copy data to VCMI folder?</source>
         <source>Copy data to VCMI folder?</source>
         <translation>Copiar datos a la carpeta VCMI?</translation>
         <translation>Copiar datos a la carpeta VCMI?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
         <source>Select %1 file...</source>
         <source>Select %1 file...</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
         <source>You have to select %1 file!</source>
         <source>You have to select %1 file!</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
         <source>GOG file (*.*)</source>
         <source>GOG file (*.*)</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
         <source>File selection</source>
         <source>File selection</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
         <source>File cannot be opened</source>
         <source>File cannot be opened</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
         <source>Invalid file selected</source>
         <source>Invalid file selected</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
         <source>GOG installer</source>
         <source>GOG installer</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
         <source>GOG data</source>
         <source>GOG data</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
-        <source>Stream error while extracting files!
-error reason: </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
-        <source>Not a supported Inno Setup installer!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
         <source>Extracting error!</source>
         <source>Extracting error!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>No Heroes III data!</source>
         <source>No Heroes III data!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>Selected files do not contain Heroes III data!</source>
         <source>Selected files do not contain Heroes III data!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Heroes III data not found!</source>
         <source>Heroes III data not found!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
         <source>Failed to detect valid Heroes III data in chosen directory.
         <source>Failed to detect valid Heroes III data in chosen directory.
 Please select directory with installed Heroes III data.</source>
 Please select directory with installed Heroes III data.</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
         <source>Heroes III: HD Edition files are not supported by VCMI.
         <source>Heroes III: HD Edition files are not supported by VCMI.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Unknown or unsupported Heroes III version found.
         <source>Unknown or unsupported Heroes III version found.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
@@ -1323,6 +1368,25 @@ Please select directory with Heroes III: Complete Edition or Heroes III: Shadow
         <translation>Visor de imágenes</translation>
         <translation>Visor de imágenes</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>Innoextract</name>
+    <message>
+        <location filename="../innoextract.cpp" line="42"/>
+        <source>Stream error while extracting files!
+error reason: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="55"/>
+        <source>Not a supported Inno Setup installer!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="58"/>
+        <source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>Language</name>
     <name>Language</name>
     <message>
     <message>

+ 187 - 123
launcher/translation/swedish.ts

@@ -102,7 +102,7 @@
     <message>
     <message>
         <location filename="../modManager/cmodlistmodel_moc.cpp" line="44"/>
         <location filename="../modManager/cmodlistmodel_moc.cpp" line="44"/>
         <source>Test</source>
         <source>Test</source>
-        <translation>Testa</translation>
+        <translation>Test</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodlistmodel_moc.cpp" line="45"/>
         <location filename="../modManager/cmodlistmodel_moc.cpp" line="45"/>
@@ -224,7 +224,7 @@
     <message>
     <message>
         <location filename="../modManager/cmodlistview_moc.ui" line="86"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="86"/>
         <source>Active</source>
         <source>Active</source>
-        <translation>Tillgångar</translation>
+        <translation>Aktiv</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodlistview_moc.ui" line="91"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="91"/>
@@ -238,7 +238,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
         <source>Description</source>
         <source>Description</source>
         <translation>Beskrivning</translation>
         <translation>Beskrivning</translation>
     </message>
     </message>
@@ -290,182 +290,192 @@
     <message>
     <message>
         <location filename="../modManager/cmodlistview_moc.ui" line="340"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="340"/>
         <source>Abort</source>
         <source>Abort</source>
-        <translation>Ge upp</translation>
+        <translation>Avbryt</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
         <source>Mod name</source>
         <source>Mod name</source>
         <translation>Modd-namn</translation>
         <translation>Modd-namn</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
         <source>Installed version</source>
         <source>Installed version</source>
         <translation>Installerad version</translation>
         <translation>Installerad version</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
         <source>Latest version</source>
         <source>Latest version</source>
         <translation>Senaste version</translation>
         <translation>Senaste version</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
         <source>Size</source>
         <source>Size</source>
         <translation>Storlek</translation>
         <translation>Storlek</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
         <source>Download size</source>
         <source>Download size</source>
-        <translation>Nedladdningsstorlek</translation>
+        <translation>Nedladdnings-storlek</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
         <source>Authors</source>
         <source>Authors</source>
         <translation>Författare</translation>
         <translation>Författare</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
         <source>License</source>
         <source>License</source>
         <translation>Licens</translation>
         <translation>Licens</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
         <source>Contact</source>
         <source>Contact</source>
         <translation>Kontakt</translation>
         <translation>Kontakt</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
         <source>Compatibility</source>
         <source>Compatibility</source>
         <translation>Kompatibilitet</translation>
         <translation>Kompatibilitet</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>Required VCMI version</source>
         <source>Required VCMI version</source>
         <translation>VCMI-version som krävs</translation>
         <translation>VCMI-version som krävs</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>Supported VCMI version</source>
         <source>Supported VCMI version</source>
-        <translation>Stödd VCMI-version</translation>
+        <translation>VCMI-version som stöds</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>please upgrade mod</source>
         <source>please upgrade mod</source>
         <translation>vänligen uppdatera modd</translation>
         <translation>vänligen uppdatera modd</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
         <source>mods repository index</source>
         <source>mods repository index</source>
-        <translation>Modd-repositorie index</translation>
+        <translation>Modd-repositorie-index</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>or newer</source>
         <source>or newer</source>
         <translation>eller nyare</translation>
         <translation>eller nyare</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
         <source>Supported VCMI versions</source>
         <source>Supported VCMI versions</source>
         <translation>VCMI-versioner som stöds</translation>
         <translation>VCMI-versioner som stöds</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
         <source>Languages</source>
         <source>Languages</source>
         <translation>Språk</translation>
         <translation>Språk</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
         <source>Required mods</source>
         <source>Required mods</source>
         <translation>Moddar som krävs</translation>
         <translation>Moddar som krävs</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
         <source>Conflicting mods</source>
         <source>Conflicting mods</source>
         <translation>Modd-konflikter</translation>
         <translation>Modd-konflikter</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <translation>Denna modd kan inte installeras eller aktiveras eftersom följande beroenden inte finns</translation>
         <translation>Denna modd kan inte installeras eller aktiveras eftersom följande beroenden inte finns</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
-        <translation>Denna modd kan inte aktiveras eftersom följande beroenden är inkompatibla med den</translation>
+        <translation>Denna modd kan inte aktiveras eftersom följande moddar är inkompatibla med den</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <source>This mod cannot be disabled because it is required by the following mods</source>
-        <translation>Denna modd kan inte inaktiveras eftersom den krävs för följande beroenden</translation>
+        <translation>Denna modd kan inte inaktiveras eftersom den krävs för följande modd</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
-        <translation>Denna modd kan inte avinstalleras eller uppdateras eftersom den krävs för följande beroenden</translation>
+        <translation>Denna modd kan inte avinstalleras eller uppdateras eftersom den krävs för följande modd</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
-        <translation>Denna undermodd/submodd kan inte installeras eller uppdateras separat från huvud-modden</translation>
+        <translation>Detta är en undermodd/submodd och den kan inte installeras eller avinstalleras separat från huvud-modden</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
         <source>Notes</source>
         <source>Notes</source>
         <translation>Anteckningar</translation>
         <translation>Anteckningar</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
         <source>All supported files</source>
         <source>All supported files</source>
         <translation>Alla filer som stöds</translation>
         <translation>Alla filer som stöds</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
         <source>Maps</source>
         <source>Maps</source>
         <translation>Kartor</translation>
         <translation>Kartor</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
         <source>Campaigns</source>
         <source>Campaigns</source>
         <translation>Kampanjer</translation>
         <translation>Kampanjer</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
         <source>Configs</source>
         <source>Configs</source>
         <translation>Konfigurationer</translation>
         <translation>Konfigurationer</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
         <source>Mods</source>
         <source>Mods</source>
         <translation>Moddar</translation>
         <translation>Moddar</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
-        <source>Select files (configs, mods, maps, campaigns) to install...</source>
-        <translation>Välj filer att installera (konfigurationer, moddar, kartor, kampanjer)...</translation>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
+        <source>Gog files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
+        <source>All files (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
+        <source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
+        <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Replace config file?</source>
         <source>Replace config file?</source>
         <translation>Byt ut konfigurationsfilen?</translation>
         <translation>Byt ut konfigurationsfilen?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Do you want to replace %1?</source>
         <source>Do you want to replace %1?</source>
         <translation>Vill du ersätta %1?</translation>
         <translation>Vill du ersätta %1?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
-        <translation>Ladda ner %1. %p% (%v MB av %m MB) slutfört</translation>
+        <translation>Laddar ner %1. %p% (%v MB av %m MB) slutfört</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
         <source>Download failed</source>
         <source>Download failed</source>
         <translation>Nedladdning misslyckades</translation>
         <translation>Nedladdning misslyckades</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
         <source>Unable to download all files.
         <source>Unable to download all files.
 
 
 Encountered errors:
 Encountered errors:
@@ -478,43 +488,48 @@ Fel påträffat:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
         <source>
         <source>
 
 
 Install successfully downloaded?</source>
 Install successfully downloaded?</source>
         <translation>
         <translation>
 
 
-Installera lyckade nedladdningar?</translation>
+Installation framgångsrikt nedladdad?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
+        <source>Installing chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
         <source>Installing mod %1</source>
         <source>Installing mod %1</source>
-        <translation>Installera mod %1</translation>
+        <translation>Installera modd %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
         <source>Operation failed</source>
         <source>Operation failed</source>
         <translation>Åtgärden misslyckades</translation>
         <translation>Åtgärden misslyckades</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
         <source>Encountered errors:
         <source>Encountered errors:
 </source>
 </source>
         <translation>Fel påträffades:
         <translation>Fel påträffades:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
         <source>screenshots</source>
         <source>screenshots</source>
         <translation>skärmdumpar</translation>
         <translation>skärmdumpar</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
         <source>Screenshot %1</source>
         <source>Screenshot %1</source>
-        <translation>Skriv ut skärm %1</translation>
+        <translation>Skärmbild %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
         <source>Mod is incompatible</source>
         <source>Mod is incompatible</source>
         <translation>Denna modd är inkompatibel</translation>
         <translation>Denna modd är inkompatibel</translation>
     </message>
     </message>
@@ -555,7 +570,7 @@ Installera lyckade nedladdningar?</translation>
     <message>
     <message>
         <location filename="../modManager/cmodmanager.cpp" line="200"/>
         <location filename="../modManager/cmodmanager.cpp" line="200"/>
         <source>Mod is not compatible, please update VCMI and checkout latest mod revisions</source>
         <source>Mod is not compatible, please update VCMI and checkout latest mod revisions</source>
-        <translation>Modden är inte kompatibel. Vänligen uppdatera VCMI och kontrollera att du har den senaste versionen av modden</translation>
+        <translation>Modden är inte kompatibel. Vänligen uppdatera VCMI och kontrollera att du har den senaste kompatibla versionen av modden</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodmanager.cpp" line="205"/>
         <location filename="../modManager/cmodmanager.cpp" line="205"/>
@@ -565,7 +580,7 @@ Installera lyckade nedladdningar?</translation>
     <message>
     <message>
         <location filename="../modManager/cmodmanager.cpp" line="210"/>
         <location filename="../modManager/cmodmanager.cpp" line="210"/>
         <source>Required mod %1 is not enabled</source>
         <source>Required mod %1 is not enabled</source>
-        <translation>Den obligatorisk modden %1 är inte aktiverad</translation>
+        <translation>Den obligatoriska modden %1 är inte aktiverad</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodmanager.cpp" line="219"/>
         <location filename="../modManager/cmodmanager.cpp" line="219"/>
@@ -601,7 +616,7 @@ Installera lyckade nedladdningar?</translation>
     <message>
     <message>
         <location filename="../modManager/cmodmanager.cpp" line="322"/>
         <location filename="../modManager/cmodmanager.cpp" line="322"/>
         <source>Failed to extract mod data</source>
         <source>Failed to extract mod data</source>
-        <translation>Det gick inte att extrahera data från modd</translation>
+        <translation>Misslyckades att extrahera data från modd</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodmanager.cpp" line="350"/>
         <location filename="../modManager/cmodmanager.cpp" line="350"/>
@@ -619,7 +634,7 @@ Installera lyckade nedladdningar?</translation>
 <context>
 <context>
     <name>CSettingsView</name>
     <name>CSettingsView</name>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
         <source>Off</source>
         <source>Off</source>
         <translation>Inaktiverad</translation>
         <translation>Inaktiverad</translation>
     </message>
     </message>
@@ -629,7 +644,7 @@ Installera lyckade nedladdningar?</translation>
         <translation>Artificiell intelligens</translation>
         <translation>Artificiell intelligens</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
         <source>On</source>
         <source>On</source>
         <translation>Aktiverad</translation>
         <translation>Aktiverad</translation>
     </message>
     </message>
@@ -646,7 +661,7 @@ Installera lyckade nedladdningar?</translation>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="593"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="593"/>
         <source>VSync</source>
         <source>VSync</source>
-        <translation>Vertikal synkronisering</translation>
+        <translation>Vertikal-synkronisering (VSync)</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="490"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="490"/>
@@ -676,7 +691,7 @@ Installera lyckade nedladdningar?</translation>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="835"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="835"/>
         <source>Software Cursor</source>
         <source>Software Cursor</source>
-        <translation>Programvarumarkör (muspekare)</translation>
+        <translation>Programvarustyrd muspekare</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="1166"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="1166"/>
@@ -703,6 +718,11 @@ Installera lyckade nedladdningar?</translation>
         <source>xBRZ x4</source>
         <source>xBRZ x4</source>
         <translation>xBRZ x4</translation>
         <translation>xBRZ x4</translation>
     </message>
     </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
+        <source>Use scalable fonts</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <source>Online Lobby address</source>
         <source>Online Lobby address</source>
@@ -711,7 +731,7 @@ Installera lyckade nedladdningar?</translation>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="1158"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="1158"/>
         <source>Upscaling Filter</source>
         <source>Upscaling Filter</source>
-        <translation>Förstoringsfilter</translation>
+        <translation>Uppskalnings-filter</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="317"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="317"/>
@@ -746,7 +766,7 @@ Installera lyckade nedladdningar?</translation>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="1144"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="1144"/>
         <source>Show Tutorial again</source>
         <source>Show Tutorial again</source>
-        <translation>Visa övningsgenomgången igen</translation>
+        <translation>Visa handledningen/övningsgenomgången igen</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="1151"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="1151"/>
@@ -833,7 +853,7 @@ Exklusivt helskärmsläge - spelet kommer att täcka hela skärmen och använda
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="407"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="407"/>
         <source>Borderless fullscreen</source>
         <source>Borderless fullscreen</source>
-        <translation>Kantlöst fönsterläge</translation>
+        <translation>Kantlös helskärm</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="412"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="412"/>
@@ -903,7 +923,7 @@ Exklusivt helskärmsläge - spelet kommer att täcka hela skärmen och använda
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="646"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="646"/>
         <source>Check on startup</source>
         <source>Check on startup</source>
-        <translation>Kontrollera vid start</translation>
+        <translation>Kontrollera vid uppstart</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="828"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="828"/>
@@ -966,31 +986,67 @@ Exklusivt helskärmsläge - spelet kommer att täcka hela skärmen och använda
         <translation>Visa intro</translation>
         <translation>Visa intro</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
         <source>Active</source>
         <source>Active</source>
         <translation>Aktiv</translation>
         <translation>Aktiv</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
         <source>Disabled</source>
         <source>Disabled</source>
         <translation>Inaktiverad</translation>
         <translation>Inaktiverad</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
         <source>Enable</source>
         <source>Enable</source>
         <translation>Aktivera</translation>
         <translation>Aktivera</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
         <source>Not Installed</source>
         <source>Not Installed</source>
         <translation>Inte installerad</translation>
         <translation>Inte installerad</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
         <source>Install</source>
         <source>Install</source>
         <translation>Installera</translation>
         <translation>Installera</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>ChroniclesExtractor</name>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="48"/>
+        <source>File cannot opened</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>Invalid file selected</source>
+        <translation type="unfinished">Ogiltig fil vald</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <source>You have to select an gog installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>You have to select an chronicle installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="87"/>
+        <source>Extracting error!</source>
+        <translation type="unfinished">Extraktionsfel!</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="104"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="105"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="141"/>
+        <source>Heroes Chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>File size</name>
     <name>File size</name>
     <message>
     <message>
@@ -1059,7 +1115,7 @@ Exklusivt helskärmsläge - spelet kommer att täcka hela skärmen och använda
     <message>
     <message>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="310"/>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="310"/>
         <source>You can manually copy directories Maps, Data and Mp3 from the original game directory to VCMI data directory that you can see on top of this page</source>
         <source>You can manually copy directories Maps, Data and Mp3 from the original game directory to VCMI data directory that you can see on top of this page</source>
-        <translation>Du kan manuellt kopiera mapparna 'Maps', 'Data' och 'Mp3' från den ursprungliga spel-mappen till VCMI-datamappen som du kan se överst på den här sidan</translation>
+        <translation>Du kan manuellt kopiera mapparna &apos;Maps&apos;, &apos;Data&apos; och &apos;Mp3&apos; från den ursprungliga spel-mappen till VCMI-datamappen som du kan se överst på den här sidan</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="329"/>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="329"/>
@@ -1095,12 +1151,12 @@ Exklusivt helskärmsläge - spelet kommer att täcka hela skärmen och använda
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/>
         <source>If you own Heroes III on gog.com you can download backup offline installer from gog.com, and VCMI will import Heroes III data using offline installer. 
         <source>If you own Heroes III on gog.com you can download backup offline installer from gog.com, and VCMI will import Heroes III data using offline installer. 
 Offline installer consists of two parts, .exe and .bin. Make sure you download both of them.</source>
 Offline installer consists of two parts, .exe and .bin. Make sure you download both of them.</source>
-        <translation>Om du äger Heroes III från GOG.com kan du ladda ner backup offline-installationsprogrammet från GOG.com - VCMI kommer att importera Heroes III-data med hjälp av offline-installationsprogrammet. Offline-installationsprogrammet består av två delar, en .exe och en .bin. Se till att ladda ner båda.</translation>
+        <translation>Om du äger Heroes III från GOG.com kan du ladda ner backup offline-installationsprogrammet från 'GOG.com'. VCMI kommer att importera Heroes III-data med hjälp av offline-installationsprogrammet. Offline-installationsprogrammet består av två delar, en '.exe'- och en '.bin'fil. Se till att ladda ner båda.</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="622"/>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="622"/>
         <source>Install a translation of Heroes III in your preferred language</source>
         <source>Install a translation of Heroes III in your preferred language</source>
-        <translation>Installera en översättning av Heroes III på ditt föredragna språk</translation>
+        <translation>Installera en översättning av Heroes III på det språk du föredrar</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="867"/>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="867"/>
@@ -1110,12 +1166,12 @@ Offline installer consists of two parts, .exe and .bin. Make sure you download b
     <message>
     <message>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="155"/>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="155"/>
         <source>VCMI on Github</source>
         <source>VCMI on Github</source>
-        <translation>VCMI på Github</translation>
+        <translation>VCMI på 'Github'</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="162"/>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="162"/>
         <source>VCMI on Discord</source>
         <source>VCMI on Discord</source>
-        <translation>VCMI på Discord</translation>
+        <translation>VCMI på 'Discord'</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="178"/>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="178"/>
@@ -1189,7 +1245,7 @@ Heroes® of Might and Magic® III HD stöds för närvarande inte!</translation>
     <message>
     <message>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="689"/>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="689"/>
         <source>Optionally, you can install additional mods either now, or at any point later, using the VCMI Launcher</source>
         <source>Optionally, you can install additional mods either now, or at any point later, using the VCMI Launcher</source>
-        <translation>Valfritt kan du installera ytterligare moddar antingen nu eller när som helst senare med hjälp av 'VCMI Launcher'</translation>
+        <translation>Du kan välja att installera ytterligare moddar, antingen nu eller vid ett senare tillfälle med hjälp av 'VCMI Launchern'</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="788"/>
         <location filename="../firstLaunch/firstlaunch_moc.ui" line="788"/>
@@ -1207,112 +1263,100 @@ Heroes® of Might and Magic® III HD stöds för närvarande inte!</translation>
         <translation>Installera en kompatibel version av &quot;In The Wake of Gods&quot; (en fantillverkad Heroes III-expansion)</translation>
         <translation>Installera en kompatibel version av &quot;In The Wake of Gods&quot; (en fantillverkad Heroes III-expansion)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Heroes III installation found!</source>
         <source>Heroes III installation found!</source>
         <translation>Heroes III-installationen hittades!</translation>
         <translation>Heroes III-installationen hittades!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Copy data to VCMI folder?</source>
         <source>Copy data to VCMI folder?</source>
         <translation>Kopiera data till VCMI-mappen?</translation>
         <translation>Kopiera data till VCMI-mappen?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
         <source>Select %1 file...</source>
         <source>Select %1 file...</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
-        <translation>Välj filen %1...</translation>
+        <translation>Välj filen %1 ...</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
         <source>You have to select %1 file!</source>
         <source>You have to select %1 file!</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation>Du behöver välja filen %1!</translation>
         <translation>Du behöver välja filen %1!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
         <source>GOG file (*.*)</source>
         <source>GOG file (*.*)</source>
         <translation>GOG-fil (*.*)</translation>
         <translation>GOG-fil (*.*)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
         <source>File selection</source>
         <source>File selection</source>
         <translation>Filval</translation>
         <translation>Filval</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
         <source>File cannot be opened</source>
         <source>File cannot be opened</source>
         <translation>Filen kan inte öppnas</translation>
         <translation>Filen kan inte öppnas</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
         <source>Invalid file selected</source>
         <source>Invalid file selected</source>
         <translation>Ogiltig fil vald</translation>
         <translation>Ogiltig fil vald</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
         <source>GOG installer</source>
         <source>GOG installer</source>
-        <translation>GOG installationsprogram</translation>
+        <translation>GOG-Installationsprogram</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
         <source>GOG data</source>
         <source>GOG data</source>
         <translation>GOG-data</translation>
         <translation>GOG-data</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>No Heroes III data!</source>
         <source>No Heroes III data!</source>
         <translation>Inga Heroes III-data!</translation>
         <translation>Inga Heroes III-data!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>Selected files do not contain Heroes III data!</source>
         <source>Selected files do not contain Heroes III data!</source>
         <translation>De valda filerna innehåller inte Heroes III-data!</translation>
         <translation>De valda filerna innehåller inte Heroes III-data!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Heroes III data not found!</source>
         <source>Heroes III data not found!</source>
         <translation>Heroes III-data hittades inte!</translation>
         <translation>Heroes III-data hittades inte!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
         <source>Failed to detect valid Heroes III data in chosen directory.
         <source>Failed to detect valid Heroes III data in chosen directory.
 Please select directory with installed Heroes III data.</source>
 Please select directory with installed Heroes III data.</source>
-        <translation>Det går inte att upptäcka giltiga Heroes III-data i den valda katalogen. Välj en mapp där Heroes III-data finns.</translation>
+        <translation>Misslyckades med att upptäcka giltiga Heroes III-data i den valda mappen. Vänligen välj en mapp där Heroes III-data finns installerat.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <translation>Du har tillhandahållit installationsprogrammet för GOG Galaxy! Den här filen innehåller inte spelet. Ladda ner offline-installationsprogrammet för spelet!</translation>
         <translation>Du har tillhandahållit installationsprogrammet för GOG Galaxy! Den här filen innehåller inte spelet. Ladda ner offline-installationsprogrammet för spelet!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
-        <source>Stream error while extracting files!
-error reason: </source>
-        <translation>Strömningsfel vid extrahering av filer!
-Orsak till fel: </translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
-        <source>Not a supported Inno Setup installer!</source>
-        <translation>Inno Setup-installationsprogrammet stöds inte!</translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
         <source>Extracting error!</source>
         <source>Extracting error!</source>
-        <translation>Extraktionsfel!</translation>
+        <translation>Fel vid extrahering!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
         <source>Heroes III: HD Edition files are not supported by VCMI.
         <source>Heroes III: HD Edition files are not supported by VCMI.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation>Heroes III HD Edition-filer stöds inte av VCMI.
         <translation>Heroes III HD Edition-filer stöds inte av VCMI.
-Välj en mapp som innehåller data från Heroes III: Complete Edition eller Heroes III: Shadow of Death.</translation>
+Vänligen välj en mapp som innehåller data från Heroes III: Complete Edition eller Heroes III: Shadow of Death.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Unknown or unsupported Heroes III version found.
         <source>Unknown or unsupported Heroes III version found.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation>Okänd eller ostödd version av Heroes III.
         <translation>Okänd eller ostödd version av Heroes III.
@@ -1327,6 +1371,26 @@ Vänligen välj en mapp som innehåller data från Heroes III: Complete Edition
         <translation>Bildvisare</translation>
         <translation>Bildvisare</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>Innoextract</name>
+    <message>
+        <location filename="../innoextract.cpp" line="42"/>
+        <source>Stream error while extracting files!
+error reason: </source>
+        <translation type="unfinished">Strömningsfel vid extrahering av filer!
+Orsak till fel: </translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="55"/>
+        <source>Not a supported Inno Setup installer!</source>
+        <translation type="unfinished">Inno Setup-installationsprogrammet stöds inte!</translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="58"/>
+        <source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>Language</name>
     <name>Language</name>
     <message>
     <message>
@@ -1425,7 +1489,7 @@ Vänligen välj en mapp som innehåller data från Heroes III: Complete Edition
     <message>
     <message>
         <location filename="../mainwindow_moc.ui" line="20"/>
         <location filename="../mainwindow_moc.ui" line="20"/>
         <source>VCMI Launcher</source>
         <source>VCMI Launcher</source>
-        <translation>VCMI Launcher</translation>
+        <translation>VCMI-startprogram (VCMI Launcher)</translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow_moc.ui" line="53"/>
         <location filename="../mainwindow_moc.ui" line="53"/>
@@ -1450,7 +1514,7 @@ Vänligen välj en mapp som innehåller data från Heroes III: Complete Edition
     <message>
     <message>
         <location filename="../mainwindow_moc.ui" line="259"/>
         <location filename="../mainwindow_moc.ui" line="259"/>
         <source>Start game</source>
         <source>Start game</source>
-        <translation>Starta ett spel</translation>
+        <translation>Starta spelet</translation>
     </message>
     </message>
 </context>
 </context>
 <context>
 <context>

+ 151 - 87
launcher/translation/ukrainian.ts

@@ -233,7 +233,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
         <source>Description</source>
         <source>Description</source>
         <translation>Опис</translation>
         <translation>Опис</translation>
     </message>
     </message>
@@ -293,179 +293,189 @@
         <translation>Відмінити</translation>
         <translation>Відмінити</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
         <source>Mod name</source>
         <source>Mod name</source>
         <translation>Назва модифікації</translation>
         <translation>Назва модифікації</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
         <source>Installed version</source>
         <source>Installed version</source>
         <translation>Встановлена версія</translation>
         <translation>Встановлена версія</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
         <source>Latest version</source>
         <source>Latest version</source>
         <translation>Найновіша версія</translation>
         <translation>Найновіша версія</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
         <source>Size</source>
         <source>Size</source>
         <translation>Розмір</translation>
         <translation>Розмір</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
         <source>Download size</source>
         <source>Download size</source>
         <translation>Розмір для завантаження</translation>
         <translation>Розмір для завантаження</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
         <source>Authors</source>
         <source>Authors</source>
         <translation>Автори</translation>
         <translation>Автори</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
         <source>License</source>
         <source>License</source>
         <translation>Ліцензія</translation>
         <translation>Ліцензія</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
         <source>Contact</source>
         <source>Contact</source>
         <translation>Контакти</translation>
         <translation>Контакти</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
         <source>Compatibility</source>
         <source>Compatibility</source>
         <translation>Сумісність</translation>
         <translation>Сумісність</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>Required VCMI version</source>
         <source>Required VCMI version</source>
         <translation>Необхідна версія VCMI</translation>
         <translation>Необхідна версія VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>Supported VCMI version</source>
         <source>Supported VCMI version</source>
         <translation>Підтримувана версія VCMI</translation>
         <translation>Підтримувана версія VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>please upgrade mod</source>
         <source>please upgrade mod</source>
         <translation>будь ласка, оновіть модифікацію</translation>
         <translation>будь ласка, оновіть модифікацію</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
         <source>mods repository index</source>
         <source>mods repository index</source>
         <translation>каталог модифікацій</translation>
         <translation>каталог модифікацій</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>or newer</source>
         <source>or newer</source>
         <translation>або новіше</translation>
         <translation>або новіше</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
         <source>Supported VCMI versions</source>
         <source>Supported VCMI versions</source>
         <translation>Підтримувані версії VCMI</translation>
         <translation>Підтримувані версії VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
         <source>Languages</source>
         <source>Languages</source>
         <translation>Мови</translation>
         <translation>Мови</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
         <source>Required mods</source>
         <source>Required mods</source>
         <translation>Необхідні модифікації</translation>
         <translation>Необхідні модифікації</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
         <source>Conflicting mods</source>
         <source>Conflicting mods</source>
         <translation>Конфліктуючі модифікації</translation>
         <translation>Конфліктуючі модифікації</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <translation>Цю модифікацію не можна встановити чи активувати, оскільки відсутні наступні залежності</translation>
         <translation>Цю модифікацію не можна встановити чи активувати, оскільки відсутні наступні залежності</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <translation>Цю модифікацію не можна ввімкнути, оскільки наступні модифікації несумісні з цією модифікацією</translation>
         <translation>Цю модифікацію не можна ввімкнути, оскільки наступні модифікації несумісні з цією модифікацією</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <translation>Цю модифікацію не можна відключити, оскільки вона необхідна для запуску наступних модифікацій</translation>
         <translation>Цю модифікацію не можна відключити, оскільки вона необхідна для запуску наступних модифікацій</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <translation>Цю модифікацію не можна видалити або оновити, оскільки вона необхідна для запуску наступних модифікацій</translation>
         <translation>Цю модифікацію не можна видалити або оновити, оскільки вона необхідна для запуску наступних модифікацій</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <translation>Це вкладена модифікація, і її не можна встановити або видалити окремо від батьківської модифікації</translation>
         <translation>Це вкладена модифікація, і її не можна встановити або видалити окремо від батьківської модифікації</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
         <source>Notes</source>
         <source>Notes</source>
         <translation>Примітки</translation>
         <translation>Примітки</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
         <source>All supported files</source>
         <source>All supported files</source>
         <translation>Усі підтримувані файли</translation>
         <translation>Усі підтримувані файли</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
         <source>Maps</source>
         <source>Maps</source>
         <translation>Мапи</translation>
         <translation>Мапи</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
         <source>Campaigns</source>
         <source>Campaigns</source>
         <translation>Кампанії</translation>
         <translation>Кампанії</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
         <source>Configs</source>
         <source>Configs</source>
         <translation>Налаштування</translation>
         <translation>Налаштування</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
         <source>Mods</source>
         <source>Mods</source>
         <translation>Модифікації</translation>
         <translation>Модифікації</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
-        <source>Select files (configs, mods, maps, campaigns) to install...</source>
-        <translation>Виберіть файли ( налаштування, моди, мапи, кампанії) для встановлення...</translation>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
+        <source>Gog files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
+        <source>All files (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
+        <source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
+        <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Replace config file?</source>
         <source>Replace config file?</source>
         <translation>Замінити файл налаштувань?</translation>
         <translation>Замінити файл налаштувань?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Do you want to replace %1?</source>
         <source>Do you want to replace %1?</source>
         <translation>Ви дійсно хочете замінити %1?</translation>
         <translation>Ви дійсно хочете замінити %1?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <translation>Завантажується %1. %p% (%v MB з %m MB) завершено</translation>
         <translation>Завантажується %1. %p% (%v MB з %m MB) завершено</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
         <source>Download failed</source>
         <source>Download failed</source>
         <translation>Помилка завантаження</translation>
         <translation>Помилка завантаження</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
         <source>Unable to download all files.
         <source>Unable to download all files.
 
 
 Encountered errors:
 Encountered errors:
@@ -478,7 +488,7 @@ Encountered errors:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
         <source>
         <source>
 
 
 Install successfully downloaded?</source>
 Install successfully downloaded?</source>
@@ -487,34 +497,39 @@ Install successfully downloaded?</source>
 Встановити успішно завантажені?</translation>
 Встановити успішно завантажені?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
+        <source>Installing chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
         <source>Installing mod %1</source>
         <source>Installing mod %1</source>
         <translation>Встановлення модифікації %1</translation>
         <translation>Встановлення модифікації %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
         <source>Operation failed</source>
         <source>Operation failed</source>
         <translation>Операція завершилася невдало</translation>
         <translation>Операція завершилася невдало</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
         <source>Encountered errors:
         <source>Encountered errors:
 </source>
 </source>
         <translation>Виникли помилки:
         <translation>Виникли помилки:
 </translation>
 </translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
         <source>screenshots</source>
         <source>screenshots</source>
         <translation>знімки екрану</translation>
         <translation>знімки екрану</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
         <source>Screenshot %1</source>
         <source>Screenshot %1</source>
         <translation>Знімок екрану %1</translation>
         <translation>Знімок екрану %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
         <source>Mod is incompatible</source>
         <source>Mod is incompatible</source>
         <translation>Модифікація несумісна</translation>
         <translation>Модифікація несумісна</translation>
     </message>
     </message>
@@ -619,7 +634,7 @@ Install successfully downloaded?</source>
 <context>
 <context>
     <name>CSettingsView</name>
     <name>CSettingsView</name>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
         <source>Off</source>
         <source>Off</source>
         <translation>Ні</translation>
         <translation>Ні</translation>
     </message>
     </message>
@@ -713,6 +728,11 @@ Install successfully downloaded?</source>
         <source>xBRZ x4</source>
         <source>xBRZ x4</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
+        <source>Use scalable fonts</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <source>Online Lobby address</source>
         <source>Online Lobby address</source>
@@ -879,7 +899,7 @@ Install successfully downloaded?</source>
         <translation>Рендерер</translation>
         <translation>Рендерер</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
         <source>On</source>
         <source>On</source>
         <translation>Так</translation>
         <translation>Так</translation>
     </message>
     </message>
@@ -966,31 +986,67 @@ Fullscreen Exclusive Mode - game will cover entirety of your screen and will use
         <translation>Вступні відео</translation>
         <translation>Вступні відео</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
         <source>Active</source>
         <source>Active</source>
         <translation>Активні</translation>
         <translation>Активні</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
         <source>Disabled</source>
         <source>Disabled</source>
         <translation>Деактивований</translation>
         <translation>Деактивований</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
         <source>Enable</source>
         <source>Enable</source>
         <translation>Активувати</translation>
         <translation>Активувати</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
         <source>Not Installed</source>
         <source>Not Installed</source>
         <translation>Не встановлено</translation>
         <translation>Не встановлено</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
         <source>Install</source>
         <source>Install</source>
         <translation>Встановити</translation>
         <translation>Встановити</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>ChroniclesExtractor</name>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="48"/>
+        <source>File cannot opened</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>Invalid file selected</source>
+        <translation type="unfinished">Обрано невірний файл</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <source>You have to select an gog installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>You have to select an chronicle installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="87"/>
+        <source>Extracting error!</source>
+        <translation type="unfinished">Помилка видобування!</translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="104"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="105"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="141"/>
+        <source>Heroes Chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>File size</name>
     <name>File size</name>
     <message>
     <message>
@@ -1208,113 +1264,101 @@ Offline installer consists of two parts, .exe and .bin. Make sure you download b
         <translation>In The Wake of Gods</translation>
         <translation>In The Wake of Gods</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Heroes III installation found!</source>
         <source>Heroes III installation found!</source>
         <translation>Інсталяцію Heroes III знайдено!</translation>
         <translation>Інсталяцію Heroes III знайдено!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Copy data to VCMI folder?</source>
         <source>Copy data to VCMI folder?</source>
         <translation>Скопіювати дані до теки VCMI?</translation>
         <translation>Скопіювати дані до теки VCMI?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
         <source>Select %1 file...</source>
         <source>Select %1 file...</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation>Оберіть файл %1...</translation>
         <translation>Оберіть файл %1...</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
         <source>You have to select %1 file!</source>
         <source>You have to select %1 file!</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation>Ви повинні обрати файл %1!</translation>
         <translation>Ви повинні обрати файл %1!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
         <source>GOG file (*.*)</source>
         <source>GOG file (*.*)</source>
         <translation>Файл GOG (*.*)</translation>
         <translation>Файл GOG (*.*)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
         <source>File selection</source>
         <source>File selection</source>
         <translation>Вибір файлу</translation>
         <translation>Вибір файлу</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
         <source>File cannot be opened</source>
         <source>File cannot be opened</source>
         <translation>Не вдається відкрити файл</translation>
         <translation>Не вдається відкрити файл</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
         <source>Invalid file selected</source>
         <source>Invalid file selected</source>
         <translation>Обрано невірний файл</translation>
         <translation>Обрано невірний файл</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
         <source>GOG installer</source>
         <source>GOG installer</source>
         <translation>Інсталятор GOG</translation>
         <translation>Інсталятор GOG</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
         <source>GOG data</source>
         <source>GOG data</source>
         <translation>Дані GOG</translation>
         <translation>Дані GOG</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>No Heroes III data!</source>
         <source>No Heroes III data!</source>
         <translation>Немає файлів даних Heroes III!</translation>
         <translation>Немає файлів даних Heroes III!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>Selected files do not contain Heroes III data!</source>
         <source>Selected files do not contain Heroes III data!</source>
         <translation>Обрані файли не містять файлів з грою Heroes III!</translation>
         <translation>Обрані файли не містять файлів з грою Heroes III!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Heroes III data not found!</source>
         <source>Heroes III data not found!</source>
         <translation>Файли даних Heroes III не знайдено!</translation>
         <translation>Файли даних Heroes III не знайдено!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
         <source>Failed to detect valid Heroes III data in chosen directory.
         <source>Failed to detect valid Heroes III data in chosen directory.
 Please select directory with installed Heroes III data.</source>
 Please select directory with installed Heroes III data.</source>
         <translation>Не вдалося виявити файли Heroes III у вибраному каталозі.
         <translation>Не вдалося виявити файли Heroes III у вибраному каталозі.
 Будь ласка, виберіть теку зі встановленими даними Heroes III.</translation>
 Будь ласка, виберіть теку зі встановленими даними Heroes III.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <translation>Ви надали інсталятор GOG Galaxy! Цей файл не містить гри. Будь ласка, завантажте резервну копію інсталятора гри!</translation>
         <translation>Ви надали інсталятор GOG Galaxy! Цей файл не містить гри. Будь ласка, завантажте резервну копію інсталятора гри!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
-        <source>Stream error while extracting files!
-error reason: </source>
-        <translation>Помилка потоку під час розпакування файлів!
-причина помилки: </translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
-        <source>Not a supported Inno Setup installer!</source>
-        <translation>Не підтримуваний інсталятор Inno Setup!</translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
         <source>Extracting error!</source>
         <source>Extracting error!</source>
         <translation>Помилка видобування!</translation>
         <translation>Помилка видобування!</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
         <source>Heroes III: HD Edition files are not supported by VCMI.
         <source>Heroes III: HD Edition files are not supported by VCMI.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation>Файли Heroes III: HD Edition не підтримуються VCMI.
         <translation>Файли Heroes III: HD Edition не підтримуються VCMI.
 Будь ласка, виберіть теку з Heroes III: Complete Edition або Heroes III: Shadow of Death.</translation>
 Будь ласка, виберіть теку з Heroes III: Complete Edition або Heroes III: Shadow of Death.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Unknown or unsupported Heroes III version found.
         <source>Unknown or unsupported Heroes III version found.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation>Знайдено невідому або не підтримувану версію Heroes III.
         <translation>Знайдено невідому або не підтримувану версію Heroes III.
@@ -1329,6 +1373,26 @@ Please select directory with Heroes III: Complete Edition or Heroes III: Shadow
         <translation>Перегляд зображень</translation>
         <translation>Перегляд зображень</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>Innoextract</name>
+    <message>
+        <location filename="../innoextract.cpp" line="42"/>
+        <source>Stream error while extracting files!
+error reason: </source>
+        <translation type="unfinished">Помилка потоку під час розпакування файлів!
+причина помилки: </translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="55"/>
+        <source>Not a supported Inno Setup installer!</source>
+        <translation type="unfinished">Не підтримуваний інсталятор Inno Setup!</translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="58"/>
+        <source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>Language</name>
     <name>Language</name>
     <message>
     <message>

+ 149 - 85
launcher/translation/vietnamese.ts

@@ -233,7 +233,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="163"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
         <source>Description</source>
         <source>Description</source>
         <translation>Mô tả</translation>
         <translation>Mô tả</translation>
     </message>
     </message>
@@ -293,179 +293,189 @@
         <translation>Hủy</translation>
         <translation>Hủy</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
         <source>Mod name</source>
         <source>Mod name</source>
         <translation>Tên bản sửa đổi</translation>
         <translation>Tên bản sửa đổi</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
         <source>Installed version</source>
         <source>Installed version</source>
         <translation>Phiên bản cài đặt</translation>
         <translation>Phiên bản cài đặt</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
         <source>Latest version</source>
         <source>Latest version</source>
         <translation>Phiên bản mới nhất</translation>
         <translation>Phiên bản mới nhất</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
         <source>Size</source>
         <source>Size</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
         <source>Download size</source>
         <source>Download size</source>
         <translation>Kích thước tải về</translation>
         <translation>Kích thước tải về</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
         <source>Authors</source>
         <source>Authors</source>
         <translation>Tác giả</translation>
         <translation>Tác giả</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
         <source>License</source>
         <source>License</source>
         <translation>Giấy phép</translation>
         <translation>Giấy phép</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
         <source>Contact</source>
         <source>Contact</source>
         <translation>Liên hệ</translation>
         <translation>Liên hệ</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
         <source>Compatibility</source>
         <source>Compatibility</source>
         <translation>Tương thích</translation>
         <translation>Tương thích</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>Required VCMI version</source>
         <source>Required VCMI version</source>
         <translation>Cần phiên bản VCMI</translation>
         <translation>Cần phiên bản VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>Supported VCMI version</source>
         <source>Supported VCMI version</source>
         <translation>Hỗ trợ phiên bản VCMI</translation>
         <translation>Hỗ trợ phiên bản VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
         <source>please upgrade mod</source>
         <source>please upgrade mod</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
         <source>mods repository index</source>
         <source>mods repository index</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
         <source>or newer</source>
         <source>or newer</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
         <source>Supported VCMI versions</source>
         <source>Supported VCMI versions</source>
         <translation>Phiên bản VCMI hỗ trợ</translation>
         <translation>Phiên bản VCMI hỗ trợ</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
         <source>Languages</source>
         <source>Languages</source>
         <translation>Ngôn ngữ</translation>
         <translation>Ngôn ngữ</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
         <source>Required mods</source>
         <source>Required mods</source>
         <translation>Cần các bản sửa đổi</translation>
         <translation>Cần các bản sửa đổi</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
         <source>Conflicting mods</source>
         <source>Conflicting mods</source>
         <translation>Bản sửa đổi không tương thích</translation>
         <translation>Bản sửa đổi không tương thích</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <source>This mod can not be installed or enabled because the following dependencies are not present</source>
         <translation>Bản sửa đổi này không thể cài đặt hoặc kích hoạt do thiếu các bản sửa đổi sau</translation>
         <translation>Bản sửa đổi này không thể cài đặt hoặc kích hoạt do thiếu các bản sửa đổi sau</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <source>This mod can not be enabled because the following mods are incompatible with it</source>
         <translation>Bản sửa đổi này không thể kích hoạt do không tương thích các bản sửa đổi sau</translation>
         <translation>Bản sửa đổi này không thể kích hoạt do không tương thích các bản sửa đổi sau</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <source>This mod cannot be disabled because it is required by the following mods</source>
         <translation>Bản sửa đổi này không thể tắt do cần thiết cho các bản sửa đổi sau</translation>
         <translation>Bản sửa đổi này không thể tắt do cần thiết cho các bản sửa đổi sau</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
         <translation>Bản sửa đổi này không thể gỡ bỏ hoặc nâng cấp do cần thiết cho các bản sửa đổi sau</translation>
         <translation>Bản sửa đổi này không thể gỡ bỏ hoặc nâng cấp do cần thiết cho các bản sửa đổi sau</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
         <translation>Đây là bản con, không thể cài đặt hoặc gỡ bỏ tách biệt với bản cha</translation>
         <translation>Đây là bản con, không thể cài đặt hoặc gỡ bỏ tách biệt với bản cha</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
         <source>Notes</source>
         <source>Notes</source>
         <translation>Ghi chú</translation>
         <translation>Ghi chú</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
         <source>All supported files</source>
         <source>All supported files</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
         <source>Maps</source>
         <source>Maps</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
         <source>Campaigns</source>
         <source>Campaigns</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
         <source>Configs</source>
         <source>Configs</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
         <source>Mods</source>
         <source>Mods</source>
         <translation type="unfinished">Bản sửa đổi</translation>
         <translation type="unfinished">Bản sửa đổi</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
-        <source>Select files (configs, mods, maps, campaigns) to install...</source>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
+        <source>Gog files</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
+        <source>All files (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
+        <source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Replace config file?</source>
         <source>Replace config file?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
         <source>Do you want to replace %1?</source>
         <source>Do you want to replace %1?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
         <source>Download failed</source>
         <source>Download failed</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
         <source>Unable to download all files.
         <source>Unable to download all files.
 
 
 Encountered errors:
 Encountered errors:
@@ -474,40 +484,45 @@ Encountered errors:
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
         <source>
         <source>
 
 
 Install successfully downloaded?</source>
 Install successfully downloaded?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
+        <source>Installing chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
         <source>Installing mod %1</source>
         <source>Installing mod %1</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
         <source>Operation failed</source>
         <source>Operation failed</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
         <source>Encountered errors:
         <source>Encountered errors:
 </source>
 </source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
         <source>screenshots</source>
         <source>screenshots</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
         <source>Screenshot %1</source>
         <source>Screenshot %1</source>
         <translation>Hình ảnh %1</translation>
         <translation>Hình ảnh %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
         <source>Mod is incompatible</source>
         <source>Mod is incompatible</source>
         <translation>Bản sửa đổi này không tương thích</translation>
         <translation>Bản sửa đổi này không tương thích</translation>
     </message>
     </message>
@@ -611,7 +626,7 @@ Install successfully downloaded?</source>
 <context>
 <context>
     <name>CSettingsView</name>
     <name>CSettingsView</name>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
         <source>Off</source>
         <source>Off</source>
         <translation>Tắt</translation>
         <translation>Tắt</translation>
     </message>
     </message>
@@ -705,6 +720,11 @@ Install successfully downloaded?</source>
         <source>xBRZ x4</source>
         <source>xBRZ x4</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
+        <source>Use scalable fonts</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
     <message>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <location filename="../settingsView/csettingsview_moc.ui" line="138"/>
         <source>Online Lobby address</source>
         <source>Online Lobby address</source>
@@ -871,7 +891,7 @@ Install successfully downloaded?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
         <source>On</source>
         <source>On</source>
         <translation>Bật</translation>
         <translation>Bật</translation>
     </message>
     </message>
@@ -958,31 +978,67 @@ Toàn màn hình riêng biệt - Trò chơi chạy toàn màn hình và dùng đ
         <translation>Hiện thị giới thiệu</translation>
         <translation>Hiện thị giới thiệu</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
         <source>Active</source>
         <source>Active</source>
         <translation>Bật</translation>
         <translation>Bật</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
         <source>Disabled</source>
         <source>Disabled</source>
         <translation>Tắt</translation>
         <translation>Tắt</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
         <source>Enable</source>
         <source>Enable</source>
         <translation>Bật</translation>
         <translation>Bật</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
         <source>Not Installed</source>
         <source>Not Installed</source>
         <translation>Chưa cài đặt</translation>
         <translation>Chưa cài đặt</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
+        <location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
         <source>Install</source>
         <source>Install</source>
         <translation>Cài đặt</translation>
         <translation>Cài đặt</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>ChroniclesExtractor</name>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="48"/>
+        <source>File cannot opened</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>Invalid file selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="56"/>
+        <source>You have to select an gog installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="71"/>
+        <source>You have to select an chronicle installer file!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="87"/>
+        <source>Extracting error!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/chroniclesextractor.cpp" line="104"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="105"/>
+        <location filename="../modManager/chroniclesextractor.cpp" line="141"/>
+        <source>Heroes Chronicles</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>File size</name>
     <name>File size</name>
     <message>
     <message>
@@ -1199,110 +1255,99 @@ Offline installer consists of two parts, .exe and .bin. Make sure you download b
         <translation>In The Wake of Gods</translation>
         <translation>In The Wake of Gods</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Heroes III installation found!</source>
         <source>Heroes III installation found!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
         <source>Copy data to VCMI folder?</source>
         <source>Copy data to VCMI folder?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
         <source>Select %1 file...</source>
         <source>Select %1 file...</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
         <source>You have to select %1 file!</source>
         <source>You have to select %1 file!</source>
         <comment>param is file extension</comment>
         <comment>param is file extension</comment>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
         <source>GOG file (*.*)</source>
         <source>GOG file (*.*)</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
         <source>File selection</source>
         <source>File selection</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
         <source>File cannot be opened</source>
         <source>File cannot be opened</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
         <source>Invalid file selected</source>
         <source>Invalid file selected</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
         <source>GOG installer</source>
         <source>GOG installer</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
         <source>GOG data</source>
         <source>GOG data</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
-        <source>Stream error while extracting files!
-error reason: </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
-        <source>Not a supported Inno Setup installer!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
         <source>Extracting error!</source>
         <source>Extracting error!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>No Heroes III data!</source>
         <source>No Heroes III data!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
         <source>Selected files do not contain Heroes III data!</source>
         <source>Selected files do not contain Heroes III data!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Heroes III data not found!</source>
         <source>Heroes III data not found!</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
         <source>Failed to detect valid Heroes III data in chosen directory.
         <source>Failed to detect valid Heroes III data in chosen directory.
 Please select directory with installed Heroes III data.</source>
 Please select directory with installed Heroes III data.</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
         <source>Heroes III: HD Edition files are not supported by VCMI.
         <source>Heroes III: HD Edition files are not supported by VCMI.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
+        <location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
         <source>Unknown or unsupported Heroes III version found.
         <source>Unknown or unsupported Heroes III version found.
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
 Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
@@ -1316,6 +1361,25 @@ Please select directory with Heroes III: Complete Edition or Heroes III: Shadow
         <translation>Trình xem ảnh</translation>
         <translation>Trình xem ảnh</translation>
     </message>
     </message>
 </context>
 </context>
+<context>
+    <name>Innoextract</name>
+    <message>
+        <location filename="../innoextract.cpp" line="42"/>
+        <source>Stream error while extracting files!
+error reason: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="55"/>
+        <source>Not a supported Inno Setup installer!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../innoextract.cpp" line="58"/>
+        <source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
 <context>
     <name>Language</name>
     <name>Language</name>
     <message>
     <message>

+ 1 - 0
lib/GameSettings.cpp

@@ -40,6 +40,7 @@ const std::vector<GameSettings::SettingOption> GameSettings::settingProperties =
 		{EGameSettings::BANKS_SHOW_GUARDS_COMPOSITION,          "banks",     "showGuardsComposition"            },
 		{EGameSettings::BANKS_SHOW_GUARDS_COMPOSITION,          "banks",     "showGuardsComposition"            },
 		{EGameSettings::BONUSES_GLOBAL,                         "bonuses",   "global"                           },
 		{EGameSettings::BONUSES_GLOBAL,                         "bonuses",   "global"                           },
 		{EGameSettings::BONUSES_PER_HERO,                       "bonuses",   "perHero"                          },
 		{EGameSettings::BONUSES_PER_HERO,                       "bonuses",   "perHero"                          },
+		{EGameSettings::COMBAT_AREA_SHOT_CAN_TARGET_EMPTY_HEX,  "combat",    "areaShotCanTargetEmptyHex"        },
 		{EGameSettings::COMBAT_ATTACK_POINT_DAMAGE_FACTOR,      "combat",    "attackPointDamageFactor"          },
 		{EGameSettings::COMBAT_ATTACK_POINT_DAMAGE_FACTOR,      "combat",    "attackPointDamageFactor"          },
 		{EGameSettings::COMBAT_ATTACK_POINT_DAMAGE_FACTOR_CAP,  "combat",    "attackPointDamageFactorCap"       },
 		{EGameSettings::COMBAT_ATTACK_POINT_DAMAGE_FACTOR_CAP,  "combat",    "attackPointDamageFactorCap"       },
 		{EGameSettings::COMBAT_BAD_LUCK_DICE,                   "combat",    "badLuckDice"                      },
 		{EGameSettings::COMBAT_BAD_LUCK_DICE,                   "combat",    "badLuckDice"                      },

+ 1 - 0
lib/IGameSettings.h

@@ -18,6 +18,7 @@ enum class EGameSettings
 	BANKS_SHOW_GUARDS_COMPOSITION,
 	BANKS_SHOW_GUARDS_COMPOSITION,
 	BONUSES_GLOBAL,
 	BONUSES_GLOBAL,
 	BONUSES_PER_HERO,
 	BONUSES_PER_HERO,
+	COMBAT_AREA_SHOT_CAN_TARGET_EMPTY_HEX,
 	COMBAT_ATTACK_POINT_DAMAGE_FACTOR,
 	COMBAT_ATTACK_POINT_DAMAGE_FACTOR,
 	COMBAT_ATTACK_POINT_DAMAGE_FACTOR_CAP,
 	COMBAT_ATTACK_POINT_DAMAGE_FACTOR_CAP,
 	COMBAT_BAD_LUCK_DICE,
 	COMBAT_BAD_LUCK_DICE,

+ 50 - 6
lib/battle/CBattleInfoCallback.cpp

@@ -17,6 +17,7 @@
 #include "BattleInfo.h"
 #include "BattleInfo.h"
 #include "CObstacleInstance.h"
 #include "CObstacleInstance.h"
 #include "DamageCalculator.h"
 #include "DamageCalculator.h"
+#include "IGameSettings.h"
 #include "PossiblePlayerBattleAction.h"
 #include "PossiblePlayerBattleAction.h"
 #include "../entities/building/TownFortifications.h"
 #include "../entities/building/TownFortifications.h"
 #include "../spells/ObstacleCasterProxy.h"
 #include "../spells/ObstacleCasterProxy.h"
@@ -725,18 +726,49 @@ bool CBattleInfoCallback::battleCanShoot(const battle::Unit * attacker) const
 			|| attacker->hasBonusOfType(BonusType::FREE_SHOOTING));
 			|| attacker->hasBonusOfType(BonusType::FREE_SHOOTING));
 }
 }
 
 
+bool CBattleInfoCallback::battleCanTargetEmptyHex(const battle::Unit * attacker) const
+{
+	RETURN_IF_NOT_BATTLE(false);
+
+	if(!VLC->engineSettings()->getBoolean(EGameSettings::COMBAT_AREA_SHOT_CAN_TARGET_EMPTY_HEX))
+		return false;
+
+	if(attacker->hasBonusOfType(BonusType::SPELL_LIKE_ATTACK))
+	{
+		auto bonus = attacker->getBonus(Selector::type()(BonusType::SPELL_LIKE_ATTACK));
+		const CSpell * spell = bonus->subtype.as<SpellID>().toSpell();
+		spells::BattleCast cast(this, attacker, spells::Mode::SPELL_LIKE_ATTACK, spell);
+		BattleHex dummySpellTarget = BattleHex(50); //check arbitrary hex for general spell range since currently there is no general way to access amount of hexes
+
+		if(spell->battleMechanics(&cast)->rangeInHexes(dummySpellTarget).size() > 1)
+		{
+			return true;
+		}
+	}
+
+	return false;
+}
+
 bool CBattleInfoCallback::battleCanShoot(const battle::Unit * attacker, BattleHex dest) const
 bool CBattleInfoCallback::battleCanShoot(const battle::Unit * attacker, BattleHex dest) const
 {
 {
 	RETURN_IF_NOT_BATTLE(false);
 	RETURN_IF_NOT_BATTLE(false);
 
 
 	const battle::Unit * defender = battleGetUnitByPos(dest);
 	const battle::Unit * defender = battleGetUnitByPos(dest);
-	if(!attacker || !defender)
+	if(!attacker)
 		return false;
 		return false;
 
 
-	if(defender->hasBonusOfType(BonusType::INVINCIBLE))
-		return false;
+	bool emptyHexAreaAttack = battleCanTargetEmptyHex(attacker);
+
+	if(!emptyHexAreaAttack)
+	{
+		if(!defender)
+			return false;
 
 
-	if(battleMatchOwner(attacker, defender) && defender->alive())
+		if(defender->hasBonusOfType(BonusType::INVINCIBLE))
+			return false;
+	}
+
+	if(emptyHexAreaAttack || (battleMatchOwner(attacker, defender) && defender->alive()))
 	{
 	{
 		if(battleCanShoot(attacker))
 		if(battleCanShoot(attacker))
 		{
 		{
@@ -747,7 +779,11 @@ bool CBattleInfoCallback::battleCanShoot(const battle::Unit * attacker, BattleHe
 			}
 			}
 
 
 			int shootingRange = limitedRangeBonus->val;
 			int shootingRange = limitedRangeBonus->val;
-			return isEnemyUnitWithinSpecifiedRange(attacker->getPosition(), defender, shootingRange);
+
+			if(defender)
+				return isEnemyUnitWithinSpecifiedRange(attacker->getPosition(), defender, shootingRange);
+			else
+				return isHexWithinSpecifiedRange(attacker->getPosition(), dest, shootingRange);
 		}
 		}
 	}
 	}
 
 
@@ -794,7 +830,7 @@ DamageEstimation CBattleInfoCallback::battleEstimateDamage(const BattleAttackInf
 	if (!bai.defender->ableToRetaliate())
 	if (!bai.defender->ableToRetaliate())
 		return ret;
 		return ret;
 
 
-	if (bai.attacker->hasBonusOfType(BonusType::BLOCKS_RETALIATION))
+	if (bai.attacker->hasBonusOfType(BonusType::BLOCKS_RETALIATION) || bai.attacker->hasBonusOfType(BonusType::INVINCIBLE))
 		return ret;
 		return ret;
 
 
 	//TODO: rewrite using boost::numeric::interval
 	//TODO: rewrite using boost::numeric::interval
@@ -1593,6 +1629,14 @@ bool CBattleInfoCallback::isEnemyUnitWithinSpecifiedRange(BattleHex attackerPosi
 	return false;
 	return false;
 }
 }
 
 
+bool CBattleInfoCallback::isHexWithinSpecifiedRange(BattleHex attackerPosition, BattleHex targetPosition, unsigned int range) const
+{
+	if(BattleHex::getDistance(attackerPosition, targetPosition) <= range)
+		return true;
+
+	return false;
+}
+
 BattleHex CBattleInfoCallback::wallPartToBattleHex(EWallPart part) const
 BattleHex CBattleInfoCallback::wallPartToBattleHex(EWallPart part) const
 {
 {
 	RETURN_IF_NOT_BATTLE(BattleHex::INVALID);
 	RETURN_IF_NOT_BATTLE(BattleHex::INVALID);

+ 2 - 0
lib/battle/CBattleInfoCallback.h

@@ -86,9 +86,11 @@ public:
 	ReachabilityInfo::TDistances battleGetDistances(const battle::Unit * unit, BattleHex assumedPosition) const;
 	ReachabilityInfo::TDistances battleGetDistances(const battle::Unit * unit, BattleHex assumedPosition) const;
 	std::set<BattleHex> battleGetAttackedHexes(const battle::Unit * attacker, BattleHex destinationTile, BattleHex attackerPos = BattleHex::INVALID) const;
 	std::set<BattleHex> battleGetAttackedHexes(const battle::Unit * attacker, BattleHex destinationTile, BattleHex attackerPos = BattleHex::INVALID) const;
 	bool isEnemyUnitWithinSpecifiedRange(BattleHex attackerPosition, const battle::Unit * defenderUnit, unsigned int range) const;
 	bool isEnemyUnitWithinSpecifiedRange(BattleHex attackerPosition, const battle::Unit * defenderUnit, unsigned int range) const;
+	bool isHexWithinSpecifiedRange(BattleHex attackerPosition, BattleHex targetPosition, unsigned int range) const;
 
 
 	std::pair< std::vector<BattleHex>, int > getPath(BattleHex start, BattleHex dest, const battle::Unit * stack) const;
 	std::pair< std::vector<BattleHex>, int > getPath(BattleHex start, BattleHex dest, const battle::Unit * stack) const;
 
 
+	bool battleCanTargetEmptyHex(const battle::Unit * attacker) const; //determines of stack with given ID can target empty hex to attack - currently used only for SPELL_LIKE_ATTACK shooting
 	bool battleCanAttack(const battle::Unit * stack, const battle::Unit * target, BattleHex dest) const; //determines if stack with given ID can attack target at the selected destination
 	bool battleCanAttack(const battle::Unit * stack, const battle::Unit * target, BattleHex dest) const; //determines if stack with given ID can attack target at the selected destination
 	bool battleCanShoot(const battle::Unit * attacker, BattleHex dest) const; //determines if stack with given ID shoot at the selected destination
 	bool battleCanShoot(const battle::Unit * attacker, BattleHex dest) const; //determines if stack with given ID shoot at the selected destination
 	bool battleCanShoot(const battle::Unit * attacker) const; //determines if stack with given ID shoot in principle
 	bool battleCanShoot(const battle::Unit * attacker) const; //determines if stack with given ID shoot in principle

+ 12 - 3
lib/campaign/CampaignState.cpp

@@ -37,8 +37,11 @@ CampaignRegions::RegionDescription CampaignRegions::RegionDescription::fromJson(
 {
 {
 	CampaignRegions::RegionDescription rd;
 	CampaignRegions::RegionDescription rd;
 	rd.infix = node["infix"].String();
 	rd.infix = node["infix"].String();
-	rd.xpos = static_cast<int>(node["x"].Float());
-	rd.ypos = static_cast<int>(node["y"].Float());
+	rd.pos = Point(static_cast<int>(node["x"].Float()), static_cast<int>(node["y"].Float()));
+	if(!node["labelPos"].isNull())
+		rd.labelPos = Point(static_cast<int>(node["labelPos"]["x"].Float()), static_cast<int>(node["labelPos"]["y"].Float()));
+	else
+		rd.labelPos = std::nullopt;
 	return rd;
 	return rd;
 }
 }
 
 
@@ -80,7 +83,13 @@ ImagePath CampaignRegions::getBackgroundName() const
 Point CampaignRegions::getPosition(CampaignScenarioID which) const
 Point CampaignRegions::getPosition(CampaignScenarioID which) const
 {
 {
 	auto const & region = regions[which.getNum()];
 	auto const & region = regions[which.getNum()];
-	return Point(region.xpos, region.ypos);
+	return region.pos;
+}
+
+std::optional<Point> CampaignRegions::getLabelPosition(CampaignScenarioID which) const
+{
+	auto const & region = regions[which.getNum()];
+	return region.labelPos;
 }
 }
 
 
 ImagePath CampaignRegions::getNameFor(CampaignScenarioID which, int colorIndex, std::string type) const
 ImagePath CampaignRegions::getNameFor(CampaignScenarioID which, int colorIndex, std::string type) const

+ 14 - 5
lib/campaign/CampaignState.h

@@ -16,6 +16,7 @@
 #include "CampaignConstants.h"
 #include "CampaignConstants.h"
 #include "CampaignScenarioPrologEpilog.h"
 #include "CampaignScenarioPrologEpilog.h"
 #include "../gameState/HighScore.h"
 #include "../gameState/HighScore.h"
+#include "../Point.h"
 
 
 VCMI_LIB_NAMESPACE_BEGIN
 VCMI_LIB_NAMESPACE_BEGIN
 
 
@@ -27,7 +28,6 @@ class CMap;
 class CMapHeader;
 class CMapHeader;
 class CMapInfo;
 class CMapInfo;
 class JsonNode;
 class JsonNode;
-class Point;
 class IGameCallback;
 class IGameCallback;
 
 
 class DLL_LINKAGE CampaignRegions
 class DLL_LINKAGE CampaignRegions
@@ -40,14 +40,22 @@ class DLL_LINKAGE CampaignRegions
 	struct DLL_LINKAGE RegionDescription
 	struct DLL_LINKAGE RegionDescription
 	{
 	{
 		std::string infix;
 		std::string infix;
-		int xpos;
-		int ypos;
+		Point pos;
+		std::optional<Point> labelPos;
 
 
 		template <typename Handler> void serialize(Handler &h)
 		template <typename Handler> void serialize(Handler &h)
 		{
 		{
 			h & infix;
 			h & infix;
-			h & xpos;
-			h & ypos;
+			if (h.version >= Handler::Version::REGION_LABEL)
+			{
+				h & pos;
+				h & labelPos;
+			}
+			else
+			{
+				h & pos.x;
+				h & pos.y;
+			}
 		}
 		}
 
 
 		static CampaignRegions::RegionDescription fromJson(const JsonNode & node);
 		static CampaignRegions::RegionDescription fromJson(const JsonNode & node);
@@ -60,6 +68,7 @@ class DLL_LINKAGE CampaignRegions
 public:
 public:
 	ImagePath getBackgroundName() const;
 	ImagePath getBackgroundName() const;
 	Point getPosition(CampaignScenarioID which) const;
 	Point getPosition(CampaignScenarioID which) const;
+	std::optional<Point> getLabelPosition(CampaignScenarioID which) const;
 	ImagePath getAvailableName(CampaignScenarioID which, int color) const;
 	ImagePath getAvailableName(CampaignScenarioID which, int color) const;
 	ImagePath getSelectedName(CampaignScenarioID which, int color) const;
 	ImagePath getSelectedName(CampaignScenarioID which, int color) const;
 	ImagePath getConqueredName(CampaignScenarioID which, int color) const;
 	ImagePath getConqueredName(CampaignScenarioID which, int color) const;

+ 2 - 1
lib/serializer/ESerializationVersion.h

@@ -60,7 +60,8 @@ enum class ESerializationVersion : int32_t
 	PER_MAP_GAME_SETTINGS, // 861 - game settings are now stored per-map
 	PER_MAP_GAME_SETTINGS, // 861 - game settings are now stored per-map
 	CAMPAIGN_OUTRO_SUPPORT, // 862 - support for campaign outro video
 	CAMPAIGN_OUTRO_SUPPORT, // 862 - support for campaign outro video
 	REWARDABLE_BANKS, // 863 - team state contains list of scouted objects, coast visitable rewardable objects
 	REWARDABLE_BANKS, // 863 - team state contains list of scouted objects, coast visitable rewardable objects
-	EVENT_OBJECTS_DELETION, //864 - allow events to remove map objects
+	REGION_LABEL, // 864 - labels for campaign regions
+	EVENT_OBJECTS_DELETION, //865 - allow events to remove map objects
 
 
 	CURRENT = EVENT_OBJECTS_DELETION
 	CURRENT = EVENT_OBJECTS_DELETION
 };
 };

+ 1 - 1
lib/spells/BattleSpellMechanics.cpp

@@ -231,7 +231,7 @@ bool BattleSpellMechanics::canBeCastAt(const Target & target, Problem & problem)
 		if(mainTarget && mainTarget == caster)
 		if(mainTarget && mainTarget == caster)
 			return false; // can't cast on self
 			return false; // can't cast on self
 
 
-		if(mainTarget && mainTarget->hasBonusOfType(BonusType::INVINCIBLE))
+		if(mainTarget && mainTarget->hasBonusOfType(BonusType::INVINCIBLE) && !getSpell()->getPositiveness())
 			return false;
 			return false;
 	}
 	}
 
 

+ 1 - 2
lib/spells/effects/UnitEffect.cpp

@@ -164,10 +164,9 @@ EffectTarget UnitEffect::transformTargetByRange(const Mechanics * m, const Targe
 
 
 	if(m->alwaysHitFirstTarget())
 	if(m->alwaysHitFirstTarget())
 	{
 	{
+		//TODO: examine if adjustments needed related to INVINCIBLE bonus
 		if(!aimPoint.empty() && aimPoint.front().unitValue)
 		if(!aimPoint.empty() && aimPoint.front().unitValue)
 			targets.insert(aimPoint.front().unitValue);
 			targets.insert(aimPoint.front().unitValue);
-		else
-			logGlobal->error("Spell-like attack with no primary target.");
 	}
 	}
 
 
 	EffectTarget effectTarget;
 	EffectTarget effectTarget;

+ 50 - 30
mapeditor/translation/chinese.ts

@@ -42,7 +42,7 @@
         <translation>移除</translation>
         <translation>移除</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mapsettings/eventsettings.cpp" line="118"/>
+        <location filename="../mapsettings/eventsettings.cpp" line="123"/>
         <source>New event</source>
         <source>New event</source>
         <translation>新事件</translation>
         <translation>新事件</translation>
     </message>
     </message>
@@ -359,7 +359,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1051"/>
         <location filename="../mainwindow.ui" line="1051"/>
-        <location filename="../mainwindow.cpp" line="822"/>
+        <location filename="../mainwindow.cpp" line="834"/>
         <source>View underground</source>
         <source>View underground</source>
         <translation>查看地下</translation>
         <translation>查看地下</translation>
     </message>
     </message>
@@ -441,9 +441,9 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1205"/>
         <location filename="../mainwindow.ui" line="1205"/>
-        <location filename="../mainwindow.cpp" line="1093"/>
-        <location filename="../mainwindow.cpp" line="1097"/>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Update appearance</source>
         <source>Update appearance</source>
         <translation>更新外观</translation>
         <translation>更新外观</translation>
     </message>
     </message>
@@ -594,72 +594,72 @@
         <translation>所有支持的地图类型(*.vmap *.h3m);;VCMI地图(*.vmap);;英雄无敌3地图(*.h3m)</translation>
         <translation>所有支持的地图类型(*.vmap *.h3m);;VCMI地图(*.vmap);;英雄无敌3地图(*.h3m)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>Save map</source>
         <source>Save map</source>
         <translation>保存地图</translation>
         <translation>保存地图</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>VCMI maps (*.vmap)</source>
         <source>VCMI maps (*.vmap)</source>
         <translation>VCMI地图(*.vmap)</translation>
         <translation>VCMI地图(*.vmap)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="664"/>
+        <location filename="../mainwindow.cpp" line="676"/>
         <source>Type</source>
         <source>Type</source>
         <translation>类型</translation>
         <translation>类型</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="826"/>
+        <location filename="../mainwindow.cpp" line="838"/>
         <source>View surface</source>
         <source>View surface</source>
         <translation>查看地上</translation>
         <translation>查看地上</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1093"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
         <source>No objects selected</source>
         <source>No objects selected</source>
         <translation>未选择任何物体</translation>
         <translation>未选择任何物体</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1097"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
         <source>This operation is irreversible. Do you want to continue?</source>
         <source>This operation is irreversible. Do you want to continue?</source>
         <translation>此操作无法被撤销,你确定要继续么?</translation>
         <translation>此操作无法被撤销,你确定要继续么?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Errors occurred. %1 objects were not updated</source>
         <source>Errors occurred. %1 objects were not updated</source>
         <translation>发生错误!%1 物体未完成更新</translation>
         <translation>发生错误!%1 物体未完成更新</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1194"/>
+        <location filename="../mainwindow.cpp" line="1206"/>
         <source>Save to image</source>
         <source>Save to image</source>
         <translation>保存为图片</translation>
         <translation>保存为图片</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1213"/>
+        <location filename="../mainwindow.cpp" line="1225"/>
         <source>Select maps to convert</source>
         <source>Select maps to convert</source>
         <translation>选择待转换的地图</translation>
         <translation>选择待转换的地图</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1215"/>
+        <location filename="../mainwindow.cpp" line="1227"/>
         <source>HoMM3 maps(*.h3m)</source>
         <source>HoMM3 maps(*.h3m)</source>
         <translation>英雄无敌3地图文件(*.h3m)</translation>
         <translation>英雄无敌3地图文件(*.h3m)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1219"/>
+        <location filename="../mainwindow.cpp" line="1231"/>
         <source>Choose directory to save converted maps</source>
         <source>Choose directory to save converted maps</source>
         <translation>选择保存转换地图的目录</translation>
         <translation>选择保存转换地图的目录</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Operation completed</source>
         <source>Operation completed</source>
         <translation>操作完成</translation>
         <translation>操作完成</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Successfully converted %1 maps</source>
         <source>Successfully converted %1 maps</source>
         <translation>成功转换 %1 地图</translation>
         <translation>成功转换 %1 地图</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1236"/>
+        <location filename="../mainwindow.cpp" line="1248"/>
         <source>Failed to convert the map. Abort operation</source>
         <source>Failed to convert the map. Abort operation</source>
         <translation>转换地图失败,操作终止</translation>
         <translation>转换地图失败,操作终止</translation>
     </message>
     </message>
@@ -1574,12 +1574,12 @@
         <translation>确定</translation>
         <translation>确定</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="163"/>
+        <location filename="../inspector/towneventdialog.cpp" line="170"/>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <translation>%1级生物 / 升级后的%1级生物</translation>
         <translation>%1级生物 / 升级后的%1级生物</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="205"/>
+        <location filename="../inspector/towneventdialog.cpp" line="212"/>
         <source>Day %1 - %2</source>
         <source>Day %1 - %2</source>
         <translation>%1 - %2 日</translation>
         <translation>%1 - %2 日</translation>
     </message>
     </message>
@@ -1951,7 +1951,7 @@
         <translation>玩家</translation>
         <translation>玩家</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="751"/>
+        <location filename="../windownewmap.ui" line="858"/>
         <source>0</source>
         <source>0</source>
         <translation>0</translation>
         <translation>0</translation>
     </message>
     </message>
@@ -2050,42 +2050,62 @@
         <translation>岛屿</translation>
         <translation>岛屿</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="716"/>
+        <location filename="../windownewmap.ui" line="713"/>
+        <source>Roads</source>
+        <translation>道路</translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="728"/>
+        <source>Dirt</source>
+        <translation>泥土</translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="748"/>
+        <source>Gravel</source>
+        <translation>砂砾</translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="768"/>
+        <source>Cobblestone</source>
+        <translation>鹅卵石</translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="813"/>
         <source>Template</source>
         <source>Template</source>
         <translation>模版</translation>
         <translation>模版</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="764"/>
+        <location filename="../windownewmap.ui" line="845"/>
         <source>Custom seed</source>
         <source>Custom seed</source>
         <translation>自定义种子</translation>
         <translation>自定义种子</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="778"/>
+        <location filename="../windownewmap.ui" line="875"/>
         <source>Generate random map</source>
         <source>Generate random map</source>
         <translation>生成随机地图</translation>
         <translation>生成随机地图</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="812"/>
+        <location filename="../windownewmap.ui" line="909"/>
         <source>Ok</source>
         <source>Ok</source>
         <translation>确定</translation>
         <translation>确定</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="831"/>
+        <location filename="../windownewmap.ui" line="928"/>
         <source>Cancel</source>
         <source>Cancel</source>
         <translation>取消</translation>
         <translation>取消</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template</source>
         <source>No template</source>
         <translation>缺少模版</translation>
         <translation>缺少模版</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <translation>未指定任一模版作为参数,随机地图无法生成。</translation>
         <translation>未指定任一模版作为参数,随机地图无法生成。</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="268"/>
+        <location filename="../windownewmap.cpp" line="276"/>
         <source>RMG failure</source>
         <source>RMG failure</source>
         <translation>随机地图生成失败</translation>
         <translation>随机地图生成失败</translation>
     </message>
     </message>

+ 50 - 30
mapeditor/translation/czech.ts

@@ -42,7 +42,7 @@
         <translation>Odebrat</translation>
         <translation>Odebrat</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mapsettings/eventsettings.cpp" line="118"/>
+        <location filename="../mapsettings/eventsettings.cpp" line="123"/>
         <source>New event</source>
         <source>New event</source>
         <translation>Nová událost</translation>
         <translation>Nová událost</translation>
     </message>
     </message>
@@ -359,7 +359,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1051"/>
         <location filename="../mainwindow.ui" line="1051"/>
-        <location filename="../mainwindow.cpp" line="822"/>
+        <location filename="../mainwindow.cpp" line="834"/>
         <source>View underground</source>
         <source>View underground</source>
         <translation>Zobrazit podzemí</translation>
         <translation>Zobrazit podzemí</translation>
     </message>
     </message>
@@ -441,9 +441,9 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1205"/>
         <location filename="../mainwindow.ui" line="1205"/>
-        <location filename="../mainwindow.cpp" line="1093"/>
-        <location filename="../mainwindow.cpp" line="1097"/>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Update appearance</source>
         <source>Update appearance</source>
         <translation>Aktualizovat vzhled</translation>
         <translation>Aktualizovat vzhled</translation>
     </message>
     </message>
@@ -594,72 +594,72 @@
         <translation>Všechny podporované mapy (*.vmap *.h3m);; Mapy VCMI(*.vmap);;Mapy HoMM3(*.h3m)</translation>
         <translation>Všechny podporované mapy (*.vmap *.h3m);; Mapy VCMI(*.vmap);;Mapy HoMM3(*.h3m)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>Save map</source>
         <source>Save map</source>
         <translation>Uložit mapu</translation>
         <translation>Uložit mapu</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>VCMI maps (*.vmap)</source>
         <source>VCMI maps (*.vmap)</source>
         <translation>Mapy VCMI (*.vmap)</translation>
         <translation>Mapy VCMI (*.vmap)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="664"/>
+        <location filename="../mainwindow.cpp" line="676"/>
         <source>Type</source>
         <source>Type</source>
         <translation>Druh</translation>
         <translation>Druh</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="826"/>
+        <location filename="../mainwindow.cpp" line="838"/>
         <source>View surface</source>
         <source>View surface</source>
         <translation>Zobrazit povrch</translation>
         <translation>Zobrazit povrch</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1093"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
         <source>No objects selected</source>
         <source>No objects selected</source>
         <translation>Nejsou vybrány žádné objekty</translation>
         <translation>Nejsou vybrány žádné objekty</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1097"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
         <source>This operation is irreversible. Do you want to continue?</source>
         <source>This operation is irreversible. Do you want to continue?</source>
         <translation>Tento úkon je nezvratný. Chcete pokračovat?</translation>
         <translation>Tento úkon je nezvratný. Chcete pokračovat?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Errors occurred. %1 objects were not updated</source>
         <source>Errors occurred. %1 objects were not updated</source>
         <translation>Nastaly chyby. Nebylo aktualizováno %1 objektů</translation>
         <translation>Nastaly chyby. Nebylo aktualizováno %1 objektů</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1194"/>
+        <location filename="../mainwindow.cpp" line="1206"/>
         <source>Save to image</source>
         <source>Save to image</source>
         <translation>Uložit do obrázku</translation>
         <translation>Uložit do obrázku</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1213"/>
+        <location filename="../mainwindow.cpp" line="1225"/>
         <source>Select maps to convert</source>
         <source>Select maps to convert</source>
         <translation>Vyberte mapy pro převod</translation>
         <translation>Vyberte mapy pro převod</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1215"/>
+        <location filename="../mainwindow.cpp" line="1227"/>
         <source>HoMM3 maps(*.h3m)</source>
         <source>HoMM3 maps(*.h3m)</source>
         <translation>Mapy HoMM3 (*.h3m)</translation>
         <translation>Mapy HoMM3 (*.h3m)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1219"/>
+        <location filename="../mainwindow.cpp" line="1231"/>
         <source>Choose directory to save converted maps</source>
         <source>Choose directory to save converted maps</source>
         <translation>Vyberte složku pro uložení převedených map</translation>
         <translation>Vyberte složku pro uložení převedených map</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Operation completed</source>
         <source>Operation completed</source>
         <translation>Operace dokončena</translation>
         <translation>Operace dokončena</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Successfully converted %1 maps</source>
         <source>Successfully converted %1 maps</source>
         <translation>Úspěšně převedeno %1 map</translation>
         <translation>Úspěšně převedeno %1 map</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1236"/>
+        <location filename="../mainwindow.cpp" line="1248"/>
         <source>Failed to convert the map. Abort operation</source>
         <source>Failed to convert the map. Abort operation</source>
         <translation>Převod map selhal. Úkon zrušen</translation>
         <translation>Převod map selhal. Úkon zrušen</translation>
     </message>
     </message>
@@ -1574,12 +1574,12 @@
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="163"/>
+        <location filename="../inspector/towneventdialog.cpp" line="170"/>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="205"/>
+        <location filename="../inspector/towneventdialog.cpp" line="212"/>
         <source>Day %1 - %2</source>
         <source>Day %1 - %2</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -1951,7 +1951,7 @@
         <translation>Hráči</translation>
         <translation>Hráči</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="751"/>
+        <location filename="../windownewmap.ui" line="858"/>
         <source>0</source>
         <source>0</source>
         <translation>0</translation>
         <translation>0</translation>
     </message>
     </message>
@@ -2050,42 +2050,62 @@
         <translation>Ostrovy</translation>
         <translation>Ostrovy</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="716"/>
+        <location filename="../windownewmap.ui" line="713"/>
+        <source>Roads</source>
+        <translation type="unfinished">Cesty</translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="728"/>
+        <source>Dirt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="748"/>
+        <source>Gravel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="768"/>
+        <source>Cobblestone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="813"/>
         <source>Template</source>
         <source>Template</source>
         <translation>Šablona</translation>
         <translation>Šablona</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="764"/>
+        <location filename="../windownewmap.ui" line="845"/>
         <source>Custom seed</source>
         <source>Custom seed</source>
         <translation>Vlastní semínko</translation>
         <translation>Vlastní semínko</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="778"/>
+        <location filename="../windownewmap.ui" line="875"/>
         <source>Generate random map</source>
         <source>Generate random map</source>
         <translation>Vygenerovat náhodnou mapu</translation>
         <translation>Vygenerovat náhodnou mapu</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="812"/>
+        <location filename="../windownewmap.ui" line="909"/>
         <source>Ok</source>
         <source>Ok</source>
         <translation>Dobře</translation>
         <translation>Dobře</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="831"/>
+        <location filename="../windownewmap.ui" line="928"/>
         <source>Cancel</source>
         <source>Cancel</source>
         <translation>Zrušit</translation>
         <translation>Zrušit</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template</source>
         <source>No template</source>
         <translation>Bez šablony</translation>
         <translation>Bez šablony</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <translation>Žádná šablona pro vybrané parametry. Náhodná mapa nemůže být vygenerována.</translation>
         <translation>Žádná šablona pro vybrané parametry. Náhodná mapa nemůže být vygenerována.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="268"/>
+        <location filename="../windownewmap.cpp" line="276"/>
         <source>RMG failure</source>
         <source>RMG failure</source>
         <translation>Chyba RMG</translation>
         <translation>Chyba RMG</translation>
     </message>
     </message>

+ 50 - 30
mapeditor/translation/english.ts

@@ -42,7 +42,7 @@
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mapsettings/eventsettings.cpp" line="118"/>
+        <location filename="../mapsettings/eventsettings.cpp" line="123"/>
         <source>New event</source>
         <source>New event</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -359,7 +359,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1051"/>
         <location filename="../mainwindow.ui" line="1051"/>
-        <location filename="../mainwindow.cpp" line="822"/>
+        <location filename="../mainwindow.cpp" line="834"/>
         <source>View underground</source>
         <source>View underground</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -441,9 +441,9 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1205"/>
         <location filename="../mainwindow.ui" line="1205"/>
-        <location filename="../mainwindow.cpp" line="1093"/>
-        <location filename="../mainwindow.cpp" line="1097"/>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Update appearance</source>
         <source>Update appearance</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -594,72 +594,72 @@
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>Save map</source>
         <source>Save map</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>VCMI maps (*.vmap)</source>
         <source>VCMI maps (*.vmap)</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="664"/>
+        <location filename="../mainwindow.cpp" line="676"/>
         <source>Type</source>
         <source>Type</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="826"/>
+        <location filename="../mainwindow.cpp" line="838"/>
         <source>View surface</source>
         <source>View surface</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1093"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
         <source>No objects selected</source>
         <source>No objects selected</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1097"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
         <source>This operation is irreversible. Do you want to continue?</source>
         <source>This operation is irreversible. Do you want to continue?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Errors occurred. %1 objects were not updated</source>
         <source>Errors occurred. %1 objects were not updated</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1194"/>
+        <location filename="../mainwindow.cpp" line="1206"/>
         <source>Save to image</source>
         <source>Save to image</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1213"/>
+        <location filename="../mainwindow.cpp" line="1225"/>
         <source>Select maps to convert</source>
         <source>Select maps to convert</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1215"/>
+        <location filename="../mainwindow.cpp" line="1227"/>
         <source>HoMM3 maps(*.h3m)</source>
         <source>HoMM3 maps(*.h3m)</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1219"/>
+        <location filename="../mainwindow.cpp" line="1231"/>
         <source>Choose directory to save converted maps</source>
         <source>Choose directory to save converted maps</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Operation completed</source>
         <source>Operation completed</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Successfully converted %1 maps</source>
         <source>Successfully converted %1 maps</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1236"/>
+        <location filename="../mainwindow.cpp" line="1248"/>
         <source>Failed to convert the map. Abort operation</source>
         <source>Failed to convert the map. Abort operation</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -1574,12 +1574,12 @@
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="163"/>
+        <location filename="../inspector/towneventdialog.cpp" line="170"/>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="205"/>
+        <location filename="../inspector/towneventdialog.cpp" line="212"/>
         <source>Day %1 - %2</source>
         <source>Day %1 - %2</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -1951,7 +1951,7 @@
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="751"/>
+        <location filename="../windownewmap.ui" line="858"/>
         <source>0</source>
         <source>0</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -2050,42 +2050,62 @@
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="716"/>
+        <location filename="../windownewmap.ui" line="713"/>
+        <source>Roads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="728"/>
+        <source>Dirt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="748"/>
+        <source>Gravel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="768"/>
+        <source>Cobblestone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="813"/>
         <source>Template</source>
         <source>Template</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="764"/>
+        <location filename="../windownewmap.ui" line="845"/>
         <source>Custom seed</source>
         <source>Custom seed</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="778"/>
+        <location filename="../windownewmap.ui" line="875"/>
         <source>Generate random map</source>
         <source>Generate random map</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="812"/>
+        <location filename="../windownewmap.ui" line="909"/>
         <source>Ok</source>
         <source>Ok</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="831"/>
+        <location filename="../windownewmap.ui" line="928"/>
         <source>Cancel</source>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template</source>
         <source>No template</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="268"/>
+        <location filename="../windownewmap.cpp" line="276"/>
         <source>RMG failure</source>
         <source>RMG failure</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>

+ 52 - 32
mapeditor/translation/french.ts

@@ -42,7 +42,7 @@
         <translation>Supprimer</translation>
         <translation>Supprimer</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mapsettings/eventsettings.cpp" line="118"/>
+        <location filename="../mapsettings/eventsettings.cpp" line="123"/>
         <source>New event</source>
         <source>New event</source>
         <translation>Nouvel évènement</translation>
         <translation>Nouvel évènement</translation>
     </message>
     </message>
@@ -359,7 +359,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1051"/>
         <location filename="../mainwindow.ui" line="1051"/>
-        <location filename="../mainwindow.cpp" line="822"/>
+        <location filename="../mainwindow.cpp" line="834"/>
         <source>View underground</source>
         <source>View underground</source>
         <translation>Voir le sous-sol</translation>
         <translation>Voir le sous-sol</translation>
     </message>
     </message>
@@ -441,9 +441,9 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1205"/>
         <location filename="../mainwindow.ui" line="1205"/>
-        <location filename="../mainwindow.cpp" line="1093"/>
-        <location filename="../mainwindow.cpp" line="1097"/>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Update appearance</source>
         <source>Update appearance</source>
         <translation>Mettre à jour l&apos;apparence</translation>
         <translation>Mettre à jour l&apos;apparence</translation>
     </message>
     </message>
@@ -594,72 +594,72 @@
         <translation>Toutes les cartes prises en charge (*.vmap *.h3m);;Cartes VCMI (*.vmap);;Cartes HoMM3 (*.h3m)</translation>
         <translation>Toutes les cartes prises en charge (*.vmap *.h3m);;Cartes VCMI (*.vmap);;Cartes HoMM3 (*.h3m)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>Save map</source>
         <source>Save map</source>
         <translation>Enregistrer la carte</translation>
         <translation>Enregistrer la carte</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>VCMI maps (*.vmap)</source>
         <source>VCMI maps (*.vmap)</source>
         <translation>Cartes VCMI (*.vmap)</translation>
         <translation>Cartes VCMI (*.vmap)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="664"/>
+        <location filename="../mainwindow.cpp" line="676"/>
         <source>Type</source>
         <source>Type</source>
         <translation>Type</translation>
         <translation>Type</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="826"/>
+        <location filename="../mainwindow.cpp" line="838"/>
         <source>View surface</source>
         <source>View surface</source>
         <translation>Afficher la surface</translation>
         <translation>Afficher la surface</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1093"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
         <source>No objects selected</source>
         <source>No objects selected</source>
         <translation>Pas d&apos;objets sélectionnés</translation>
         <translation>Pas d&apos;objets sélectionnés</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1097"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
         <source>This operation is irreversible. Do you want to continue?</source>
         <source>This operation is irreversible. Do you want to continue?</source>
         <translation>Cette opération est irreversible. Voulez-vous continuer ?</translation>
         <translation>Cette opération est irreversible. Voulez-vous continuer ?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Errors occurred. %1 objects were not updated</source>
         <source>Errors occurred. %1 objects were not updated</source>
         <translation>Erreur rencontrée. %1 objets n&apos;ont pas étés mis à jour</translation>
         <translation>Erreur rencontrée. %1 objets n&apos;ont pas étés mis à jour</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1194"/>
+        <location filename="../mainwindow.cpp" line="1206"/>
         <source>Save to image</source>
         <source>Save to image</source>
         <translation>Sauvegarder en tant qu&apos;image</translation>
         <translation>Sauvegarder en tant qu&apos;image</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1213"/>
+        <location filename="../mainwindow.cpp" line="1225"/>
         <source>Select maps to convert</source>
         <source>Select maps to convert</source>
         <translation>Sélectionner les cartes à convertir</translation>
         <translation>Sélectionner les cartes à convertir</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1215"/>
+        <location filename="../mainwindow.cpp" line="1227"/>
         <source>HoMM3 maps(*.h3m)</source>
         <source>HoMM3 maps(*.h3m)</source>
         <translation>Cartes HoMM3(*.h3m)</translation>
         <translation>Cartes HoMM3(*.h3m)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1219"/>
+        <location filename="../mainwindow.cpp" line="1231"/>
         <source>Choose directory to save converted maps</source>
         <source>Choose directory to save converted maps</source>
         <translation>Sélectionner le dossier ou sauvegarder les cartes converties</translation>
         <translation>Sélectionner le dossier ou sauvegarder les cartes converties</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Operation completed</source>
         <source>Operation completed</source>
         <translation>Opération terminée</translation>
         <translation>Opération terminée</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Successfully converted %1 maps</source>
         <source>Successfully converted %1 maps</source>
         <translation>Conversion éffectuée avec succès des %1 cartes</translation>
         <translation>Conversion éffectuée avec succès des %1 cartes</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1236"/>
+        <location filename="../mainwindow.cpp" line="1248"/>
         <source>Failed to convert the map. Abort operation</source>
         <source>Failed to convert the map. Abort operation</source>
         <translation>Erreur de conversion de carte. Opération annulée</translation>
         <translation>Erreur de conversion de carte. Opération annulée</translation>
     </message>
     </message>
@@ -1574,12 +1574,12 @@
         <translation>OK</translation>
         <translation>OK</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="163"/>
+        <location filename="../inspector/towneventdialog.cpp" line="170"/>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <translation>Créature niveau %1 / Créature niveau %1 Augmenté</translation>
         <translation>Créature niveau %1 / Créature niveau %1 Augmenté</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="205"/>
+        <location filename="../inspector/towneventdialog.cpp" line="212"/>
         <source>Day %1 - %2</source>
         <source>Day %1 - %2</source>
         <translation>Jour %1 - %2</translation>
         <translation>Jour %1 - %2</translation>
     </message>
     </message>
@@ -1649,8 +1649,8 @@
         <location filename="../inspector/townspellswidget.ui" line="192"/>
         <location filename="../inspector/townspellswidget.ui" line="192"/>
         <location filename="../inspector/townspellswidget.ui" line="238"/>
         <location filename="../inspector/townspellswidget.ui" line="238"/>
         <location filename="../inspector/townspellswidget.ui" line="284"/>
         <location filename="../inspector/townspellswidget.ui" line="284"/>
-        <source>Sort qui doit apparaitre dans la Guilde des Mages</source>
-        <translation></translation>
+        <source>Spell that must appear in mage guild</source>
+        <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
         <location filename="../inspector/townspellswidget.ui" line="122"/>
         <location filename="../inspector/townspellswidget.ui" line="122"/>
@@ -1951,7 +1951,7 @@
         <translation>Joueurs</translation>
         <translation>Joueurs</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="751"/>
+        <location filename="../windownewmap.ui" line="858"/>
         <source>0</source>
         <source>0</source>
         <translation>0</translation>
         <translation>0</translation>
     </message>
     </message>
@@ -2050,42 +2050,62 @@
         <translation>Îles</translation>
         <translation>Îles</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="716"/>
+        <location filename="../windownewmap.ui" line="713"/>
+        <source>Roads</source>
+        <translation type="unfinished">Routes</translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="728"/>
+        <source>Dirt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="748"/>
+        <source>Gravel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="768"/>
+        <source>Cobblestone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="813"/>
         <source>Template</source>
         <source>Template</source>
         <translation>Modèle</translation>
         <translation>Modèle</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="764"/>
+        <location filename="../windownewmap.ui" line="845"/>
         <source>Custom seed</source>
         <source>Custom seed</source>
         <translation>Graine personnalisée</translation>
         <translation>Graine personnalisée</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="778"/>
+        <location filename="../windownewmap.ui" line="875"/>
         <source>Generate random map</source>
         <source>Generate random map</source>
         <translation>Générer une carte aléatoire</translation>
         <translation>Générer une carte aléatoire</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="812"/>
+        <location filename="../windownewmap.ui" line="909"/>
         <source>Ok</source>
         <source>Ok</source>
         <translation>OK</translation>
         <translation>OK</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="831"/>
+        <location filename="../windownewmap.ui" line="928"/>
         <source>Cancel</source>
         <source>Cancel</source>
         <translation>Annuler</translation>
         <translation>Annuler</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template</source>
         <source>No template</source>
         <translation>Pas de modèle</translation>
         <translation>Pas de modèle</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <translation>Pas de modèles pour les paramètres spécifiés. La carte aléatoire ne peut pas être générée.</translation>
         <translation>Pas de modèles pour les paramètres spécifiés. La carte aléatoire ne peut pas être générée.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="268"/>
+        <location filename="../windownewmap.cpp" line="276"/>
         <source>RMG failure</source>
         <source>RMG failure</source>
         <translation>Echec de RMG</translation>
         <translation>Echec de RMG</translation>
     </message>
     </message>

+ 50 - 30
mapeditor/translation/german.ts

@@ -42,7 +42,7 @@
         <translation>Entfernen</translation>
         <translation>Entfernen</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mapsettings/eventsettings.cpp" line="118"/>
+        <location filename="../mapsettings/eventsettings.cpp" line="123"/>
         <source>New event</source>
         <source>New event</source>
         <translation>Neues Ereignis</translation>
         <translation>Neues Ereignis</translation>
     </message>
     </message>
@@ -359,7 +359,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1051"/>
         <location filename="../mainwindow.ui" line="1051"/>
-        <location filename="../mainwindow.cpp" line="822"/>
+        <location filename="../mainwindow.cpp" line="834"/>
         <source>View underground</source>
         <source>View underground</source>
         <translation>Ansicht Untergrund</translation>
         <translation>Ansicht Untergrund</translation>
     </message>
     </message>
@@ -441,9 +441,9 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1205"/>
         <location filename="../mainwindow.ui" line="1205"/>
-        <location filename="../mainwindow.cpp" line="1093"/>
-        <location filename="../mainwindow.cpp" line="1097"/>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Update appearance</source>
         <source>Update appearance</source>
         <translation>Aussehen aktualisieren</translation>
         <translation>Aussehen aktualisieren</translation>
     </message>
     </message>
@@ -594,72 +594,72 @@
         <translation>Alle unterstützten Karten (*.vmap *.h3m);;VCMI-Karten (*.vmap);;HoMM3-Karten (*.h3m)</translation>
         <translation>Alle unterstützten Karten (*.vmap *.h3m);;VCMI-Karten (*.vmap);;HoMM3-Karten (*.h3m)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>Save map</source>
         <source>Save map</source>
         <translation>Karte speichern</translation>
         <translation>Karte speichern</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>VCMI maps (*.vmap)</source>
         <source>VCMI maps (*.vmap)</source>
         <translation>VCMI-Karten (*.vmap)</translation>
         <translation>VCMI-Karten (*.vmap)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="664"/>
+        <location filename="../mainwindow.cpp" line="676"/>
         <source>Type</source>
         <source>Type</source>
         <translation>Typ</translation>
         <translation>Typ</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="826"/>
+        <location filename="../mainwindow.cpp" line="838"/>
         <source>View surface</source>
         <source>View surface</source>
         <translation>Oberfläche anzeigen</translation>
         <translation>Oberfläche anzeigen</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1093"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
         <source>No objects selected</source>
         <source>No objects selected</source>
         <translation>Keine Objekte selektiert</translation>
         <translation>Keine Objekte selektiert</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1097"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
         <source>This operation is irreversible. Do you want to continue?</source>
         <source>This operation is irreversible. Do you want to continue?</source>
         <translation>Diese Operation ist unumkehrbar. Möchten sie fortsetzen?</translation>
         <translation>Diese Operation ist unumkehrbar. Möchten sie fortsetzen?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Errors occurred. %1 objects were not updated</source>
         <source>Errors occurred. %1 objects were not updated</source>
         <translation>Fehler sind aufgetreten. %1 Objekte konnten nicht aktualisiert werden</translation>
         <translation>Fehler sind aufgetreten. %1 Objekte konnten nicht aktualisiert werden</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1194"/>
+        <location filename="../mainwindow.cpp" line="1206"/>
         <source>Save to image</source>
         <source>Save to image</source>
         <translation>Als Bild speichern</translation>
         <translation>Als Bild speichern</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1213"/>
+        <location filename="../mainwindow.cpp" line="1225"/>
         <source>Select maps to convert</source>
         <source>Select maps to convert</source>
         <translation>Zu konvertierende Karten auswählen</translation>
         <translation>Zu konvertierende Karten auswählen</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1215"/>
+        <location filename="../mainwindow.cpp" line="1227"/>
         <source>HoMM3 maps(*.h3m)</source>
         <source>HoMM3 maps(*.h3m)</source>
         <translation>HoMM3-Karten (*.h3m)</translation>
         <translation>HoMM3-Karten (*.h3m)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1219"/>
+        <location filename="../mainwindow.cpp" line="1231"/>
         <source>Choose directory to save converted maps</source>
         <source>Choose directory to save converted maps</source>
         <translation>Verzeichnis zum Speichern der konvertierten Karten wählen</translation>
         <translation>Verzeichnis zum Speichern der konvertierten Karten wählen</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Operation completed</source>
         <source>Operation completed</source>
         <translation>Vorgang abgeschlossen</translation>
         <translation>Vorgang abgeschlossen</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Successfully converted %1 maps</source>
         <source>Successfully converted %1 maps</source>
         <translation>Erfolgreiche Konvertierung von %1 Karten</translation>
         <translation>Erfolgreiche Konvertierung von %1 Karten</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1236"/>
+        <location filename="../mainwindow.cpp" line="1248"/>
         <source>Failed to convert the map. Abort operation</source>
         <source>Failed to convert the map. Abort operation</source>
         <translation>Die Karte konnte nicht konvertiert werden. Vorgang abgebrochen</translation>
         <translation>Die Karte konnte nicht konvertiert werden. Vorgang abgebrochen</translation>
     </message>
     </message>
@@ -1574,12 +1574,12 @@
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="163"/>
+        <location filename="../inspector/towneventdialog.cpp" line="170"/>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="205"/>
+        <location filename="../inspector/towneventdialog.cpp" line="212"/>
         <source>Day %1 - %2</source>
         <source>Day %1 - %2</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -1951,7 +1951,7 @@
         <translation>Spieler</translation>
         <translation>Spieler</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="751"/>
+        <location filename="../windownewmap.ui" line="858"/>
         <source>0</source>
         <source>0</source>
         <translation>0</translation>
         <translation>0</translation>
     </message>
     </message>
@@ -2050,42 +2050,62 @@
         <translation>Inseln</translation>
         <translation>Inseln</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="716"/>
+        <location filename="../windownewmap.ui" line="713"/>
+        <source>Roads</source>
+        <translation type="unfinished">Straßen</translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="728"/>
+        <source>Dirt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="748"/>
+        <source>Gravel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="768"/>
+        <source>Cobblestone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="813"/>
         <source>Template</source>
         <source>Template</source>
         <translation>Vorlage</translation>
         <translation>Vorlage</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="764"/>
+        <location filename="../windownewmap.ui" line="845"/>
         <source>Custom seed</source>
         <source>Custom seed</source>
         <translation>Benutzerdefiniertes Seed</translation>
         <translation>Benutzerdefiniertes Seed</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="778"/>
+        <location filename="../windownewmap.ui" line="875"/>
         <source>Generate random map</source>
         <source>Generate random map</source>
         <translation>Zufällige Karte generieren</translation>
         <translation>Zufällige Karte generieren</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="812"/>
+        <location filename="../windownewmap.ui" line="909"/>
         <source>Ok</source>
         <source>Ok</source>
         <translation>Ok</translation>
         <translation>Ok</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="831"/>
+        <location filename="../windownewmap.ui" line="928"/>
         <source>Cancel</source>
         <source>Cancel</source>
         <translation>Abbrechen</translation>
         <translation>Abbrechen</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template</source>
         <source>No template</source>
         <translation>Kein Template</translation>
         <translation>Kein Template</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <translation>Es wurde kein Template für Parameter erstellt. Zufällige Karte kann nicht generiert werden.</translation>
         <translation>Es wurde kein Template für Parameter erstellt. Zufällige Karte kann nicht generiert werden.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="268"/>
+        <location filename="../windownewmap.cpp" line="276"/>
         <source>RMG failure</source>
         <source>RMG failure</source>
         <translation>RMG-Fehler</translation>
         <translation>RMG-Fehler</translation>
     </message>
     </message>

+ 50 - 30
mapeditor/translation/polish.ts

@@ -42,7 +42,7 @@
         <translation>Usuń</translation>
         <translation>Usuń</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mapsettings/eventsettings.cpp" line="118"/>
+        <location filename="../mapsettings/eventsettings.cpp" line="123"/>
         <source>New event</source>
         <source>New event</source>
         <translation>Nowe zdarzenie</translation>
         <translation>Nowe zdarzenie</translation>
     </message>
     </message>
@@ -359,7 +359,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1051"/>
         <location filename="../mainwindow.ui" line="1051"/>
-        <location filename="../mainwindow.cpp" line="822"/>
+        <location filename="../mainwindow.cpp" line="834"/>
         <source>View underground</source>
         <source>View underground</source>
         <translation>Pokaż podziemia</translation>
         <translation>Pokaż podziemia</translation>
     </message>
     </message>
@@ -441,9 +441,9 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1205"/>
         <location filename="../mainwindow.ui" line="1205"/>
-        <location filename="../mainwindow.cpp" line="1093"/>
-        <location filename="../mainwindow.cpp" line="1097"/>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Update appearance</source>
         <source>Update appearance</source>
         <translation>Aktualizuj wygląd</translation>
         <translation>Aktualizuj wygląd</translation>
     </message>
     </message>
@@ -594,72 +594,72 @@
         <translation>Wszystkie wspierane mapy (*.vmap *.h3m);;Mapy VCMI(*.vmap);;Mapy HoMM3(*.h3m)</translation>
         <translation>Wszystkie wspierane mapy (*.vmap *.h3m);;Mapy VCMI(*.vmap);;Mapy HoMM3(*.h3m)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>Save map</source>
         <source>Save map</source>
         <translation>Zapisz mapę</translation>
         <translation>Zapisz mapę</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>VCMI maps (*.vmap)</source>
         <source>VCMI maps (*.vmap)</source>
         <translation>Mapy VCMI (*.vmap)</translation>
         <translation>Mapy VCMI (*.vmap)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="664"/>
+        <location filename="../mainwindow.cpp" line="676"/>
         <source>Type</source>
         <source>Type</source>
         <translation>Typ</translation>
         <translation>Typ</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="826"/>
+        <location filename="../mainwindow.cpp" line="838"/>
         <source>View surface</source>
         <source>View surface</source>
         <translation>Pokaż powierzchnię</translation>
         <translation>Pokaż powierzchnię</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1093"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
         <source>No objects selected</source>
         <source>No objects selected</source>
         <translation>Brak wybranych obiektów</translation>
         <translation>Brak wybranych obiektów</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1097"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
         <source>This operation is irreversible. Do you want to continue?</source>
         <source>This operation is irreversible. Do you want to continue?</source>
         <translation>Ta operacja jest nieodwracalna. Czy chcesz kontynuować?</translation>
         <translation>Ta operacja jest nieodwracalna. Czy chcesz kontynuować?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Errors occurred. %1 objects were not updated</source>
         <source>Errors occurred. %1 objects were not updated</source>
         <translation>Wystąpiły błędy. %1 obiektów nie zostało zaktualizowanych</translation>
         <translation>Wystąpiły błędy. %1 obiektów nie zostało zaktualizowanych</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1194"/>
+        <location filename="../mainwindow.cpp" line="1206"/>
         <source>Save to image</source>
         <source>Save to image</source>
         <translation>Zapisz jako obraz</translation>
         <translation>Zapisz jako obraz</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1213"/>
+        <location filename="../mainwindow.cpp" line="1225"/>
         <source>Select maps to convert</source>
         <source>Select maps to convert</source>
         <translation>Wybierz mapy do konwersji</translation>
         <translation>Wybierz mapy do konwersji</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1215"/>
+        <location filename="../mainwindow.cpp" line="1227"/>
         <source>HoMM3 maps(*.h3m)</source>
         <source>HoMM3 maps(*.h3m)</source>
         <translation>Mapy HoMM3(*.h3m)</translation>
         <translation>Mapy HoMM3(*.h3m)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1219"/>
+        <location filename="../mainwindow.cpp" line="1231"/>
         <source>Choose directory to save converted maps</source>
         <source>Choose directory to save converted maps</source>
         <translation>Wybierz folder zapisu skonwertowanych map</translation>
         <translation>Wybierz folder zapisu skonwertowanych map</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Operation completed</source>
         <source>Operation completed</source>
         <translation>Operacja zakończona</translation>
         <translation>Operacja zakończona</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Successfully converted %1 maps</source>
         <source>Successfully converted %1 maps</source>
         <translation>Pomyślnie skonwertowano %1 map</translation>
         <translation>Pomyślnie skonwertowano %1 map</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1236"/>
+        <location filename="../mainwindow.cpp" line="1248"/>
         <source>Failed to convert the map. Abort operation</source>
         <source>Failed to convert the map. Abort operation</source>
         <translation>Nieudana konwersja mapy. Przerywanie operacji</translation>
         <translation>Nieudana konwersja mapy. Przerywanie operacji</translation>
     </message>
     </message>
@@ -1574,12 +1574,12 @@
         <translation>OK</translation>
         <translation>OK</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="163"/>
+        <location filename="../inspector/towneventdialog.cpp" line="170"/>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <translation>Stworzenie poziomu %1 / Ulepszone stworzenie poziomu %1</translation>
         <translation>Stworzenie poziomu %1 / Ulepszone stworzenie poziomu %1</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="205"/>
+        <location filename="../inspector/towneventdialog.cpp" line="212"/>
         <source>Day %1 - %2</source>
         <source>Day %1 - %2</source>
         <translation>Dzień %1 - %2</translation>
         <translation>Dzień %1 - %2</translation>
     </message>
     </message>
@@ -1951,7 +1951,7 @@
         <translation>Gracze</translation>
         <translation>Gracze</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="751"/>
+        <location filename="../windownewmap.ui" line="858"/>
         <source>0</source>
         <source>0</source>
         <translation>0</translation>
         <translation>0</translation>
     </message>
     </message>
@@ -2050,42 +2050,62 @@
         <translation>Wyspy</translation>
         <translation>Wyspy</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="716"/>
+        <location filename="../windownewmap.ui" line="713"/>
+        <source>Roads</source>
+        <translation type="unfinished">Drogi</translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="728"/>
+        <source>Dirt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="748"/>
+        <source>Gravel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="768"/>
+        <source>Cobblestone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="813"/>
         <source>Template</source>
         <source>Template</source>
         <translation>Szablon</translation>
         <translation>Szablon</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="764"/>
+        <location filename="../windownewmap.ui" line="845"/>
         <source>Custom seed</source>
         <source>Custom seed</source>
         <translation>Własny seed</translation>
         <translation>Własny seed</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="778"/>
+        <location filename="../windownewmap.ui" line="875"/>
         <source>Generate random map</source>
         <source>Generate random map</source>
         <translation>Generuj mapę losową</translation>
         <translation>Generuj mapę losową</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="812"/>
+        <location filename="../windownewmap.ui" line="909"/>
         <source>Ok</source>
         <source>Ok</source>
         <translation>Ok</translation>
         <translation>Ok</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="831"/>
+        <location filename="../windownewmap.ui" line="928"/>
         <source>Cancel</source>
         <source>Cancel</source>
         <translation>Anuluj</translation>
         <translation>Anuluj</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template</source>
         <source>No template</source>
         <translation>Brak szablonu</translation>
         <translation>Brak szablonu</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <translation>Brak szablonu dla wybranych parametrów. Mapa losowa nie może zostać wygenerowana.</translation>
         <translation>Brak szablonu dla wybranych parametrów. Mapa losowa nie może zostać wygenerowana.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="268"/>
+        <location filename="../windownewmap.cpp" line="276"/>
         <source>RMG failure</source>
         <source>RMG failure</source>
         <translation>Niepowodzenie generatora map losowych</translation>
         <translation>Niepowodzenie generatora map losowych</translation>
     </message>
     </message>

+ 50 - 30
mapeditor/translation/portuguese.ts

@@ -42,7 +42,7 @@
         <translation>Remover</translation>
         <translation>Remover</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mapsettings/eventsettings.cpp" line="118"/>
+        <location filename="../mapsettings/eventsettings.cpp" line="123"/>
         <source>New event</source>
         <source>New event</source>
         <translation>Novo evento</translation>
         <translation>Novo evento</translation>
     </message>
     </message>
@@ -359,7 +359,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1051"/>
         <location filename="../mainwindow.ui" line="1051"/>
-        <location filename="../mainwindow.cpp" line="822"/>
+        <location filename="../mainwindow.cpp" line="834"/>
         <source>View underground</source>
         <source>View underground</source>
         <translation>Visualizar subterrâneo</translation>
         <translation>Visualizar subterrâneo</translation>
     </message>
     </message>
@@ -441,9 +441,9 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1205"/>
         <location filename="../mainwindow.ui" line="1205"/>
-        <location filename="../mainwindow.cpp" line="1093"/>
-        <location filename="../mainwindow.cpp" line="1097"/>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Update appearance</source>
         <source>Update appearance</source>
         <translation>Atualizar aparência</translation>
         <translation>Atualizar aparência</translation>
     </message>
     </message>
@@ -594,72 +594,72 @@
         <translation>Todos os mapas suportados (*.vmap *.h3m);;Mapas do VCMI (*.vmap);;Mapas do HoMM3 (*.h3m)</translation>
         <translation>Todos os mapas suportados (*.vmap *.h3m);;Mapas do VCMI (*.vmap);;Mapas do HoMM3 (*.h3m)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>Save map</source>
         <source>Save map</source>
         <translation>Salvar mapa</translation>
         <translation>Salvar mapa</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>VCMI maps (*.vmap)</source>
         <source>VCMI maps (*.vmap)</source>
         <translation>Mapas do VCMI (*.vmap)</translation>
         <translation>Mapas do VCMI (*.vmap)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="664"/>
+        <location filename="../mainwindow.cpp" line="676"/>
         <source>Type</source>
         <source>Type</source>
         <translation>Tipo</translation>
         <translation>Tipo</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="826"/>
+        <location filename="../mainwindow.cpp" line="838"/>
         <source>View surface</source>
         <source>View surface</source>
         <translation>Visualizar superfície</translation>
         <translation>Visualizar superfície</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1093"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
         <source>No objects selected</source>
         <source>No objects selected</source>
         <translation>Nenhum objeto selecionado</translation>
         <translation>Nenhum objeto selecionado</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1097"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
         <source>This operation is irreversible. Do you want to continue?</source>
         <source>This operation is irreversible. Do you want to continue?</source>
         <translation>Esta operação é irreversível. Deseja continuar?</translation>
         <translation>Esta operação é irreversível. Deseja continuar?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Errors occurred. %1 objects were not updated</source>
         <source>Errors occurred. %1 objects were not updated</source>
         <translation>Ocorreram erros. %1 objetos não foram atualizados</translation>
         <translation>Ocorreram erros. %1 objetos não foram atualizados</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1194"/>
+        <location filename="../mainwindow.cpp" line="1206"/>
         <source>Save to image</source>
         <source>Save to image</source>
         <translation>Salvar como imagem</translation>
         <translation>Salvar como imagem</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1213"/>
+        <location filename="../mainwindow.cpp" line="1225"/>
         <source>Select maps to convert</source>
         <source>Select maps to convert</source>
         <translation>Selecionar mapas para converter</translation>
         <translation>Selecionar mapas para converter</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1215"/>
+        <location filename="../mainwindow.cpp" line="1227"/>
         <source>HoMM3 maps(*.h3m)</source>
         <source>HoMM3 maps(*.h3m)</source>
         <translation>Mapas do HoMM3 (*.h3m)</translation>
         <translation>Mapas do HoMM3 (*.h3m)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1219"/>
+        <location filename="../mainwindow.cpp" line="1231"/>
         <source>Choose directory to save converted maps</source>
         <source>Choose directory to save converted maps</source>
         <translation>Escolher diretório para salvar mapas convertidos</translation>
         <translation>Escolher diretório para salvar mapas convertidos</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Operation completed</source>
         <source>Operation completed</source>
         <translation>Operação concluída</translation>
         <translation>Operação concluída</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Successfully converted %1 maps</source>
         <source>Successfully converted %1 maps</source>
         <translation>%1 mapas foram convertidos com sucesso</translation>
         <translation>%1 mapas foram convertidos com sucesso</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1236"/>
+        <location filename="../mainwindow.cpp" line="1248"/>
         <source>Failed to convert the map. Abort operation</source>
         <source>Failed to convert the map. Abort operation</source>
         <translation>Falha ao converter o mapa. Abortar operação</translation>
         <translation>Falha ao converter o mapa. Abortar operação</translation>
     </message>
     </message>
@@ -1574,12 +1574,12 @@
         <translation>OK</translation>
         <translation>OK</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="163"/>
+        <location filename="../inspector/towneventdialog.cpp" line="170"/>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <translation>Nível da criatura %1 / Nível da criatura %1 - Atualização</translation>
         <translation>Nível da criatura %1 / Nível da criatura %1 - Atualização</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="205"/>
+        <location filename="../inspector/towneventdialog.cpp" line="212"/>
         <source>Day %1 - %2</source>
         <source>Day %1 - %2</source>
         <translation>Dia %1 - %2</translation>
         <translation>Dia %1 - %2</translation>
     </message>
     </message>
@@ -1951,7 +1951,7 @@
         <translation>Jogadores</translation>
         <translation>Jogadores</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="751"/>
+        <location filename="../windownewmap.ui" line="858"/>
         <source>0</source>
         <source>0</source>
         <translation>0</translation>
         <translation>0</translation>
     </message>
     </message>
@@ -2050,42 +2050,62 @@
         <translation>Ilhas</translation>
         <translation>Ilhas</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="716"/>
+        <location filename="../windownewmap.ui" line="713"/>
+        <source>Roads</source>
+        <translation type="unfinished">Estradas</translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="728"/>
+        <source>Dirt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="748"/>
+        <source>Gravel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="768"/>
+        <source>Cobblestone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="813"/>
         <source>Template</source>
         <source>Template</source>
         <translation>Modelo</translation>
         <translation>Modelo</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="764"/>
+        <location filename="../windownewmap.ui" line="845"/>
         <source>Custom seed</source>
         <source>Custom seed</source>
         <translation>Semente personalizada</translation>
         <translation>Semente personalizada</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="778"/>
+        <location filename="../windownewmap.ui" line="875"/>
         <source>Generate random map</source>
         <source>Generate random map</source>
         <translation>Gerar mapa aleatório</translation>
         <translation>Gerar mapa aleatório</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="812"/>
+        <location filename="../windownewmap.ui" line="909"/>
         <source>Ok</source>
         <source>Ok</source>
         <translation>Ok</translation>
         <translation>Ok</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="831"/>
+        <location filename="../windownewmap.ui" line="928"/>
         <source>Cancel</source>
         <source>Cancel</source>
         <translation>Cancelar</translation>
         <translation>Cancelar</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template</source>
         <source>No template</source>
         <translation>Sem modelo</translation>
         <translation>Sem modelo</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <translation>Sem modelo para os parâmetros especificados. O mapa aleatório não pode set gerado.</translation>
         <translation>Sem modelo para os parâmetros especificados. O mapa aleatório não pode set gerado.</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="268"/>
+        <location filename="../windownewmap.cpp" line="276"/>
         <source>RMG failure</source>
         <source>RMG failure</source>
         <translation>Falha do GMA</translation>
         <translation>Falha do GMA</translation>
     </message>
     </message>

+ 50 - 30
mapeditor/translation/russian.ts

@@ -42,7 +42,7 @@
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mapsettings/eventsettings.cpp" line="118"/>
+        <location filename="../mapsettings/eventsettings.cpp" line="123"/>
         <source>New event</source>
         <source>New event</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -359,7 +359,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1051"/>
         <location filename="../mainwindow.ui" line="1051"/>
-        <location filename="../mainwindow.cpp" line="822"/>
+        <location filename="../mainwindow.cpp" line="834"/>
         <source>View underground</source>
         <source>View underground</source>
         <translation>Вид на подземелье</translation>
         <translation>Вид на подземелье</translation>
     </message>
     </message>
@@ -441,9 +441,9 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1205"/>
         <location filename="../mainwindow.ui" line="1205"/>
-        <location filename="../mainwindow.cpp" line="1093"/>
-        <location filename="../mainwindow.cpp" line="1097"/>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Update appearance</source>
         <source>Update appearance</source>
         <translation>Обновить вид</translation>
         <translation>Обновить вид</translation>
     </message>
     </message>
@@ -594,72 +594,72 @@
         <translation>Все поддерживаемые карты  (*.vmap *.h3m);;Карты VCMI (*.vmap);;Карты Героев III (*.h3m)</translation>
         <translation>Все поддерживаемые карты  (*.vmap *.h3m);;Карты VCMI (*.vmap);;Карты Героев III (*.h3m)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>Save map</source>
         <source>Save map</source>
         <translation>Сохранить карту</translation>
         <translation>Сохранить карту</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>VCMI maps (*.vmap)</source>
         <source>VCMI maps (*.vmap)</source>
         <translation>Карты VCMI (*.vmap)</translation>
         <translation>Карты VCMI (*.vmap)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="664"/>
+        <location filename="../mainwindow.cpp" line="676"/>
         <source>Type</source>
         <source>Type</source>
         <translation>Тип</translation>
         <translation>Тип</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="826"/>
+        <location filename="../mainwindow.cpp" line="838"/>
         <source>View surface</source>
         <source>View surface</source>
         <translation>Вид на поверхность</translation>
         <translation>Вид на поверхность</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1093"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
         <source>No objects selected</source>
         <source>No objects selected</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1097"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
         <source>This operation is irreversible. Do you want to continue?</source>
         <source>This operation is irreversible. Do you want to continue?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Errors occurred. %1 objects were not updated</source>
         <source>Errors occurred. %1 objects were not updated</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1194"/>
+        <location filename="../mainwindow.cpp" line="1206"/>
         <source>Save to image</source>
         <source>Save to image</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1213"/>
+        <location filename="../mainwindow.cpp" line="1225"/>
         <source>Select maps to convert</source>
         <source>Select maps to convert</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1215"/>
+        <location filename="../mainwindow.cpp" line="1227"/>
         <source>HoMM3 maps(*.h3m)</source>
         <source>HoMM3 maps(*.h3m)</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1219"/>
+        <location filename="../mainwindow.cpp" line="1231"/>
         <source>Choose directory to save converted maps</source>
         <source>Choose directory to save converted maps</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Operation completed</source>
         <source>Operation completed</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Successfully converted %1 maps</source>
         <source>Successfully converted %1 maps</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1236"/>
+        <location filename="../mainwindow.cpp" line="1248"/>
         <source>Failed to convert the map. Abort operation</source>
         <source>Failed to convert the map. Abort operation</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -1574,12 +1574,12 @@
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="163"/>
+        <location filename="../inspector/towneventdialog.cpp" line="170"/>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="205"/>
+        <location filename="../inspector/towneventdialog.cpp" line="212"/>
         <source>Day %1 - %2</source>
         <source>Day %1 - %2</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -1951,7 +1951,7 @@
         <translation>Игроки</translation>
         <translation>Игроки</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="751"/>
+        <location filename="../windownewmap.ui" line="858"/>
         <source>0</source>
         <source>0</source>
         <translation>0</translation>
         <translation>0</translation>
     </message>
     </message>
@@ -2050,42 +2050,62 @@
         <translation>Острова</translation>
         <translation>Острова</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="716"/>
+        <location filename="../windownewmap.ui" line="713"/>
+        <source>Roads</source>
+        <translation type="unfinished">Дороги</translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="728"/>
+        <source>Dirt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="748"/>
+        <source>Gravel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="768"/>
+        <source>Cobblestone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="813"/>
         <source>Template</source>
         <source>Template</source>
         <translation>Шаблон</translation>
         <translation>Шаблон</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="764"/>
+        <location filename="../windownewmap.ui" line="845"/>
         <source>Custom seed</source>
         <source>Custom seed</source>
         <translation>Пользовательское зерно</translation>
         <translation>Пользовательское зерно</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="778"/>
+        <location filename="../windownewmap.ui" line="875"/>
         <source>Generate random map</source>
         <source>Generate random map</source>
         <translation>Сгенерировать случайную карту</translation>
         <translation>Сгенерировать случайную карту</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="812"/>
+        <location filename="../windownewmap.ui" line="909"/>
         <source>Ok</source>
         <source>Ok</source>
         <translation>ОК</translation>
         <translation>ОК</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="831"/>
+        <location filename="../windownewmap.ui" line="928"/>
         <source>Cancel</source>
         <source>Cancel</source>
         <translation>Отмена</translation>
         <translation>Отмена</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template</source>
         <source>No template</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="268"/>
+        <location filename="../windownewmap.cpp" line="276"/>
         <source>RMG failure</source>
         <source>RMG failure</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>

+ 50 - 30
mapeditor/translation/spanish.ts

@@ -42,7 +42,7 @@
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mapsettings/eventsettings.cpp" line="118"/>
+        <location filename="../mapsettings/eventsettings.cpp" line="123"/>
         <source>New event</source>
         <source>New event</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -359,7 +359,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1051"/>
         <location filename="../mainwindow.ui" line="1051"/>
-        <location filename="../mainwindow.cpp" line="822"/>
+        <location filename="../mainwindow.cpp" line="834"/>
         <source>View underground</source>
         <source>View underground</source>
         <translation>Ver subterráneo</translation>
         <translation>Ver subterráneo</translation>
     </message>
     </message>
@@ -441,9 +441,9 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1205"/>
         <location filename="../mainwindow.ui" line="1205"/>
-        <location filename="../mainwindow.cpp" line="1093"/>
-        <location filename="../mainwindow.cpp" line="1097"/>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Update appearance</source>
         <source>Update appearance</source>
         <translation>Actualizar apariencia</translation>
         <translation>Actualizar apariencia</translation>
     </message>
     </message>
@@ -594,72 +594,72 @@
         <translation>Todos los mapas soportados (*.vmap *.h3m);;Mapas VCMI (*.vmap);;Mapas HoMM3 (*.h3m)</translation>
         <translation>Todos los mapas soportados (*.vmap *.h3m);;Mapas VCMI (*.vmap);;Mapas HoMM3 (*.h3m)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>Save map</source>
         <source>Save map</source>
         <translation>Guardar mapa</translation>
         <translation>Guardar mapa</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>VCMI maps (*.vmap)</source>
         <source>VCMI maps (*.vmap)</source>
         <translation>Mapas VCMI (*.vmap)</translation>
         <translation>Mapas VCMI (*.vmap)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="664"/>
+        <location filename="../mainwindow.cpp" line="676"/>
         <source>Type</source>
         <source>Type</source>
         <translation>Tipo</translation>
         <translation>Tipo</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="826"/>
+        <location filename="../mainwindow.cpp" line="838"/>
         <source>View surface</source>
         <source>View surface</source>
         <translation>Ver superficie</translation>
         <translation>Ver superficie</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1093"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
         <source>No objects selected</source>
         <source>No objects selected</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1097"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
         <source>This operation is irreversible. Do you want to continue?</source>
         <source>This operation is irreversible. Do you want to continue?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Errors occurred. %1 objects were not updated</source>
         <source>Errors occurred. %1 objects were not updated</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1194"/>
+        <location filename="../mainwindow.cpp" line="1206"/>
         <source>Save to image</source>
         <source>Save to image</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1213"/>
+        <location filename="../mainwindow.cpp" line="1225"/>
         <source>Select maps to convert</source>
         <source>Select maps to convert</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1215"/>
+        <location filename="../mainwindow.cpp" line="1227"/>
         <source>HoMM3 maps(*.h3m)</source>
         <source>HoMM3 maps(*.h3m)</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1219"/>
+        <location filename="../mainwindow.cpp" line="1231"/>
         <source>Choose directory to save converted maps</source>
         <source>Choose directory to save converted maps</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Operation completed</source>
         <source>Operation completed</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Successfully converted %1 maps</source>
         <source>Successfully converted %1 maps</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1236"/>
+        <location filename="../mainwindow.cpp" line="1248"/>
         <source>Failed to convert the map. Abort operation</source>
         <source>Failed to convert the map. Abort operation</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -1574,12 +1574,12 @@
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="163"/>
+        <location filename="../inspector/towneventdialog.cpp" line="170"/>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="205"/>
+        <location filename="../inspector/towneventdialog.cpp" line="212"/>
         <source>Day %1 - %2</source>
         <source>Day %1 - %2</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -1951,7 +1951,7 @@
         <translation>Jugadores</translation>
         <translation>Jugadores</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="751"/>
+        <location filename="../windownewmap.ui" line="858"/>
         <source>0</source>
         <source>0</source>
         <translation>0</translation>
         <translation>0</translation>
     </message>
     </message>
@@ -2050,42 +2050,62 @@
         <translation>Islas</translation>
         <translation>Islas</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="716"/>
+        <location filename="../windownewmap.ui" line="713"/>
+        <source>Roads</source>
+        <translation type="unfinished">Caminos</translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="728"/>
+        <source>Dirt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="748"/>
+        <source>Gravel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="768"/>
+        <source>Cobblestone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="813"/>
         <source>Template</source>
         <source>Template</source>
         <translation>Plantilla</translation>
         <translation>Plantilla</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="764"/>
+        <location filename="../windownewmap.ui" line="845"/>
         <source>Custom seed</source>
         <source>Custom seed</source>
         <translation>Semilla personalizada</translation>
         <translation>Semilla personalizada</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="778"/>
+        <location filename="../windownewmap.ui" line="875"/>
         <source>Generate random map</source>
         <source>Generate random map</source>
         <translation>Generar un mapa aleatorio</translation>
         <translation>Generar un mapa aleatorio</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="812"/>
+        <location filename="../windownewmap.ui" line="909"/>
         <source>Ok</source>
         <source>Ok</source>
         <translation>Aceptar</translation>
         <translation>Aceptar</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="831"/>
+        <location filename="../windownewmap.ui" line="928"/>
         <source>Cancel</source>
         <source>Cancel</source>
         <translation>Cancelar</translation>
         <translation>Cancelar</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template</source>
         <source>No template</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="268"/>
+        <location filename="../windownewmap.cpp" line="276"/>
         <source>RMG failure</source>
         <source>RMG failure</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>

+ 50 - 30
mapeditor/translation/ukrainian.ts

@@ -42,7 +42,7 @@
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mapsettings/eventsettings.cpp" line="118"/>
+        <location filename="../mapsettings/eventsettings.cpp" line="123"/>
         <source>New event</source>
         <source>New event</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -359,7 +359,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1051"/>
         <location filename="../mainwindow.ui" line="1051"/>
-        <location filename="../mainwindow.cpp" line="822"/>
+        <location filename="../mainwindow.cpp" line="834"/>
         <source>View underground</source>
         <source>View underground</source>
         <translation>Дивитись підземелля</translation>
         <translation>Дивитись підземелля</translation>
     </message>
     </message>
@@ -441,9 +441,9 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1205"/>
         <location filename="../mainwindow.ui" line="1205"/>
-        <location filename="../mainwindow.cpp" line="1093"/>
-        <location filename="../mainwindow.cpp" line="1097"/>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Update appearance</source>
         <source>Update appearance</source>
         <translation>Оновити вигляд</translation>
         <translation>Оновити вигляд</translation>
     </message>
     </message>
@@ -594,72 +594,72 @@
         <translation>Всі підтримувані мапи (*.vmap *.h3m);;Мапи VCMI (*.vmap);;Мапи HoMM3 (*.h3m)</translation>
         <translation>Всі підтримувані мапи (*.vmap *.h3m);;Мапи VCMI (*.vmap);;Мапи HoMM3 (*.h3m)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>Save map</source>
         <source>Save map</source>
         <translation>Зберегти мапу</translation>
         <translation>Зберегти мапу</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>VCMI maps (*.vmap)</source>
         <source>VCMI maps (*.vmap)</source>
         <translation>Мапи VCMI</translation>
         <translation>Мапи VCMI</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="664"/>
+        <location filename="../mainwindow.cpp" line="676"/>
         <source>Type</source>
         <source>Type</source>
         <translation>Тип</translation>
         <translation>Тип</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="826"/>
+        <location filename="../mainwindow.cpp" line="838"/>
         <source>View surface</source>
         <source>View surface</source>
         <translation>Дивитись поверхню</translation>
         <translation>Дивитись поверхню</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1093"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
         <source>No objects selected</source>
         <source>No objects selected</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1097"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
         <source>This operation is irreversible. Do you want to continue?</source>
         <source>This operation is irreversible. Do you want to continue?</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Errors occurred. %1 objects were not updated</source>
         <source>Errors occurred. %1 objects were not updated</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1194"/>
+        <location filename="../mainwindow.cpp" line="1206"/>
         <source>Save to image</source>
         <source>Save to image</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1213"/>
+        <location filename="../mainwindow.cpp" line="1225"/>
         <source>Select maps to convert</source>
         <source>Select maps to convert</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1215"/>
+        <location filename="../mainwindow.cpp" line="1227"/>
         <source>HoMM3 maps(*.h3m)</source>
         <source>HoMM3 maps(*.h3m)</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1219"/>
+        <location filename="../mainwindow.cpp" line="1231"/>
         <source>Choose directory to save converted maps</source>
         <source>Choose directory to save converted maps</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Operation completed</source>
         <source>Operation completed</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Successfully converted %1 maps</source>
         <source>Successfully converted %1 maps</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1236"/>
+        <location filename="../mainwindow.cpp" line="1248"/>
         <source>Failed to convert the map. Abort operation</source>
         <source>Failed to convert the map. Abort operation</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -1574,12 +1574,12 @@
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="163"/>
+        <location filename="../inspector/towneventdialog.cpp" line="170"/>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="205"/>
+        <location filename="../inspector/towneventdialog.cpp" line="212"/>
         <source>Day %1 - %2</source>
         <source>Day %1 - %2</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -1951,7 +1951,7 @@
         <translation>Гравців</translation>
         <translation>Гравців</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="751"/>
+        <location filename="../windownewmap.ui" line="858"/>
         <source>0</source>
         <source>0</source>
         <translation>0</translation>
         <translation>0</translation>
     </message>
     </message>
@@ -2050,42 +2050,62 @@
         <translation>Острови</translation>
         <translation>Острови</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="716"/>
+        <location filename="../windownewmap.ui" line="713"/>
+        <source>Roads</source>
+        <translation type="unfinished">Шляхи</translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="728"/>
+        <source>Dirt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="748"/>
+        <source>Gravel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="768"/>
+        <source>Cobblestone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="813"/>
         <source>Template</source>
         <source>Template</source>
         <translation>Шаблон</translation>
         <translation>Шаблон</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="764"/>
+        <location filename="../windownewmap.ui" line="845"/>
         <source>Custom seed</source>
         <source>Custom seed</source>
         <translation>Користувацьке зерно</translation>
         <translation>Користувацьке зерно</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="778"/>
+        <location filename="../windownewmap.ui" line="875"/>
         <source>Generate random map</source>
         <source>Generate random map</source>
         <translation>Згенерувати випадкову карту</translation>
         <translation>Згенерувати випадкову карту</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="812"/>
+        <location filename="../windownewmap.ui" line="909"/>
         <source>Ok</source>
         <source>Ok</source>
         <translation>Підтвердити</translation>
         <translation>Підтвердити</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="831"/>
+        <location filename="../windownewmap.ui" line="928"/>
         <source>Cancel</source>
         <source>Cancel</source>
         <translation>Скасувати</translation>
         <translation>Скасувати</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template</source>
         <source>No template</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="268"/>
+        <location filename="../windownewmap.cpp" line="276"/>
         <source>RMG failure</source>
         <source>RMG failure</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>

+ 50 - 30
mapeditor/translation/vietnamese.ts

@@ -42,7 +42,7 @@
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mapsettings/eventsettings.cpp" line="118"/>
+        <location filename="../mapsettings/eventsettings.cpp" line="123"/>
         <source>New event</source>
         <source>New event</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -359,7 +359,7 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1051"/>
         <location filename="../mainwindow.ui" line="1051"/>
-        <location filename="../mainwindow.cpp" line="822"/>
+        <location filename="../mainwindow.cpp" line="834"/>
         <source>View underground</source>
         <source>View underground</source>
         <translation>Xem hang ngầm</translation>
         <translation>Xem hang ngầm</translation>
     </message>
     </message>
@@ -441,9 +441,9 @@
     </message>
     </message>
     <message>
     <message>
         <location filename="../mainwindow.ui" line="1205"/>
         <location filename="../mainwindow.ui" line="1205"/>
-        <location filename="../mainwindow.cpp" line="1093"/>
-        <location filename="../mainwindow.cpp" line="1097"/>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Update appearance</source>
         <source>Update appearance</source>
         <translation>Cập nhật hiện thị</translation>
         <translation>Cập nhật hiện thị</translation>
     </message>
     </message>
@@ -594,72 +594,72 @@
         <translation>Tất cả bản đồ hỗ trợ (*.vmap *.h3m);;Bản đồ VCMI (*.vmap);;Bản đồ HoMM3 (*.h3m)</translation>
         <translation>Tất cả bản đồ hỗ trợ (*.vmap *.h3m);;Bản đồ VCMI (*.vmap);;Bản đồ HoMM3 (*.h3m)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>Save map</source>
         <source>Save map</source>
         <translation>Lưu bản đồ</translation>
         <translation>Lưu bản đồ</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="475"/>
+        <location filename="../mainwindow.cpp" line="487"/>
         <source>VCMI maps (*.vmap)</source>
         <source>VCMI maps (*.vmap)</source>
         <translation>Bản đồ VCMI (*.vmap)</translation>
         <translation>Bản đồ VCMI (*.vmap)</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="664"/>
+        <location filename="../mainwindow.cpp" line="676"/>
         <source>Type</source>
         <source>Type</source>
         <translation>Loại</translation>
         <translation>Loại</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="826"/>
+        <location filename="../mainwindow.cpp" line="838"/>
         <source>View surface</source>
         <source>View surface</source>
         <translation>Xem bề mặt</translation>
         <translation>Xem bề mặt</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1093"/>
+        <location filename="../mainwindow.cpp" line="1105"/>
         <source>No objects selected</source>
         <source>No objects selected</source>
         <translation>Không mục tiêu được chọn</translation>
         <translation>Không mục tiêu được chọn</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1097"/>
+        <location filename="../mainwindow.cpp" line="1109"/>
         <source>This operation is irreversible. Do you want to continue?</source>
         <source>This operation is irreversible. Do you want to continue?</source>
         <translation>Thao tác này không thể đảo ngược. Bạn muốn tiếp tục?</translation>
         <translation>Thao tác này không thể đảo ngược. Bạn muốn tiếp tục?</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1154"/>
+        <location filename="../mainwindow.cpp" line="1166"/>
         <source>Errors occurred. %1 objects were not updated</source>
         <source>Errors occurred. %1 objects were not updated</source>
         <translation>Xảy ra lỗi. %1 mục tiêu không được cập nhật</translation>
         <translation>Xảy ra lỗi. %1 mục tiêu không được cập nhật</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1194"/>
+        <location filename="../mainwindow.cpp" line="1206"/>
         <source>Save to image</source>
         <source>Save to image</source>
         <translation>Lưu thành ảnh</translation>
         <translation>Lưu thành ảnh</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1213"/>
+        <location filename="../mainwindow.cpp" line="1225"/>
         <source>Select maps to convert</source>
         <source>Select maps to convert</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1215"/>
+        <location filename="../mainwindow.cpp" line="1227"/>
         <source>HoMM3 maps(*.h3m)</source>
         <source>HoMM3 maps(*.h3m)</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1219"/>
+        <location filename="../mainwindow.cpp" line="1231"/>
         <source>Choose directory to save converted maps</source>
         <source>Choose directory to save converted maps</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Operation completed</source>
         <source>Operation completed</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1232"/>
+        <location filename="../mainwindow.cpp" line="1244"/>
         <source>Successfully converted %1 maps</source>
         <source>Successfully converted %1 maps</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../mainwindow.cpp" line="1236"/>
+        <location filename="../mainwindow.cpp" line="1248"/>
         <source>Failed to convert the map. Abort operation</source>
         <source>Failed to convert the map. Abort operation</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -1574,12 +1574,12 @@
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="163"/>
+        <location filename="../inspector/towneventdialog.cpp" line="170"/>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <source>Creature level %1 / Creature level %1 Upgrade</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../inspector/towneventdialog.cpp" line="205"/>
+        <location filename="../inspector/towneventdialog.cpp" line="212"/>
         <source>Day %1 - %2</source>
         <source>Day %1 - %2</source>
         <translation type="unfinished"></translation>
         <translation type="unfinished"></translation>
     </message>
     </message>
@@ -1951,7 +1951,7 @@
         <translation>Người chơi</translation>
         <translation>Người chơi</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="751"/>
+        <location filename="../windownewmap.ui" line="858"/>
         <source>0</source>
         <source>0</source>
         <translation>0</translation>
         <translation>0</translation>
     </message>
     </message>
@@ -2050,42 +2050,62 @@
         <translation>Các đảo</translation>
         <translation>Các đảo</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="716"/>
+        <location filename="../windownewmap.ui" line="713"/>
+        <source>Roads</source>
+        <translation type="unfinished">Đường</translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="728"/>
+        <source>Dirt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="748"/>
+        <source>Gravel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="768"/>
+        <source>Cobblestone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../windownewmap.ui" line="813"/>
         <source>Template</source>
         <source>Template</source>
         <translation>Mẫu</translation>
         <translation>Mẫu</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="764"/>
+        <location filename="../windownewmap.ui" line="845"/>
         <source>Custom seed</source>
         <source>Custom seed</source>
         <translation>Tùy chỉnh ban đầu</translation>
         <translation>Tùy chỉnh ban đầu</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="778"/>
+        <location filename="../windownewmap.ui" line="875"/>
         <source>Generate random map</source>
         <source>Generate random map</source>
         <translation>Tạo bản đồ ngẫu nhiên</translation>
         <translation>Tạo bản đồ ngẫu nhiên</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="812"/>
+        <location filename="../windownewmap.ui" line="909"/>
         <source>Ok</source>
         <source>Ok</source>
         <translation>Đồng ý</translation>
         <translation>Đồng ý</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.ui" line="831"/>
+        <location filename="../windownewmap.ui" line="928"/>
         <source>Cancel</source>
         <source>Cancel</source>
         <translation>Hủy</translation>
         <translation>Hủy</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template</source>
         <source>No template</source>
         <translation>Không dùng mẫu</translation>
         <translation>Không dùng mẫu</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="248"/>
+        <location filename="../windownewmap.cpp" line="256"/>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <source>No template for parameters specified. Random map cannot be generated.</source>
         <translation>Không có mẫu cho tham số chỉ định. Bản đồ ngẫu nhiên không thể tạo</translation>
         <translation>Không có mẫu cho tham số chỉ định. Bản đồ ngẫu nhiên không thể tạo</translation>
     </message>
     </message>
     <message>
     <message>
-        <location filename="../windownewmap.cpp" line="268"/>
+        <location filename="../windownewmap.cpp" line="276"/>
         <source>RMG failure</source>
         <source>RMG failure</source>
         <translation>Tạo bản đồ ngẫu nhiên thất bại</translation>
         <translation>Tạo bản đồ ngẫu nhiên thất bại</translation>
     </message>
     </message>

+ 22 - 14
server/battles/BattleActionProcessor.cpp

@@ -276,7 +276,7 @@ bool BattleActionProcessor::doAttackAction(const CBattleInfoCallback & battle, c
 	for (int i = 0; i < totalAttacks; ++i)
 	for (int i = 0; i < totalAttacks; ++i)
 	{
 	{
 		//first strike
 		//first strike
-		if(i == 0 && firstStrike && retaliation && !stack->hasBonusOfType(BonusType::BLOCKS_RETALIATION))
+		if(i == 0 && firstStrike && retaliation && !stack->hasBonusOfType(BonusType::BLOCKS_RETALIATION) && !stack->hasBonusOfType(BonusType::INVINCIBLE))
 		{
 		{
 			makeAttack(battle, destinationStack, stack, 0, stack->getPosition(), true, false, true);
 			makeAttack(battle, destinationStack, stack, 0, stack->getPosition(), true, false, true);
 		}
 		}
@@ -303,6 +303,7 @@ bool BattleActionProcessor::doAttackAction(const CBattleInfoCallback & battle, c
 		//we check retaliation twice, so if it unblocked during attack it will work only on next attack
 		//we check retaliation twice, so if it unblocked during attack it will work only on next attack
 		if(stack->alive()
 		if(stack->alive()
 			&& !stack->hasBonusOfType(BonusType::BLOCKS_RETALIATION)
 			&& !stack->hasBonusOfType(BonusType::BLOCKS_RETALIATION)
+			&& !stack->hasBonusOfType(BonusType::INVINCIBLE)
 			&& (i == 0 && !firstStrike)
 			&& (i == 0 && !firstStrike)
 			&& retaliation && destinationStack->ableToRetaliate())
 			&& retaliation && destinationStack->ableToRetaliate())
 		{
 		{
@@ -347,20 +348,27 @@ bool BattleActionProcessor::doShootAction(const CBattleInfoCallback & battle, co
 		return false;
 		return false;
 	}
 	}
 
 
-	if (!destinationStack)
+	const bool emptyTileAreaAttack = battle.battleCanTargetEmptyHex(stack);
+
+	if (!destinationStack && !emptyTileAreaAttack)
 	{
 	{
 		gameHandler->complain("No target to shoot!");
 		gameHandler->complain("No target to shoot!");
 		return false;
 		return false;
 	}
 	}
 
 
-	static const auto firstStrikeSelector = Selector::typeSubtype(BonusType::FIRST_STRIKE, BonusCustomSubtype::damageTypeAll).Or(Selector::typeSubtype(BonusType::FIRST_STRIKE, BonusCustomSubtype::damageTypeRanged));
-	const bool firstStrike = destinationStack->hasBonus(firstStrikeSelector);
+	bool firstStrike = false;
+	if(!emptyTileAreaAttack)
+	{
+		static const auto firstStrikeSelector = Selector::typeSubtype(BonusType::FIRST_STRIKE, BonusCustomSubtype::damageTypeAll).Or(Selector::typeSubtype(BonusType::FIRST_STRIKE, BonusCustomSubtype::damageTypeRanged));
+		firstStrike = destinationStack->hasBonus(firstStrikeSelector);
+	}
 
 
 	if (!firstStrike)
 	if (!firstStrike)
 		makeAttack(battle, stack, destinationStack, 0, destination, true, true, false);
 		makeAttack(battle, stack, destinationStack, 0, destination, true, true, false);
 
 
 	//ranged counterattack
 	//ranged counterattack
-	if (destinationStack->hasBonusOfType(BonusType::RANGED_RETALIATION)
+	if (!emptyTileAreaAttack
+		&& destinationStack->hasBonusOfType(BonusType::RANGED_RETALIATION)
 		&& !stack->hasBonusOfType(BonusType::BLOCKS_RANGED_RETALIATION)
 		&& !stack->hasBonusOfType(BonusType::BLOCKS_RANGED_RETALIATION)
 		&& destinationStack->ableToRetaliate()
 		&& destinationStack->ableToRetaliate()
 		&& battle.battleCanShoot(destinationStack, stack->getPosition())
 		&& battle.battleCanShoot(destinationStack, stack->getPosition())
@@ -381,11 +389,9 @@ bool BattleActionProcessor::doShootAction(const CBattleInfoCallback & battle, co
 
 
 	for(int i = firstStrike ? 0:1; i < totalRangedAttacks; ++i)
 	for(int i = firstStrike ? 0:1; i < totalRangedAttacks; ++i)
 	{
 	{
-		if(
-			stack->alive()
-			&& destinationStack->alive()
-			&& stack->shots.canUse()
-			)
+		if(stack->alive()
+			&& (emptyTileAreaAttack || destinationStack->alive())
+			&& stack->shots.canUse())
 		{
 		{
 			makeAttack(battle, stack, destinationStack, 0, destination, false, true, false);
 			makeAttack(battle, stack, destinationStack, 0, destination, false, true, false);
 		}
 		}
@@ -907,7 +913,7 @@ int BattleActionProcessor::moveStack(const CBattleInfoCallback & battle, int sta
 
 
 void BattleActionProcessor::makeAttack(const CBattleInfoCallback & battle, const CStack * attacker, const CStack * defender, int distance, BattleHex targetHex, bool first, bool ranged, bool counter)
 void BattleActionProcessor::makeAttack(const CBattleInfoCallback & battle, const CStack * attacker, const CStack * defender, int distance, BattleHex targetHex, bool first, bool ranged, bool counter)
 {
 {
-	if(first && !counter)
+	if(defender && first && !counter)
 		handleAttackBeforeCasting(battle, ranged, attacker, defender);
 		handleAttackBeforeCasting(battle, ranged, attacker, defender);
 
 
 	FireShieldInfo fireShield;
 	FireShieldInfo fireShield;
@@ -962,7 +968,7 @@ void BattleActionProcessor::makeAttack(const CBattleInfoCallback & battle, const
 	battle::HealInfo healInfo;
 	battle::HealInfo healInfo;
 
 
 	// only primary target
 	// only primary target
-	if(defender->alive())
+	if(defender && defender->alive())
 		applyBattleEffects(battle, bat, attackerState, fireShield, defender, healInfo, distance, false);
 		applyBattleEffects(battle, bat, attackerState, fireShield, defender, healInfo, distance, false);
 
 
 	//multiple-hex normal attack
 	//multiple-hex normal attack
@@ -1044,7 +1050,8 @@ void BattleActionProcessor::makeAttack(const CBattleInfoCallback & battle, const
 
 
 		addGenericDamageLog(blm, attackerState, totalDamage);
 		addGenericDamageLog(blm, attackerState, totalDamage);
 
 
-		addGenericKilledLog(blm, defender, totalKills, multipleTargets);
+		if(defender)
+			addGenericKilledLog(blm, defender, totalKills, multipleTargets);
 	}
 	}
 
 
 	// drain life effect (as well as log entry) must be applied after the attack
 	// drain life effect (as well as log entry) must be applied after the attack
@@ -1110,7 +1117,8 @@ void BattleActionProcessor::makeAttack(const CBattleInfoCallback & battle, const
 
 
 	gameHandler->sendAndApply(&blm);
 	gameHandler->sendAndApply(&blm);
 
 
-	handleAfterAttackCasting(battle, ranged, attacker, defender);
+	if(defender)
+		handleAfterAttackCasting(battle, ranged, attacker, defender);
 }
 }
 
 
 void BattleActionProcessor::attackCasting(const CBattleInfoCallback & battle, bool ranged, BonusType attackMode, const battle::Unit * attacker, const CStack * defender)
 void BattleActionProcessor::attackCasting(const CBattleInfoCallback & battle, bool ranged, BonusType attackMode, const battle::Unit * attacker, const CStack * defender)

部分文件因为文件数量过多而无法显示