From 39516b275ea16bbcce5dc07cf6360e48ce294244 Mon Sep 17 00:00:00 2001 From: altiereslima Date: Thu, 11 Jul 2024 19:11:54 -0300 Subject: [PATCH 01/12] Update Portuguese Translation --- Mods/vcmi/config/vcmi/portuguese.json | 6 +++--- launcher/translation/portuguese.ts | 19 ++++++++++--------- mapeditor/translation/portuguese.ts | 18 +++++++++--------- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/Mods/vcmi/config/vcmi/portuguese.json b/Mods/vcmi/config/vcmi/portuguese.json index 4405870fc..0e5391e17 100644 --- a/Mods/vcmi/config/vcmi/portuguese.json +++ b/Mods/vcmi/config/vcmi/portuguese.json @@ -33,7 +33,7 @@ "vcmi.heroOverview.startingArmy" : "Unidades Iniciais", "vcmi.heroOverview.warMachine" : "Máquinas de Guerra", - "vcmi.heroOverview.secondarySkills" : "Habilidades Secundárias", + "vcmi.heroOverview.secondarySkills" : "Habilid. Secundárias", "vcmi.heroOverview.spells" : "Feitiços", "vcmi.radialWheel.mergeSameUnit" : "Mesclar criaturas iguais", @@ -259,7 +259,7 @@ "vcmi.battleWindow.damageRetaliation.damage" : "(%DAMAGE).", "vcmi.battleWindow.damageRetaliation.damageKills" : "(%DAMAGE, %KILLS).", - "vcmi.battleWindow.killed" : "Eliminados", + "vcmi.battleWindow.killed" : "Mortos", "vcmi.battleWindow.accurateShot.resultDescription.0" : "%d %s morreram por tiros precisos!", "vcmi.battleWindow.accurateShot.resultDescription.1" : "%d %s morreu com um tiro preciso!", "vcmi.battleWindow.accurateShot.resultDescription.2" : "%d %s morreram por tiros precisos!", @@ -612,7 +612,7 @@ "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.description" : "Pilhas próximas ganham ${val}% de resistência a magia", - "core.bonus.SUMMON_GUARDIANS.name" : "Invocar Guardiões", + "core.bonus.SUMMON_GUARDIANS.name" : "Invocar Guardas", "core.bonus.SUMMON_GUARDIANS.description" : "No início da batalha, invoca ${subtype.creature} (${val}%)", "core.bonus.SYNERGY_TARGET.name" : "Alvo Sinergizável", "core.bonus.SYNERGY_TARGET.description" : "Esta criatura é vulnerável ao efeito de sinergia", diff --git a/launcher/translation/portuguese.ts b/launcher/translation/portuguese.ts index ce306c2e8..364c674e7 100644 --- a/launcher/translation/portuguese.ts +++ b/launcher/translation/portuguese.ts @@ -461,7 +461,7 @@ Downloading %1. %p% (%v MB out of %m MB) finished - + Baixando %1. %p% (%v MB de %m MB) concluído Downloading %s%. %p% (%v MB out of %m MB) finished @@ -733,12 +733,12 @@ Instalar o download realizado com sucesso? Show Tutorial again - + Mostrar o Tutorial novamente Reset - + Redefinir @@ -940,7 +940,7 @@ Modo de tela cheia exclusivo - o jogo cobrirá toda a sua tela e usará a resolu Autosave - Salvar automaticamente + Salvamento automático @@ -1268,7 +1268,7 @@ O instalador offline consiste em duas partes, .exe e .bin. Certifique-se de baix File cannot opened - + O arquivo não pode ser aberto @@ -1317,23 +1317,24 @@ Por favor, selecione o diretório com os dados do Heroes III instalados. You've provided GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! - + 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! Stream error while extracting files! error reason: - + Erro de fluxo ao extrair arquivos! +Motivo do erro: Not a supported Inno Setup installer! - + Instalador do Inno Setup não suportado! Extracting error! - + Erro ao extrair! diff --git a/mapeditor/translation/portuguese.ts b/mapeditor/translation/portuguese.ts index 507fda720..d44bc8074 100644 --- a/mapeditor/translation/portuguese.ts +++ b/mapeditor/translation/portuguese.ts @@ -6,17 +6,17 @@ Army settings - Configurações do Exército + Configurações do exército Wide formation - Formação Aberta + Formação aberta Tight formation - Formação Compacta + Formação compacta @@ -29,7 +29,7 @@ Timed events - Eventos Temporizados + Eventos temporizados @@ -44,7 +44,7 @@ New event - Novo Evento + Novo evento @@ -57,12 +57,12 @@ Map name - Nome do Mapa + Nome do mapa Map description - Descrição do Mapa + Descrição do mapa @@ -88,7 +88,7 @@ Hero skills - Habilidades do Herói + Habilidades do herói @@ -172,7 +172,7 @@ Defeat message - Mensagem de Derrota + Mensagem de derrota From 3836f132d3fd84979d77fe453957479bb3aa44a4 Mon Sep 17 00:00:00 2001 From: Dydzio Date: Mon, 15 Jul 2024 00:41:05 +0200 Subject: [PATCH 02/12] Fix alternative actions to support more than 2 actions + simplify logic --- client/battle/BattleActionsController.cpp | 40 ++++++++++++----------- client/battle/BattleActionsController.h | 3 ++ client/battle/BattleWindow.cpp | 31 +++++++++--------- client/battle/BattleWindow.h | 2 +- lib/battle/PossiblePlayerBattleAction.h | 5 +++ 5 files changed, 45 insertions(+), 36 deletions(-) diff --git a/client/battle/BattleActionsController.cpp b/client/battle/BattleActionsController.cpp index 0228334ec..bd1f3fb99 100644 --- a/client/battle/BattleActionsController.cpp +++ b/client/battle/BattleActionsController.cpp @@ -985,26 +985,23 @@ void BattleActionsController::activateStack() std::list actionsToSelect; if(!possibleActions.empty()) { - switch(possibleActions.front().get()) + auto primaryAction = possibleActions.front().get(); + + if(primaryAction == PossiblePlayerBattleAction::SHOOT || primaryAction == PossiblePlayerBattleAction::AIMED_SPELL_CREATURE + || primaryAction == PossiblePlayerBattleAction::ANY_LOCATION || primaryAction == PossiblePlayerBattleAction::ATTACK_AND_RETURN) { - case PossiblePlayerBattleAction::SHOOT: - actionsToSelect.push_back(possibleActions.front()); - actionsToSelect.push_back(PossiblePlayerBattleAction::ATTACK); - break; - - case PossiblePlayerBattleAction::ATTACK_AND_RETURN: - actionsToSelect.push_back(possibleActions.front()); - actionsToSelect.push_back(PossiblePlayerBattleAction::WALK_AND_ATTACK); - break; - - case PossiblePlayerBattleAction::AIMED_SPELL_CREATURE: - actionsToSelect.push_back(possibleActions.front()); - actionsToSelect.push_back(PossiblePlayerBattleAction::ATTACK); - break; - case PossiblePlayerBattleAction::ANY_LOCATION: - actionsToSelect.push_back(possibleActions.front()); - actionsToSelect.push_back(PossiblePlayerBattleAction::ATTACK); - break; + actionsToSelect.push_back(possibleActions.front()); + + auto shootActionPredicate = [](const PossiblePlayerBattleAction& action) + { + return action.get() == PossiblePlayerBattleAction::SHOOT; + }; + bool hasShootSecondaryAction = std::any_of(possibleActions.begin() + 1, possibleActions.end(), shootActionPredicate); + + if(hasShootSecondaryAction) + actionsToSelect.emplace_back(PossiblePlayerBattleAction::SHOOT); + + actionsToSelect.emplace_back(PossiblePlayerBattleAction::ATTACK); //always allow melee attack as last option } } owner.windowObject->setAlternativeActions(actionsToSelect); @@ -1071,3 +1068,8 @@ void BattleActionsController::pushFrontPossibleAction(PossiblePlayerBattleAction { possibleActions.insert(possibleActions.begin(), action); } + +void BattleActionsController::resetCurrentStackPossibleActions() +{ + possibleActions = getPossibleActionsForStack(owner.stacksController->getActiveStack()); +} diff --git a/client/battle/BattleActionsController.h b/client/battle/BattleActionsController.h index 3c9b35660..a22f86251 100644 --- a/client/battle/BattleActionsController.h +++ b/client/battle/BattleActionsController.h @@ -122,4 +122,7 @@ public: /// inserts possible action in the beggining in order to prioritize it void pushFrontPossibleAction(PossiblePlayerBattleAction); + + /// resets possible actions to original state + void resetCurrentStackPossibleActions(); }; diff --git a/client/battle/BattleWindow.cpp b/client/battle/BattleWindow.cpp index 9f874f59e..5b228d82f 100644 --- a/client/battle/BattleWindow.cpp +++ b/client/battle/BattleWindow.cpp @@ -48,7 +48,7 @@ BattleWindow::BattleWindow(BattleInterface & owner): owner(owner), - defaultAction(PossiblePlayerBattleAction::INVALID) + lastAlternativeAction(PossiblePlayerBattleAction::INVALID) { OBJ_CONSTRUCTION_CAPTURING_ALL_NO_DISPOSE; pos.w = 800; @@ -568,14 +568,18 @@ void BattleWindow::showAlternativeActionIcon(PossiblePlayerBattleAction action) void BattleWindow::setAlternativeActions(const std::list & actions) { + assert(actions.size() != 1); + alternativeActions = actions; - defaultAction = PossiblePlayerBattleAction::INVALID; + lastAlternativeAction = PossiblePlayerBattleAction::INVALID; + if(alternativeActions.size() > 1) - defaultAction = alternativeActions.back(); - if(!alternativeActions.empty()) + { + lastAlternativeAction = alternativeActions.back(); showAlternativeActionIcon(alternativeActions.front()); + } else - showAlternativeActionIcon(defaultAction); + showAlternativeActionIcon(PossiblePlayerBattleAction::INVALID); } void BattleWindow::bAutofightf() @@ -670,23 +674,18 @@ void BattleWindow::bSwitchActionf() { if(alternativeActions.empty()) return; - - if(alternativeActions.front() == defaultAction) - { - alternativeActions.push_back(alternativeActions.front()); - alternativeActions.pop_front(); - } - + auto actions = owner.actionsController->getPossibleActions(); - if(!actions.empty() && actions.front() == alternativeActions.front()) + + if(!actions.empty() && actions.front() != lastAlternativeAction) { owner.actionsController->removePossibleAction(alternativeActions.front()); - showAlternativeActionIcon(defaultAction); + showAlternativeActionIcon(*std::next(alternativeActions.begin())); } else { - owner.actionsController->pushFrontPossibleAction(alternativeActions.front()); - showAlternativeActionIcon(alternativeActions.front()); + owner.actionsController->resetCurrentStackPossibleActions(); + showAlternativeActionIcon(owner.actionsController->getPossibleActions().front()); } alternativeActions.push_back(alternativeActions.front()); diff --git a/client/battle/BattleWindow.h b/client/battle/BattleWindow.h index 5369cca9d..8b6b4f30d 100644 --- a/client/battle/BattleWindow.h +++ b/client/battle/BattleWindow.h @@ -65,7 +65,7 @@ class BattleWindow : public InterfaceObjectConfigurable /// management of alternative actions std::list alternativeActions; - PossiblePlayerBattleAction defaultAction; + PossiblePlayerBattleAction lastAlternativeAction; void showAlternativeActionIcon(PossiblePlayerBattleAction); /// flip battle queue visibility to opposite diff --git a/lib/battle/PossiblePlayerBattleAction.h b/lib/battle/PossiblePlayerBattleAction.h index 401c18d00..402980ded 100644 --- a/lib/battle/PossiblePlayerBattleAction.h +++ b/lib/battle/PossiblePlayerBattleAction.h @@ -74,6 +74,11 @@ public: { return action == other.action && spellToCast == other.spellToCast; } + + bool operator != (const PossiblePlayerBattleAction & other) const + { + return action != other.action || spellToCast != other.spellToCast; + } }; VCMI_LIB_NAMESPACE_END From 6119898932a1b5f24c53ef9a01041ef0aae1aa1c Mon Sep 17 00:00:00 2001 From: Dydzio Date: Mon, 15 Jul 2024 09:39:22 +0200 Subject: [PATCH 03/12] Add some useful comments --- client/battle/BattleActionsController.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/battle/BattleActionsController.cpp b/client/battle/BattleActionsController.cpp index bd1f3fb99..a4fe689a1 100644 --- a/client/battle/BattleActionsController.cpp +++ b/client/battle/BattleActionsController.cpp @@ -998,9 +998,13 @@ void BattleActionsController::activateStack() }; bool hasShootSecondaryAction = std::any_of(possibleActions.begin() + 1, possibleActions.end(), shootActionPredicate); - if(hasShootSecondaryAction) + if(hasShootSecondaryAction) //casters may have shooting capabilities, for example storm elementals actionsToSelect.emplace_back(PossiblePlayerBattleAction::SHOOT); + /* TODO: maybe it would also make sense to check spellcast as non-top priority action ("NO_SPELLCAST_BY_DEFAULT" bonus)? + * it would require going beyond this "if" block for melee casters + * F button helps, but some mod creatures may have that bonus and more than 1 castable spell */ + actionsToSelect.emplace_back(PossiblePlayerBattleAction::ATTACK); //always allow melee attack as last option } } From 4b91d6e6b0ba6bed8fd4847cbaa4b019843139d2 Mon Sep 17 00:00:00 2001 From: Dydzio Date: Mon, 15 Jul 2024 18:47:29 +0200 Subject: [PATCH 04/12] Change shortcuts to those that non-VCMI players are used to --- config/shortcutsConfig.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/shortcutsConfig.json b/config/shortcutsConfig.json index 4359730be..ebf1463fb 100644 --- a/config/shortcutsConfig.json +++ b/config/shortcutsConfig.json @@ -55,7 +55,7 @@ "adventureZoomOut": "Keypad -", "adventureZoomReset": "Backspace", "battleAutocombat": "A", - "battleAutocombatEnd": "E", + "battleAutocombatEnd": "Q", "battleCastSpell": "C", "battleConsoleDown": "Down", "battleConsoleUp": "Up", @@ -68,8 +68,8 @@ "battleTacticsEnd": [ "Return", "Keypad Enter"], "battleTacticsNext": "Space", "battleToggleHeroesStats": [], - "battleToggleQueue": "Q", - "battleUseCreatureSpell": "F", + "battleToggleQueue": "Z", + "battleUseCreatureSpell": ["F", "G"], "battleWait": "W", "exchangeArmySwap": "F10", "exchangeArmyToLeft": [], From 037ee4395eeef623be93fea4424806ab112913da Mon Sep 17 00:00:00 2001 From: Dydzio Date: Mon, 15 Jul 2024 20:22:19 +0200 Subject: [PATCH 05/12] Allow opening single hero when two heroes in town via shift+click --- client/windows/CCastleInterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/windows/CCastleInterface.cpp b/client/windows/CCastleInterface.cpp index 077269bc8..c8b36a4cd 100644 --- a/client/windows/CCastleInterface.cpp +++ b/client/windows/CCastleInterface.cpp @@ -428,7 +428,7 @@ void CHeroGSlot::clickPressed(const Point & cursorPosition) { setHighlight(false); - if(other->hero) + if(other->hero && !GH.isKeyboardShiftDown()) LOCPLINT->showHeroExchange(hero->id, other->hero->id); else LOCPLINT->openHeroWindow(hero); From cbf094db68c5c43954514f969227dfd96f25b1ca Mon Sep 17 00:00:00 2001 From: kdmcser Date: Tue, 16 Jul 2024 20:53:41 +0800 Subject: [PATCH 06/12] update Chinese translation --- launcher/translation/chinese.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/launcher/translation/chinese.ts b/launcher/translation/chinese.ts index 2b245d6cd..26518f982 100644 --- a/launcher/translation/chinese.ts +++ b/launcher/translation/chinese.ts @@ -465,11 +465,11 @@ Downloading %1. %p% (%v MB out of %m MB) finished - + 正在下载 %1. %p% (%v MB 共 %m MB) 已完成 Downloading %s%. %p% (%v MB out of %m MB) finished - 下载进度 %s%. %p% (%v MB 共 %m MB) 已完成 + 正在下载 %s%. %p% (%v MB 共 %m MB) 已完成 @@ -738,12 +738,12 @@ Install successfully downloaded? Show Tutorial again - + 重新显示教程 Reset - + 重置 @@ -1275,7 +1275,7 @@ Offline installer consists of two parts, .exe and .bin. Make sure you download b File cannot opened - + 打开文件失败 @@ -1324,23 +1324,24 @@ Please select directory with installed Heroes III data. You've provided GOG Galaxy installer! This file doesn't contain the game. Please download the offline backup game installer! - + 您提供的是GOG Galaxy安装器!这个文件不包含游戏内容,请下载离线游戏安装器! Stream error while extracting files! error reason: - + 提取文件时遭遇文件流错误! +错误原因: Not a supported Inno Setup installer! - + 这不是一个支持的Inno Setup安装器! Extracting error! - + 提取错误! From 7328c9ffd609641fe4729b01c0d0979d5ec8b253 Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Sat, 13 Jul 2024 19:18:59 +0000 Subject: [PATCH 07/12] Fix path and music not updating on new turn --- client/adventureMap/AdventureMapInterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/adventureMap/AdventureMapInterface.cpp b/client/adventureMap/AdventureMapInterface.cpp index 43f005199..2a4dbe0be 100644 --- a/client/adventureMap/AdventureMapInterface.cpp +++ b/client/adventureMap/AdventureMapInterface.cpp @@ -444,7 +444,7 @@ void AdventureMapInterface::onPlayerTurnStarted(PlayerColor playerID) LOCPLINT->localState->setSelection(LOCPLINT->localState->getWanderingHero(0)); } - centerOnObject(LOCPLINT->localState->getCurrentArmy()); + onSelectionChanged(LOCPLINT->localState->getCurrentArmy()); //show new day animation and sound on infobar, except for 1st day of the game if (LOCPLINT->cb->getDate(Date::DAY) != 1) From 4ad81dcaf8dec8213ac6f2c537c6aa290b1768db Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Mon, 15 Jul 2024 07:11:11 +0000 Subject: [PATCH 08/12] Version bump to 1.5.5 --- android/vcmi-app/build.gradle | 4 ++-- cmake_modules/VersionDefinition.cmake | 2 +- debian/changelog | 6 ++++++ docs/Readme.md | 2 +- launcher/eu.vcmi.VCMI.metainfo.xml | 1 + 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/android/vcmi-app/build.gradle b/android/vcmi-app/build.gradle index a586c43c1..f8f7596b8 100644 --- a/android/vcmi-app/build.gradle +++ b/android/vcmi-app/build.gradle @@ -26,8 +26,8 @@ android { minSdk = qtMinSdkVersion as Integer targetSdk = qtTargetSdkVersion as Integer // ANDROID_TARGET_SDK_VERSION in the CMake project - versionCode 1540 - versionName "1.5.4" + versionCode 1550 + versionName "1.5.5" setProperty("archivesBaseName", "vcmi") } diff --git a/cmake_modules/VersionDefinition.cmake b/cmake_modules/VersionDefinition.cmake index 4d843b099..67002ded8 100644 --- a/cmake_modules/VersionDefinition.cmake +++ b/cmake_modules/VersionDefinition.cmake @@ -1,6 +1,6 @@ set(VCMI_VERSION_MAJOR 1) set(VCMI_VERSION_MINOR 5) -set(VCMI_VERSION_PATCH 4) +set(VCMI_VERSION_PATCH 5) add_definitions( -DVCMI_VERSION_MAJOR=${VCMI_VERSION_MAJOR} -DVCMI_VERSION_MINOR=${VCMI_VERSION_MINOR} diff --git a/debian/changelog b/debian/changelog index ca23efafb..1f04918d0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +vcmi (1.5.5) jammy; urgency=medium + + * New upstream release + + -- Ivan Savenko Fri, 19 Jul 2024 12:00:00 +0200 + vcmi (1.5.4) jammy; urgency=medium * New upstream release diff --git a/docs/Readme.md b/docs/Readme.md index 2344f8a09..8ceb7a55d 100644 --- a/docs/Readme.md +++ b/docs/Readme.md @@ -1,7 +1,7 @@ [![VCMI](https://github.com/vcmi/vcmi/actions/workflows/github.yml/badge.svg?branch=develop&event=push)](https://github.com/vcmi/vcmi/actions/workflows/github.yml?query=branch%3Adevelop+event%3Apush) [![Github Downloads](https://img.shields.io/github/downloads/vcmi/vcmi/1.5.0/total)](https://github.com/vcmi/vcmi/releases/tag/1.5.0) -[![Github Downloads](https://img.shields.io/github/downloads/vcmi/vcmi/1.5.3/total)](https://github.com/vcmi/vcmi/releases/tag/1.5.3) [![Github Downloads](https://img.shields.io/github/downloads/vcmi/vcmi/1.5.4/total)](https://github.com/vcmi/vcmi/releases/tag/1.5.4) +[![Github Downloads](https://img.shields.io/github/downloads/vcmi/vcmi/1.5.5/total)](https://github.com/vcmi/vcmi/releases/tag/1.5.5) [![Github Downloads](https://img.shields.io/github/downloads/vcmi/vcmi/total)](https://github.com/vcmi/vcmi/releases) # VCMI Project diff --git a/launcher/eu.vcmi.VCMI.metainfo.xml b/launcher/eu.vcmi.VCMI.metainfo.xml index 8fa19bf1d..1f6c55cdc 100644 --- a/launcher/eu.vcmi.VCMI.metainfo.xml +++ b/launcher/eu.vcmi.VCMI.metainfo.xml @@ -90,6 +90,7 @@ vcmilauncher.desktop + From 69379b6e1b0d4301cfe1ce6d576df74861d06145 Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Mon, 15 Jul 2024 07:15:09 +0000 Subject: [PATCH 09/12] Update changelog --- ChangeLog.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index 2ffef722a..4124de750 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,3 +1,13 @@ +# 1.5.4 -> 1.5.5 + +* Fixed crash when advancing to the next scenario in campaigns when the hero not transferring has a combination artefact that can be transferred to the next scenario. +* Fixed game not updating information such as hero path and current music on new day +* Changed default battle queue hotkey from Q to Z to match HD Mod / HotA +* Changed default hotkey for finishing battle with quick combat from E to Z to match HD Mod / HotA +* Creature casting now uses both F and G keyboard hotkeys +* Shift+left click now directly opens the hero window when two heroes are in town +* Fixed handling of alternative actions for creatures that have more than two potential actions, such as move, shoot, and cast spells. + # 1.5.3 -> 1.5.4 ### Stability From a09a0d41c37d4123e5e68cb02a61a699849df92b Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Mon, 15 Jul 2024 16:42:57 +0000 Subject: [PATCH 10/12] Added missing option to schemas and docs --- config/schemas/objectType.json | 6 ++++++ docs/modders/Map_Object_Format.md | 3 +++ 2 files changed, 9 insertions(+) diff --git a/config/schemas/objectType.json b/config/schemas/objectType.json index 272e5d266..b470bc1cc 100644 --- a/config/schemas/objectType.json +++ b/config/schemas/objectType.json @@ -40,6 +40,12 @@ "$ref" : "objectTemplate.json" } }, + + "battleground" : { + "description" : "Battleground that will be used for combats in this object. Overrides terrain this object was placed on", + "type" : "string" + }, + "sounds" : { "type" : "object", "additionalProperties" : false, diff --git a/docs/modders/Map_Object_Format.md b/docs/modders/Map_Object_Format.md index 7183c25e8..0078b883b 100644 --- a/docs/modders/Map_Object_Format.md +++ b/docs/modders/Map_Object_Format.md @@ -58,6 +58,9 @@ Full object consists from 3 parts: // How valuable this object is to AI "aiValue" : 1000, + // Battleground that will be used for combats in this object. Overrides terrain this object was placed on + "battleground" : "cursed_ground", + // Sounds assigned to this object "sounds" : { // Ambient sounds that plays when current hero is near this object From 30569a112cc2aa2c1efc0ecd2361a1e2602307f7 Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Tue, 16 Jul 2024 10:42:25 +0000 Subject: [PATCH 11/12] Fix crash on attempt to transfer component of a combined artifact --- lib/gameState/CGameStateCampaign.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/gameState/CGameStateCampaign.cpp b/lib/gameState/CGameStateCampaign.cpp index ea4f6d72e..a016cc6ee 100644 --- a/lib/gameState/CGameStateCampaign.cpp +++ b/lib/gameState/CGameStateCampaign.cpp @@ -120,6 +120,11 @@ void CGameStateCampaign::trimCrossoverHeroesParameters(const CampaignTravel & tr if(!info) return false; + // FIXME: double-check how H3 handles case of transferring components of a combined artifact if entire combined artifact is not transferrable + // For example, what happens if hero has assembled Angelic Alliance, AA is not marked is transferrable, but Sandals can be transferred? Should artifact be disassembled? + if (info->locked) + return false; + // TODO: why would there be nullptr artifacts? const CArtifactInstance *art = info->artifact; if(!art) From 0e57862f9405bfa3873d0ec456cc26cf58fd5d81 Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Tue, 16 Jul 2024 10:49:46 +0000 Subject: [PATCH 12/12] Set release date to July, 17th --- debian/changelog | 2 +- launcher/eu.vcmi.VCMI.metainfo.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 1f04918d0..592ea716b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,7 +2,7 @@ vcmi (1.5.5) jammy; urgency=medium * New upstream release - -- Ivan Savenko Fri, 19 Jul 2024 12:00:00 +0200 + -- Ivan Savenko Wed, 17 Jul 2024 12:00:00 +0200 vcmi (1.5.4) jammy; urgency=medium diff --git a/launcher/eu.vcmi.VCMI.metainfo.xml b/launcher/eu.vcmi.VCMI.metainfo.xml index 1f6c55cdc..94e15aeb3 100644 --- a/launcher/eu.vcmi.VCMI.metainfo.xml +++ b/launcher/eu.vcmi.VCMI.metainfo.xml @@ -90,7 +90,7 @@ vcmilauncher.desktop - +