mirror of
https://github.com/vcmi/vcmi.git
synced 2025-01-02 00:10:22 +02:00
Merge pull request #4166 from IvanSavenko/release_153
Preparation for 1.5.3 release
This commit is contained in:
commit
650dfcbed8
@ -621,6 +621,9 @@ BattleScore BattleExchangeEvaluator::calculateExchange(
|
||||
if(!exchangeBattle->getForUpdate(u->unitId())->alive())
|
||||
return false;
|
||||
|
||||
if (!u->getPosition().isValid())
|
||||
return false; // e.g. tower shooters
|
||||
|
||||
return vstd::contains_if(reachabilityMap.at(u->getPosition()), [&attacker](const battle::Unit * other) -> bool
|
||||
{
|
||||
return attacker->unitId() == other->unitId();
|
||||
|
@ -9,6 +9,8 @@
|
||||
* Game should now generate crash dump on uncaught c++ exception throw
|
||||
* Fixed crash when player finishes game with negative score
|
||||
* Fixed crash when opening tavern window in some localisations
|
||||
* Fixed crash on loading previously generated random map when mods that add object with same name are used
|
||||
* Game will now display an error message instead of silent crash if game data directory is not accessible
|
||||
|
||||
### Mechanics
|
||||
* Transport Artefact victory condition will no longer trigger if another player has completed it.
|
||||
@ -18,6 +20,7 @@
|
||||
* Fixed hero not being able to learn spells from a mod in some cases, even if they are available from the town's mage guild.
|
||||
* The game will now actually take resources from seers' huts with the Gather Resources mission instead of awarding them.
|
||||
* Heroes with double spell points will no longer trigger the Mana Vortex.
|
||||
* If turn timer runs out during pve battle game will end player turn after a battle instead of forcing retreat
|
||||
|
||||
### Interface
|
||||
* Fixed reversed button functions in Exchange Window
|
||||
@ -58,6 +61,7 @@
|
||||
* Fixed potential crash when Nullkiller AI has access to Town Portal spell
|
||||
* Fixed potential crash when Battle AI selects a spell to cast from a hero with summon spells.
|
||||
* Several fixes to Nullkiller AI exploration logic
|
||||
* Fixed bug leading to Battle AI doing nothing if targeted unit is unreachable
|
||||
|
||||
### Random Maps Generator
|
||||
* Fixed crash when player selects a random number of players and selects a different colour to play, resulting in a non-continuous list of players.
|
||||
|
@ -55,7 +55,7 @@
|
||||
"vcmi.radialWheel.moveDown" : "Mover para baixo",
|
||||
"vcmi.radialWheel.moveBottom" : "Mover para o fundo",
|
||||
|
||||
"vcmi.spellBook.search" : "procurar...",
|
||||
"vcmi.spellBook.search" : "Procurar...",
|
||||
|
||||
"vcmi.mainMenu.serverConnecting" : "Conectando...",
|
||||
"vcmi.mainMenu.serverAddressEnter" : "Insira o endereço:",
|
||||
@ -139,9 +139,9 @@
|
||||
"vcmi.server.errors.existingProcess" : "Outro processo do servidor VCMI está em execução. Por favor, termine-o antes de iniciar um novo jogo.",
|
||||
"vcmi.server.errors.modsToEnable" : "{Os seguintes mods são necessários}",
|
||||
"vcmi.server.errors.modsToDisable" : "{Os seguintes mods devem ser desativados}",
|
||||
"vcmi.server.errors.modNoDependency" : "Falha ao carregar mod {'%s'}!\n Ele depende do mod {'%s'} que não está ativo!\n",
|
||||
"vcmi.server.errors.modConflict" : "Falha ao carregar mod {'%s'}!\n Conflita com o mod ativo {'%s'}!\n",
|
||||
"vcmi.server.errors.unknownEntity" : "Falha ao carregar salvamento! Entidade desconhecida '%s' encontrada no jogo salvo! O salvamento pode não ser compatível com a versão atualmente instalada dos mods!",
|
||||
"vcmi.server.errors.modNoDependency" : "Falha ao carregar o mod {'%s'}!\n Ele depende do mod {'%s'} que não está ativo!\n",
|
||||
"vcmi.server.errors.modConflict" : "Falha ao carregar o mod {'%s'}!\n Conflita com o mod ativo {'%s'}!\n",
|
||||
"vcmi.server.errors.unknownEntity" : "Falha ao carregar o salvamento! Entidade desconhecida '%s' encontrada no jogo salvo! O salvamento pode não ser compatível com a versão atualmente instalada dos mods!",
|
||||
|
||||
"vcmi.dimensionDoor.seaToLandError" : "Não é possível teleportar do mar para a terra ou vice-versa com uma Porta Dimensional.",
|
||||
|
||||
@ -189,8 +189,8 @@
|
||||
"vcmi.adventureOptions.infoBarPick.help" : "{Mostra as Mensagens no Painel de Informações}\n\nSempre que possível, as mensagens do jogo provenientes de objetos no mapa serão mostradas no painel de informações, em vez de aparecerem em uma janela separada.",
|
||||
"vcmi.adventureOptions.numericQuantities.hover" : "Quantidades Numéricas de Criaturas",
|
||||
"vcmi.adventureOptions.numericQuantities.help" : "{Quantidades Numéricas de Criaturas}\n\nMostra as quantidades aproximadas de criaturas inimigas no formato numérico A-B.",
|
||||
"vcmi.adventureOptions.forceMovementInfo.hover" : "Mostrar Sempre o Custo de Movimento",
|
||||
"vcmi.adventureOptions.forceMovementInfo.help" : "{Mostrar Sempre o Custo de Movimento}\n\nSempre mostra os dados de pontos de movimento na barra de status (em vez de apenas visualizá-los enquanto você mantém pressionada a tecla ALT).",
|
||||
"vcmi.adventureOptions.forceMovementInfo.hover" : "Sempre Mostrar o Custo de Movimento",
|
||||
"vcmi.adventureOptions.forceMovementInfo.help" : "{Sempre Mostrar o Custo de Movimento}\n\nSempre mostra os dados de pontos de movimento na barra de status (em vez de apenas visualizá-los enquanto você mantém pressionada a tecla ALT).",
|
||||
"vcmi.adventureOptions.showGrid.hover" : "Mostrar Grade",
|
||||
"vcmi.adventureOptions.showGrid.help" : "{Mostrar Grade}\n\nMostra a sobreposição da grade, destacando as fronteiras entre as telhas do mapa de aventura.",
|
||||
"vcmi.adventureOptions.borderScroll.hover" : "Rolagem de Borda",
|
||||
@ -235,8 +235,8 @@
|
||||
"vcmi.battleOptions.showStickyHeroInfoWindows.help": "{Mostra as Janelas de Estatísticas de Heróis}\n\nAlterna permanentemente as janelas de estatísticas dos heróis que mostram estatísticas primárias e pontos de feitiço.",
|
||||
"vcmi.battleOptions.skipBattleIntroMusic.hover": "Pular Música de Introdução",
|
||||
"vcmi.battleOptions.skipBattleIntroMusic.help": "{Pula a Música de Introdução}\n\nPermite ações durante a música de introdução que toca no início de cada batalha.",
|
||||
"vcmi.battleOptions.endWithAutocombat.hover": "Terminar a Batalha",
|
||||
"vcmi.battleOptions.endWithAutocombat.help": "{Termina a Batalha}\n\nO Combate Automático reproduz a batalha até o final instantâneo.",
|
||||
"vcmi.battleOptions.endWithAutocombat.hover": "Terminar a batalha",
|
||||
"vcmi.battleOptions.endWithAutocombat.help": "{Termina a batalha}\n\nO Combate Automático reproduz a batalha até o final instantâneo.",
|
||||
|
||||
"vcmi.adventureMap.revisitObject.hover" : "Revisitar Objeto",
|
||||
"vcmi.adventureMap.revisitObject.help" : "{Revisitar Objeto}\n\nSe um herói estiver atualmente em um Objeto do Mapa, ele pode revisitar o local.",
|
||||
@ -277,9 +277,9 @@
|
||||
"vcmi.tutorialWindow.decription.AbortSpell" : "Toque e mantenha pressionado para cancelar um feitiço.",
|
||||
|
||||
"vcmi.otherOptions.availableCreaturesAsDwellingLabel.hover" : "Mostrar Criaturas Disponíveis",
|
||||
"vcmi.otherOptions.availableCreaturesAsDwellingLabel.help" : "{Mostrar Criaturas Disponíveis}\n\nMostra o número de criaturas disponíveis para compra em vez de seu crescimento no resumo da cidade (canto inferior esquerdo da tela da cidade).",
|
||||
"vcmi.otherOptions.creatureGrowthAsDwellingLabel.hover" : "Mostrar Crescimento Semanal de Criaturas",
|
||||
"vcmi.otherOptions.creatureGrowthAsDwellingLabel.help" : "{Mostrar Crescimento Semanal de Criaturas}\n\nMostra o crescimento semanal das criaturas em vez da quantidade disponível no resumo da cidade (canto inferior esquerdo da tela da cidade).",
|
||||
"vcmi.otherOptions.availableCreaturesAsDwellingLabel.help" : "{Mostrar Criaturas Disponíveis}\n\nMostra o número de criaturas disponíveis para compra em vez de sua produção no resumo da cidade (canto inferior esquerdo da tela da cidade).",
|
||||
"vcmi.otherOptions.creatureGrowthAsDwellingLabel.hover" : "Mostrar Produção Semanal de Criaturas",
|
||||
"vcmi.otherOptions.creatureGrowthAsDwellingLabel.help" : "{Mostrar Produção Semanal de Criaturas}\n\nMostra a produção semanal das criaturas em vez da quantidade disponível no resumo da cidade (canto inferior esquerdo da tela da cidade).",
|
||||
"vcmi.otherOptions.compactTownCreatureInfo.hover" : "Informações Compactas de Criaturas",
|
||||
"vcmi.otherOptions.compactTownCreatureInfo.help" : "{Informações Compactas de Criaturas}\n\nMostra informações menores para criaturas da cidade no resumo da cidade (canto inferior esquerdo da tela da cidade).",
|
||||
|
||||
@ -352,18 +352,18 @@
|
||||
|
||||
"vcmi.optionsTab.turnTime.select" : "Selecionar cronômetro do turno",
|
||||
"vcmi.optionsTab.turnTime.unlimited" : "Tempo de turno ilimitado",
|
||||
"vcmi.optionsTab.turnTime.classic.1" : "Cronômetro clássico: 1 minuto",
|
||||
"vcmi.optionsTab.turnTime.classic.2" : "Cronômetro clássico: 2 minutos",
|
||||
"vcmi.optionsTab.turnTime.classic.5" : "Cronômetro clássico: 5 minutos",
|
||||
"vcmi.optionsTab.turnTime.classic.10" : "Cronômetro clássico: 10 minutos",
|
||||
"vcmi.optionsTab.turnTime.classic.20" : "Cronômetro clássico: 20 minutos",
|
||||
"vcmi.optionsTab.turnTime.classic.30" : "Cronômetro clássico: 30 minutos",
|
||||
"vcmi.optionsTab.turnTime.chess.20" : "Xadrez: 20:00 + 10:00 + 02:00 + 00:00",
|
||||
"vcmi.optionsTab.turnTime.chess.16" : "Xadrez: 16:00 + 08:00 + 01:30 + 00:00",
|
||||
"vcmi.optionsTab.turnTime.chess.8" : "Xadrez: 08:00 + 04:00 + 01:00 + 00:00",
|
||||
"vcmi.optionsTab.turnTime.chess.4" : "Xadrez: 04:00 + 02:00 + 00:30 + 00:00",
|
||||
"vcmi.optionsTab.turnTime.chess.2" : "Xadrez: 02:00 + 01:00 + 00:15 + 00:00",
|
||||
"vcmi.optionsTab.turnTime.chess.1" : "Xadrez: 01:00 + 01:00 + 00:00 + 00:00",
|
||||
"vcmi.optionsTab.turnTime.classic.1" : "Cronômetro clássico 1 minuto",
|
||||
"vcmi.optionsTab.turnTime.classic.2" : "Cronômetro clássico 2 minutos",
|
||||
"vcmi.optionsTab.turnTime.classic.5" : "Cronômetro clássico 5 minutos",
|
||||
"vcmi.optionsTab.turnTime.classic.10" : "Cronômetro clássico 10 minutos",
|
||||
"vcmi.optionsTab.turnTime.classic.20" : "Cronômetro clássico 20 minutos",
|
||||
"vcmi.optionsTab.turnTime.classic.30" : "Cronômetro clássico 30 minutos",
|
||||
"vcmi.optionsTab.turnTime.chess.20" : "Xadrez 20:00 + 10:00 + 02:00 + 00:00",
|
||||
"vcmi.optionsTab.turnTime.chess.16" : "Xadrez 16:00 + 08:00 + 01:30 + 00:00",
|
||||
"vcmi.optionsTab.turnTime.chess.8" : "Xadrez 08:00 + 04:00 + 01:00 + 00:00",
|
||||
"vcmi.optionsTab.turnTime.chess.4" : "Xadrez 04:00 + 02:00 + 00:30 + 00:00",
|
||||
"vcmi.optionsTab.turnTime.chess.2" : "Xadrez 02:00 + 01:00 + 00:15 + 00:00",
|
||||
"vcmi.optionsTab.turnTime.chess.1" : "Xadrez 01:00 + 01:00 + 00:00 + 00:00",
|
||||
|
||||
"vcmi.optionsTab.simturns.select" : "Selecionar turnos simultâneos",
|
||||
"vcmi.optionsTab.simturns.none" : "Sem turnos simultâneos",
|
||||
@ -490,13 +490,13 @@
|
||||
"core.bonus.AIR_IMMUNITY.description" : "Imune a todos os feitiços da escola de magia do Ar",
|
||||
"core.bonus.ATTACKS_ALL_ADJACENT.name" : "Ataque em Todas as Direções",
|
||||
"core.bonus.ATTACKS_ALL_ADJACENT.description" : "Ataca todos os inimigos adjacentes",
|
||||
"core.bonus.BLOCKS_RETALIATION.name" : "Sem Contra-ataques",
|
||||
"core.bonus.BLOCKS_RETALIATION.name" : "Evita Contra-ataques",
|
||||
"core.bonus.BLOCKS_RETALIATION.description" : "O inimigo não pode contra-atacar",
|
||||
"core.bonus.BLOCKS_RANGED_RETALIATION.name" : "Sem Contra-ataques à Distância",
|
||||
"core.bonus.BLOCKS_RANGED_RETALIATION.name" : "Evita Contra-ataques à Distância",
|
||||
"core.bonus.BLOCKS_RANGED_RETALIATION.description" : "O inimigo não pode contra-atacar usando um ataque à distância",
|
||||
"core.bonus.CATAPULT.name" : "Catapulta",
|
||||
"core.bonus.CATAPULT.description" : "Ataca as muralhas de cerco",
|
||||
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name" : "Reduz Custo de Conjuração (${val})",
|
||||
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name" : "Custo de Conjuração (${val})",
|
||||
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.description" : "Reduz o custo de conjuração de feitiços para o herói em ${val}",
|
||||
"core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.name" : "Absorvedor Mágico (${val})",
|
||||
"core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.description" : "Aumenta o custo de conjuração dos feitiços inimigos em ${val}",
|
||||
@ -507,7 +507,7 @@
|
||||
"core.bonus.DEATH_STARE.name" : "Olhar da Morte (${val}%)",
|
||||
"core.bonus.DEATH_STARE.description" : "Tem ${val}% de chance de matar uma única criatura",
|
||||
"core.bonus.DEFENSIVE_STANCE.name" : "Bônus de Defesa",
|
||||
"core.bonus.DEFENSIVE_STANCE.description" : "+${val} de defesa ao se defender",
|
||||
"core.bonus.DEFENSIVE_STANCE.description" : "+${val} de Defesa ao se defender",
|
||||
"core.bonus.DESTRUCTION.name" : "Destruição",
|
||||
"core.bonus.DESTRUCTION.description" : "Tem ${val}% de chance de matar unidades extras após o ataque",
|
||||
"core.bonus.DOUBLE_DAMAGE_CHANCE.name" : "Golpe Mortal",
|
||||
@ -521,7 +521,7 @@
|
||||
"core.bonus.ENCHANTED.name" : "Encantado",
|
||||
"core.bonus.ENCHANTED.description" : "Afetado por ${subtype.spell} permanente",
|
||||
"core.bonus.ENEMY_ATTACK_REDUCTION.name" : "Ignorar Ataque (${val}%)",
|
||||
"core.bonus.ENEMY_ATTACK_REDUCTION.description" : "Ao ser atacado, ${val}% do ataque do atacante é ignorado",
|
||||
"core.bonus.ENEMY_ATTACK_REDUCTION.description" : "Ao ser atacado, ${val}% do ataque do agressor é ignorado",
|
||||
"core.bonus.ENEMY_DEFENCE_REDUCTION.name" : "Ignorar Defesa (${val}%)",
|
||||
"core.bonus.ENEMY_DEFENCE_REDUCTION.description" : "Ao atacar, ${val}% da defesa do defensor é ignorada",
|
||||
"core.bonus.FIRE_IMMUNITY.name" : "Imunidade ao Fogo",
|
||||
@ -545,7 +545,7 @@
|
||||
"core.bonus.GENERAL_DAMAGE_REDUCTION.name" : "Redução de Dano (${val}%)",
|
||||
"core.bonus.GENERAL_DAMAGE_REDUCTION.description" : "Reduz o dano físico de ataques à distância ou corpo a corpo",
|
||||
"core.bonus.HATE.name" : "Odeia ${subtype.creature}",
|
||||
"core.bonus.HATE.description" : "Causa ${val}% a mais de dano a ${subtype.creature}",
|
||||
"core.bonus.HATE.description" : "${val}% a mais de dano a ${subtype.creature}",
|
||||
"core.bonus.HEALER.name" : "Curandeiro",
|
||||
"core.bonus.HEALER.description" : "Cura unidades aliadas",
|
||||
"core.bonus.HP_REGENERATION.name" : "Regeneração",
|
||||
|
@ -208,7 +208,14 @@ int main(int argc, char * argv[])
|
||||
logGlobal->info("The log file will be saved to %s", logPath);
|
||||
|
||||
// Init filesystem and settings
|
||||
preinitDLL(::console, false);
|
||||
try
|
||||
{
|
||||
preinitDLL(::console, false);
|
||||
}
|
||||
catch (const DataLoadingException & e)
|
||||
{
|
||||
handleFatalError(e.what(), true);
|
||||
}
|
||||
|
||||
Settings session = settings.write["session"];
|
||||
auto setSettingBool = [&](std::string key, std::string arg) {
|
||||
|
@ -1540,6 +1540,9 @@ CHallInterface::CHallInterface(const CGTownInstance * Town):
|
||||
const CBuilding * building = nullptr;
|
||||
for(auto & buildingID : boxList[row][col])//we are looking for the first not built structure
|
||||
{
|
||||
if (town->town->buildings.count(buildingID) == 0)
|
||||
throw std::runtime_error("Town " + Town->town->faction->getJsonKey() + " has no building with ID " + std::to_string(buildingID.getNum()));
|
||||
|
||||
const CBuilding * current = town->town->buildings.at(buildingID);
|
||||
if(vstd::contains(town->builtBuildings, buildingID))
|
||||
{
|
||||
|
@ -2,6 +2,7 @@
|
||||
[![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.1/total)](https://github.com/vcmi/vcmi/releases/tag/1.5.1)
|
||||
[![Github Downloads](https://img.shields.io/github/downloads/vcmi/vcmi/1.5.2/total)](https://github.com/vcmi/vcmi/releases/tag/1.5.2)
|
||||
[![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/total)](https://github.com/vcmi/vcmi/releases)
|
||||
|
||||
# VCMI Project
|
||||
|
@ -349,10 +349,10 @@ Negates all natural immunities for affected stacks. (Orb of Vulnerability)
|
||||
|
||||
### OPENING_BATTLE_SPELL
|
||||
|
||||
In battle, army affected by this bonus will cast spell at the very start of the battle
|
||||
In battle, army affected by this bonus will cast spell at the very start of the battle. Spell is always cast at expert level.
|
||||
|
||||
- subtype: spell identifer
|
||||
- val: spell mastery level
|
||||
- val: duration of the spell, in rounds
|
||||
|
||||
### FREE_SHIP_BOARDING
|
||||
|
||||
|
@ -79,7 +79,7 @@
|
||||
<message>
|
||||
<location filename="../aboutProject/aboutproject_moc.ui" line="234"/>
|
||||
<source>Configuration files directory</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Diretório de arquivos de configuração</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../aboutProject/aboutproject_moc.ui" line="297"/>
|
||||
@ -294,7 +294,7 @@
|
||||
<message>
|
||||
<location filename="../modManager/cmodlistview_moc.ui" line="105"/>
|
||||
<source>Reload repositories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Recarregar repositórios</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../modManager/cmodlistview_moc.ui" line="340"/>
|
||||
@ -574,7 +574,7 @@ Instalar o download realizado com sucesso?</translation>
|
||||
<message>
|
||||
<location filename="../modManager/cmodmanager.cpp" line="204"/>
|
||||
<source>Required mod %1 is not enabled</source>
|
||||
<translation>O mod necessário %1 não está habilitado</translation>
|
||||
<translation>O mod necessário %1 não está ativado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../modManager/cmodmanager.cpp" line="213"/>
|
||||
@ -664,132 +664,132 @@ Instalar o download realizado com sucesso?</translation>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="507"/>
|
||||
<source>Adventure Map Allies</source>
|
||||
<translation>Aliados do mapa de aventura</translation>
|
||||
<translation>Aliados do Mapa de Aventura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="59"/>
|
||||
<source>Online Lobby port</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Porta da Sala de Espera On-line</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="66"/>
|
||||
<source>Autocombat AI in battles</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>IA de combate automático nas batalhas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="73"/>
|
||||
<source>Sticks Sensitivity</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Sensibilidade dos Analógicos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="87"/>
|
||||
<source>Haptic Feedback</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Resposta Tátil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="94"/>
|
||||
<source>Software Cursor</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Cursor por Software</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="108"/>
|
||||
<source>Online Lobby address</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Endereço da Sala de Espera On-line</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="115"/>
|
||||
<source>Upscaling Filter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Filtro de Aumento de Escala</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="122"/>
|
||||
<source>Use Relative Pointer Mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Usar Modo de Ponteiro Relativo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="195"/>
|
||||
<source>Nearest</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Mais Próximo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="200"/>
|
||||
<source>Linear</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Linear</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="205"/>
|
||||
<source>Best (Linear)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Melhor (Linear)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="231"/>
|
||||
<source>Input - Touchscreen</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Entrada - Tela de Toque</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="440"/>
|
||||
<source>Adventure Map Enemies</source>
|
||||
<translation>Inimigos do mapa de aventura</translation>
|
||||
<translation>Inimigos do Mapa de Aventura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="474"/>
|
||||
<source>Network</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Linear</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="540"/>
|
||||
<source>Audio</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Áudio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="578"/>
|
||||
<source>Relative Pointer Speed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Velocidade do Ponteiro Relativo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="585"/>
|
||||
<source>Music Volume</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Volume da Música</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="606"/>
|
||||
<source>Ignore SSL errors</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ignorar erros SSL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="618"/>
|
||||
<source>Input - Mouse</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Entrada - Mouse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="628"/>
|
||||
<source>Long Touch Duration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Duração do Toque Longo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="635"/>
|
||||
<source>%</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>%</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="658"/>
|
||||
<source>Controller Click Tolerance</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Tolerância de Clique do Controle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="665"/>
|
||||
<source>Touch Tap Tolerance</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Tolerância de Toque Tátil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="704"/>
|
||||
<source>Input - Controller</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Entrada - Controle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="771"/>
|
||||
<source>Sound Volume</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Volume do Som</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="801"/>
|
||||
@ -818,7 +818,7 @@ Instalar o download realizado com sucesso?</translation>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="514"/>
|
||||
<source>Framerate Limit</source>
|
||||
<translation>Limite de taxa de quadros</translation>
|
||||
<translation>Limite de Taxa de Quadros</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="778"/>
|
||||
@ -828,12 +828,12 @@ Instalar o download realizado com sucesso?</translation>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="839"/>
|
||||
<source>Mouse Click Tolerance</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Tolerância de Clique do Mouse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="853"/>
|
||||
<source>Sticks Acceleration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Aceleração dos Analógicos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../settingsView/csettingsview_moc.ui" line="995"/>
|
||||
@ -1064,12 +1064,12 @@ Heroes® of Might and Magic® III HD atualmente não é suportado!</translation>
|
||||
<message>
|
||||
<location filename="../firstLaunch/firstlaunch_moc.ui" line="304"/>
|
||||
<source>Use offline installer from gog.com</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Usar instalador offline do gog.com</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../firstLaunch/firstlaunch_moc.ui" line="317"/>
|
||||
<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 type="unfinished"></translation>
|
||||
<translation>Você pode copiar manualmente os diretórios Mapas, Dados e Mp3 do diretório do jogo original para o diretório de dados do VCMI que você pode ver no topo desta página</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../firstLaunch/firstlaunch_moc.ui" line="336"/>
|
||||
@ -1106,23 +1106,24 @@ Heroes® of Might and Magic® III HD atualmente não é suportado!</translation>
|
||||
<message>
|
||||
<location filename="../firstLaunch/firstlaunch_moc.ui" line="395"/>
|
||||
<source>Installing... %p%</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Instalando... %p%</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../firstLaunch/firstlaunch_moc.ui" line="424"/>
|
||||
<source>If you already have Heroes III files on your device, you can select this directory and VCMI will copy the existing data automatically.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Se você já tem arquivos do Heroes III no seu dispositivo, você pode selecionar este diretório e o VCMI irá copiar os dados existentes automaticamente.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../firstLaunch/firstlaunch_moc.ui" line="466"/>
|
||||
<source>Copy existing files</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Copiar arquivos existentes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../firstLaunch/firstlaunch_moc.ui" line="511"/>
|
||||
<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>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Se você possui o Heroes III no gog.com, você pode baixar o instalador offline de backup do gog.com, e o VCMI irá importar os dados do Heroes III usando o instalador offline.
|
||||
O instalador offline consiste em duas partes, .exe e .bin. Certifique-se de baixar ambas.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../firstLaunch/firstlaunch_moc.ui" line="696"/>
|
||||
@ -1173,7 +1174,7 @@ Offline installer consists of two parts, .exe and .bin. Make sure you download b
|
||||
<message>
|
||||
<location filename="../firstLaunch/firstlaunch_moc.ui" line="354"/>
|
||||
<source>Manual Installation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Instalação Manual</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../firstLaunch/firstlaunch_moc.ui" line="367"/>
|
||||
@ -1487,13 +1488,14 @@ Por favor, selecione o diretório com Heroes III: Complete Edition ou Heroes III
|
||||
<message>
|
||||
<location filename="../main.cpp" line="121"/>
|
||||
<source>Error starting executable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Erro ao iniciar o executável</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../main.cpp" line="122"/>
|
||||
<source>Failed to start %1
|
||||
Reason: %2</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Falha ao iniciar %1
|
||||
Motivo: %2</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -10,6 +10,8 @@
|
||||
#include "StdInc.h"
|
||||
#include "CFileInputStream.h"
|
||||
|
||||
#include "../ExceptionsCommon.h"
|
||||
|
||||
VCMI_LIB_NAMESPACE_BEGIN
|
||||
|
||||
CFileInputStream::CFileInputStream(const boost::filesystem::path & file, si64 start, si64 size)
|
||||
@ -18,7 +20,7 @@ CFileInputStream::CFileInputStream(const boost::filesystem::path & file, si64 st
|
||||
fileStream{file.c_str(), std::ios::in | std::ios::binary}
|
||||
{
|
||||
if (fileStream.fail())
|
||||
throw std::runtime_error("File " + file.string() + " isn't available.");
|
||||
throw DataLoadingException("Failed to open file '" + file.string() + "'. Reason: " + strerror(errno) );
|
||||
|
||||
if (dataSize == 0)
|
||||
{
|
||||
|
@ -12,14 +12,22 @@
|
||||
|
||||
#include "CFileInputStream.h"
|
||||
|
||||
#include "../ExceptionsCommon.h"
|
||||
|
||||
VCMI_LIB_NAMESPACE_BEGIN
|
||||
|
||||
CFilesystemLoader::CFilesystemLoader(std::string _mountPoint, boost::filesystem::path baseDirectory, size_t depth, bool initial):
|
||||
baseDirectory(std::move(baseDirectory)),
|
||||
mountPoint(std::move(_mountPoint)),
|
||||
fileList(listFiles(mountPoint, depth, initial)),
|
||||
recursiveDepth(depth)
|
||||
{
|
||||
try {
|
||||
fileList = listFiles(mountPoint, depth, initial);
|
||||
}
|
||||
catch (const boost::filesystem::filesystem_error & e) {
|
||||
throw DataLoadingException("Failed to load content of '" + baseDirectory.string() + "'. Reason: " + e.what());
|
||||
}
|
||||
|
||||
logGlobal->trace("File system loaded, %d files found", fileList.size());
|
||||
}
|
||||
|
||||
|
@ -226,10 +226,7 @@ void CModHandler::loadOneMod(std::string modName, const std::string & parent, co
|
||||
|
||||
if(CResourceHandler::get("initial")->existsResource(CModInfo::getModFile(modFullName)))
|
||||
{
|
||||
JsonParsingSettings settings;
|
||||
settings.mode = JsonParsingSettings::JsonFormatMode::JSON; // TODO: remove once Android launcher with its strict parser is gone
|
||||
|
||||
CModInfo mod(modFullName, modSettings[modName], JsonNode(CModInfo::getModFile(modFullName), settings));
|
||||
CModInfo mod(modFullName, modSettings[modName], JsonNode(CModInfo::getModFile(modFullName)));
|
||||
if (!parent.empty()) // this is submod, add parent to dependencies
|
||||
mod.dependencies.insert(parent);
|
||||
|
||||
|
@ -129,37 +129,37 @@
|
||||
<message>
|
||||
<location filename="../inspector/herospellwidget.ui" line="29"/>
|
||||
<source>Spells</source>
|
||||
<translation type="unfinished">Feitiços</translation>
|
||||
<translation>Feitiços</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../inspector/herospellwidget.ui" line="47"/>
|
||||
<source>Customize spells</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Personalizar feitiços</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../inspector/herospellwidget.ui" line="76"/>
|
||||
<source>Level 1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Nível 1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../inspector/herospellwidget.ui" line="114"/>
|
||||
<source>Level 2</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Nível 2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../inspector/herospellwidget.ui" line="152"/>
|
||||
<source>Level 3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Nível 3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../inspector/herospellwidget.ui" line="190"/>
|
||||
<source>Level 4</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Nível 4</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../inspector/herospellwidget.ui" line="228"/>
|
||||
<source>Level 5</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Nível 5</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1555,12 +1555,12 @@
|
||||
<message>
|
||||
<location filename="../validator.cpp" line="146"/>
|
||||
<source>Spell scroll %1 is prohibited by map settings</source>
|
||||
<translation>O pergaminho de feitiço %1 é proibido pelas configurações do mapa</translation>
|
||||
<translation>O pergaminho mágico %1 é proibido pelas configurações do mapa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../validator.cpp" line="149"/>
|
||||
<source>Spell scroll %1 doesn't have instance assigned and must be removed</source>
|
||||
<translation>O pergaminho de feitiço %1 não tem instância atribuída e deve ser removido</translation>
|
||||
<translation>O pergaminho mágico %1 não tem instância atribuída e deve ser removido</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../validator.cpp" line="155"/>
|
||||
@ -1738,32 +1738,32 @@
|
||||
<message>
|
||||
<location filename="../windownewmap.ui" line="164"/>
|
||||
<source>S (36x36)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>S (36x36)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../windownewmap.ui" line="169"/>
|
||||
<source>M (72x72)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>M (72x72)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../windownewmap.ui" line="174"/>
|
||||
<source>L (108x108)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>L (108x108)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../windownewmap.ui" line="184"/>
|
||||
<source>H (180x180)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>H (180x180)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../windownewmap.ui" line="189"/>
|
||||
<source>XH (216x216)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>XH (216x216)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../windownewmap.ui" line="194"/>
|
||||
<source>G (252x252)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>G (252x252)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../windownewmap.ui" line="248"/>
|
||||
|
@ -313,10 +313,8 @@ void TurnTimerHandler::onBattleLoop(const BattleID & battleID, int waitTime)
|
||||
}
|
||||
else
|
||||
{
|
||||
BattleAction retreat;
|
||||
retreat.side = side;
|
||||
retreat.actionType = EActionType::RETREAT; //harsh punishment
|
||||
gameHandler.battles->makePlayerBattleAction(battleID, player, retreat);
|
||||
// battle vs neutrals - no-op, let battle run till the end
|
||||
// once battle is over player turn will be over due to running out of timer on adventure map
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user