1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-10 22:31:40 +02:00

Merge remote-tracking branch 'upstream/develop' into develop

This commit is contained in:
Xilmi
2024-10-27 10:03:26 +01:00
10 changed files with 50 additions and 42 deletions

View File

@@ -3,20 +3,20 @@
"vcmi.adventureMap.monsterThreat.levels.0" : "Bez námahy", "vcmi.adventureMap.monsterThreat.levels.0" : "Bez námahy",
"vcmi.adventureMap.monsterThreat.levels.1" : "Velmi slabá", "vcmi.adventureMap.monsterThreat.levels.1" : "Velmi slabá",
"vcmi.adventureMap.monsterThreat.levels.2" : "Slabá", "vcmi.adventureMap.monsterThreat.levels.2" : "Slabá",
"vcmi.adventureMap.monsterThreat.levels.3" : "Trochu slabší", "vcmi.adventureMap.monsterThreat.levels.3" : "O něco slabší",
"vcmi.adventureMap.monsterThreat.levels.4" : "Podobná", "vcmi.adventureMap.monsterThreat.levels.4" : "Rovnocenná",
"vcmi.adventureMap.monsterThreat.levels.5" : "Trochu silnější", "vcmi.adventureMap.monsterThreat.levels.5" : "O něco silnější",
"vcmi.adventureMap.monsterThreat.levels.6" : "Silná", "vcmi.adventureMap.monsterThreat.levels.6" : "Silná",
"vcmi.adventureMap.monsterThreat.levels.7" : "Velmi silná", "vcmi.adventureMap.monsterThreat.levels.7" : "Velmi silná",
"vcmi.adventureMap.monsterThreat.levels.8" : "Výzva", "vcmi.adventureMap.monsterThreat.levels.8" : "Výzva",
"vcmi.adventureMap.monsterThreat.levels.9" : "Převažující", "vcmi.adventureMap.monsterThreat.levels.9" : "Převaha",
"vcmi.adventureMap.monsterThreat.levels.10" : "Smrtelná", "vcmi.adventureMap.monsterThreat.levels.10" : "Smrtící",
"vcmi.adventureMap.monsterThreat.levels.11" : "Nemožná", "vcmi.adventureMap.monsterThreat.levels.11" : "Nehratelná",
"vcmi.adventureMap.monsterLevel" : "\n\nÚroveň %LEVEL %TOWN %ATTACK_TYPE jednotka", "vcmi.adventureMap.monsterLevel" : "\n\nÚroveň %LEVEL, %TOWN\nJednotka %ATTACK_TYPE",
"vcmi.adventureMap.monsterMeleeType" : "útok zblízka", "vcmi.adventureMap.monsterMeleeType" : "útočí zblízka",
"vcmi.adventureMap.monsterRangedType" : "útok na dálku", "vcmi.adventureMap.monsterRangedType" : "útočí na dálku",
"vcmi.adventureMap.search.hover" : "Prohledat mapový objekt", "vcmi.adventureMap.search.hover" : "Prohledat objekt",
"vcmi.adventureMap.search.help" : "Vyberte objekt na mapě pro prohledání.", "vcmi.adventureMap.search.help" : "Vyberte objekt na mapě k prohledání.",
"vcmi.adventureMap.confirmRestartGame" : "Jste si jisti, že chcete restartovat hru?", "vcmi.adventureMap.confirmRestartGame" : "Jste si jisti, že chcete restartovat hru?",
"vcmi.adventureMap.noTownWithMarket" : "Nejsou dostupné žádne tržnice!", "vcmi.adventureMap.noTownWithMarket" : "Nejsou dostupné žádne tržnice!",
@@ -61,7 +61,7 @@
"vcmi.radialWheel.moveDown" : "Posunout níže", "vcmi.radialWheel.moveDown" : "Posunout níže",
"vcmi.radialWheel.moveBottom" : "Přesunout dolů", "vcmi.radialWheel.moveBottom" : "Přesunout dolů",
"vcmi.spellBook.search" : "hledat...", "vcmi.spellBook.search" : "Hledat kouzlo",
"vcmi.spellResearch.canNotAfford" : "Nemáte dostatek prostředků k nahrazení {%SPELL1} za {%SPELL2}. Stále však můžete toto kouzlo zrušit a pokračovat ve výzkumu kouzel.", "vcmi.spellResearch.canNotAfford" : "Nemáte dostatek prostředků k nahrazení {%SPELL1} za {%SPELL2}. Stále však můžete toto kouzlo zrušit a pokračovat ve výzkumu kouzel.",
"vcmi.spellResearch.comeAgain" : "Výzkum už byl dnes proveden. Vraťte se zítra.", "vcmi.spellResearch.comeAgain" : "Výzkum už byl dnes proveden. Vraťte se zítra.",
@@ -86,7 +86,7 @@
"vcmi.lobby.sortDate" : "Řadit mapy dle data změny", "vcmi.lobby.sortDate" : "Řadit mapy dle data změny",
"vcmi.lobby.backToLobby" : "Vrátit se do lobby", "vcmi.lobby.backToLobby" : "Vrátit se do lobby",
"vcmi.lobby.author" : "Autor", "vcmi.lobby.author" : "Autor",
"vcmi.lobby.handicap" : "Handicap", "vcmi.lobby.handicap" : "Postih",
"vcmi.lobby.handicap.resource" : "Dává hráčům odpovídající zdroje navíc k běžným startovním zdrojům. Jsou povoleny záporné hodnoty, ale jsou omezeny na celkovou hodnotu 0 (hráč nikdy nezačíná se zápornými zdroji).", "vcmi.lobby.handicap.resource" : "Dává hráčům odpovídající zdroje navíc k běžným startovním zdrojům. Jsou povoleny záporné hodnoty, ale jsou omezeny na celkovou hodnotu 0 (hráč nikdy nezačíná se zápornými zdroji).",
"vcmi.lobby.handicap.income" : "Mění různé příjmy hráče podle procent. Výsledek je zaokrouhlen nahoru.", "vcmi.lobby.handicap.income" : "Mění různé příjmy hráče podle procent. Výsledek je zaokrouhlen nahoru.",
"vcmi.lobby.handicap.growth" : "Mění rychlost růstu jednotel v městech vlastněných hráčem. Výsledek je zaokrouhlen nahoru.", "vcmi.lobby.handicap.growth" : "Mění rychlost růstu jednotel v městech vlastněných hráčem. Výsledek je zaokrouhlen nahoru.",
@@ -215,7 +215,7 @@
"vcmi.systemOptions.resolutionButton.hover" : "Rozlišení: %wx%h", "vcmi.systemOptions.resolutionButton.hover" : "Rozlišení: %wx%h",
"vcmi.systemOptions.resolutionButton.help" : "{Vybrat rozlišení}\n\nZmění rozlišení herní obrazovky.", "vcmi.systemOptions.resolutionButton.help" : "{Vybrat rozlišení}\n\nZmění rozlišení herní obrazovky.",
"vcmi.systemOptions.resolutionMenu.hover" : "Vybrat rozlišení", "vcmi.systemOptions.resolutionMenu.hover" : "Vybrat rozlišení",
"vcmi.systemOptions.resolutionMenu.help" : "Změnit rozlišení herní obrazovky.", "vcmi.systemOptions.resolutionMenu.help" : "Změní rozlišení herní obrazovky.",
"vcmi.systemOptions.scalingButton.hover" : "Škálování rozhraní: %p%", "vcmi.systemOptions.scalingButton.hover" : "Škálování rozhraní: %p%",
"vcmi.systemOptions.scalingButton.help" : "{Škálování rozhraní}\n\nZmění škálování herního rozhraní", "vcmi.systemOptions.scalingButton.help" : "{Škálování rozhraní}\n\nZmění škálování herního rozhraní",
"vcmi.systemOptions.scalingMenu.hover" : "Vybrat škálování rozhraní", "vcmi.systemOptions.scalingMenu.hover" : "Vybrat škálování rozhraní",
@@ -244,14 +244,14 @@
"vcmi.adventureOptions.forceMovementInfo.help" : "{Vždy zobrazit cenu pohybu}\n\nVždy zobrazit informace o bodech pohybu v panelu informací. (Místo zobrazení pouze při stisknuté klávese ALT).", "vcmi.adventureOptions.forceMovementInfo.help" : "{Vždy zobrazit cenu pohybu}\n\nVždy zobrazit informace o bodech pohybu v panelu informací. (Místo zobrazení pouze při stisknuté klávese ALT).",
"vcmi.adventureOptions.showGrid.hover" : "Zobrazit mřížku", "vcmi.adventureOptions.showGrid.hover" : "Zobrazit mřížku",
"vcmi.adventureOptions.showGrid.help" : "{Zobrazit mřížku}\n\nZobrazit překrytí mřížkou, zvýrazňuje hranice mezi dlaždicemi mapy světa.", "vcmi.adventureOptions.showGrid.help" : "{Zobrazit mřížku}\n\nZobrazit překrytí mřížkou, zvýrazňuje hranice mezi dlaždicemi mapy světa.",
"vcmi.adventureOptions.borderScroll.hover" : "Posouvání okraji", "vcmi.adventureOptions.borderScroll.hover" : "Posouvání okrajem obrazovky",
"vcmi.adventureOptions.borderScroll.help" : "{Posouvání okraji}\n\nPosouvat mapu světa, když je kurzor na okraji obrazovky. Může být zakázáno držením klávesy CTRL.", "vcmi.adventureOptions.borderScroll.help" : "{Posouvání okrajem obrazovky}\n\nPosouvat mapu světa, když je kurzor na okraji obrazovky. Může být zakázáno držením klávesy CTRL.",
"vcmi.adventureOptions.infoBarCreatureManagement.hover" : "Správa jednotek v informačním panelu", "vcmi.adventureOptions.infoBarCreatureManagement.hover" : "Správa jednotek v informačním panelu",
"vcmi.adventureOptions.infoBarCreatureManagement.help" : "{Správa jednotek v informačním panelu}\n\nUmožňuje přeskupovat jednotky v informačním panelu namísto procházení standardních informací.", "vcmi.adventureOptions.infoBarCreatureManagement.help" : "{Správa jednotek v informačním panelu}\n\nUmožňuje přeskupovat jednotky v informačním panelu namísto procházení standardních informací.",
"vcmi.adventureOptions.leftButtonDrag.hover" : "Posouvání mapy levým kliknutím", "vcmi.adventureOptions.leftButtonDrag.hover" : "Posun levým tlač.",
"vcmi.adventureOptions.leftButtonDrag.help" : "{Posouvání mapy levým kliknutím}\n\nPosouvání mapy tažením myši se stisknutým levým tlačítkem.", "vcmi.adventureOptions.leftButtonDrag.help" : "{Posun levým tlačítkem}\n\nPosouvání mapy tažením myši se stisknutým levým tlačítkem.",
"vcmi.adventureOptions.rightButtonDrag.hover" : "Přetahování pravým tlačítkem", "vcmi.adventureOptions.rightButtonDrag.hover" : "Posun pravým tlač.",
"vcmi.adventureOptions.rightButtonDrag.help" : "{Přetahování pravým tlačítkem}\n\nKdyž je povoleno, pohyb myší se stisknutým pravým tlačítkem bude posouvat pohled na mapě dobrodružství.", "vcmi.adventureOptions.rightButtonDrag.help" : "{Posun pravým tlačítkem}\n\nKdyž je povoleno, pohyb myší se stisknutým pravým tlačítkem bude posouvat pohled na mapě dobrodružství.",
"vcmi.adventureOptions.smoothDragging.hover" : "Plynulé posouvání mapy", "vcmi.adventureOptions.smoothDragging.hover" : "Plynulé posouvání mapy",
"vcmi.adventureOptions.smoothDragging.help" : "{Plynulé posouvání mapy}\n\nPokud je tato možnost aktivována, posouvání mapy bude plynulé.", "vcmi.adventureOptions.smoothDragging.help" : "{Plynulé posouvání mapy}\n\nPokud je tato možnost aktivována, posouvání mapy bude plynulé.",
"vcmi.adventureOptions.skipAdventureMapAnimations.hover" : "Přeskočit efekty mizení", "vcmi.adventureOptions.skipAdventureMapAnimations.hover" : "Přeskočit efekty mizení",
@@ -288,8 +288,8 @@
"vcmi.battleOptions.showStickyHeroInfoWindows.help": "{Zobrazit okno statistik hrdinů}\n\nTrvale zapne okno statistiky hrdinů, které ukazuje hlavní schopnosti a magickou energii.", "vcmi.battleOptions.showStickyHeroInfoWindows.help": "{Zobrazit okno statistik hrdinů}\n\nTrvale zapne okno statistiky hrdinů, které ukazuje hlavní schopnosti a magickou energii.",
"vcmi.battleOptions.skipBattleIntroMusic.hover": "Přeskočit úvodní hudbu", "vcmi.battleOptions.skipBattleIntroMusic.hover": "Přeskočit úvodní hudbu",
"vcmi.battleOptions.skipBattleIntroMusic.help": "{Přeskočit úvodní hudbu}\n\nPovolí akce při úvodní hudbě přehrávané při začátku každé bitvy.", "vcmi.battleOptions.skipBattleIntroMusic.help": "{Přeskočit úvodní hudbu}\n\nPovolí akce při úvodní hudbě přehrávané při začátku každé bitvy.",
"vcmi.battleOptions.endWithAutocombat.hover": "Ukončit bitvu", "vcmi.battleOptions.endWithAutocombat.hover": "Přeskočit bitvu",
"vcmi.battleOptions.endWithAutocombat.help": "{Ukončit bitvu}\n\nAutomatický boj okamžitě dohraje bitvu do konce.", "vcmi.battleOptions.endWithAutocombat.help": "{Přeskočit bitvu}\n\nAutomatický boj okamžitě dohraje bitvu do konce.",
"vcmi.battleOptions.showQuickSpell.hover": "Zobrazit rychlý panel kouzel", "vcmi.battleOptions.showQuickSpell.hover": "Zobrazit rychlý panel kouzel",
"vcmi.battleOptions.showQuickSpell.help": "{Zobrazit rychlý panel kouzel}\n\nZobrazí panel pro rychlý výběr kouzel.", "vcmi.battleOptions.showQuickSpell.help": "{Zobrazit rychlý panel kouzel}\n\nZobrazí panel pro rychlý výběr kouzel.",
@@ -308,7 +308,7 @@
"vcmi.battleWindow.damageEstimation.kills" : "%d zahyne", "vcmi.battleWindow.damageEstimation.kills" : "%d zahyne",
"vcmi.battleWindow.damageEstimation.kills.1" : "%d zahyne", "vcmi.battleWindow.damageEstimation.kills.1" : "%d zahyne",
"vcmi.battleWindow.damageRetaliation.will" : "Provede odvetu", "vcmi.battleWindow.damageRetaliation.will" : "Provede odvetu ",
"vcmi.battleWindow.damageRetaliation.may" : "Může provést odvetu", "vcmi.battleWindow.damageRetaliation.may" : "Může provést odvetu",
"vcmi.battleWindow.damageRetaliation.never" : "Neprovede odvetu.", "vcmi.battleWindow.damageRetaliation.never" : "Neprovede odvetu.",
"vcmi.battleWindow.damageRetaliation.damage" : "(%DAMAGE).", "vcmi.battleWindow.damageRetaliation.damage" : "(%DAMAGE).",
@@ -318,7 +318,7 @@
"vcmi.battleWindow.accurateShot.resultDescription.0" : "%d %s bylo zabito přesnými zásahy!", "vcmi.battleWindow.accurateShot.resultDescription.0" : "%d %s bylo zabito přesnými zásahy!",
"vcmi.battleWindow.accurateShot.resultDescription.1" : "%d %s byl zabit přesným zásahem!", "vcmi.battleWindow.accurateShot.resultDescription.1" : "%d %s byl zabit přesným zásahem!",
"vcmi.battleWindow.accurateShot.resultDescription.2" : "%d %s bylo zabito přesnými zásahy!", "vcmi.battleWindow.accurateShot.resultDescription.2" : "%d %s bylo zabito přesnými zásahy!",
"vcmi.battleWindow.endWithAutocombat" : "Opravdu chcete ukončit bitvu s automatickým bojem?", "vcmi.battleWindow.endWithAutocombat" : "Opravdu chcete dokončit bitvu automatickým bojem?",
"vcmi.battleResultsWindow.applyResultsLabel" : "Použít výsledek bitvy", "vcmi.battleResultsWindow.applyResultsLabel" : "Použít výsledek bitvy",
@@ -344,7 +344,7 @@
"vcmi.townStructure.bank.borrow" : "Vstupujete do banky. Bankéř vás spatří a říká: \"Máme pro vás speciální nabídku. Můžete si vzít půjčku 2500 zlata na 5 dní. Každý den budete muset splácet 500 zlata.\"", "vcmi.townStructure.bank.borrow" : "Vstupujete do banky. Bankéř vás spatří a říká: \"Máme pro vás speciální nabídku. Můžete si vzít půjčku 2500 zlata na 5 dní. Každý den budete muset splácet 500 zlata.\"",
"vcmi.townStructure.bank.payBack" : "Vstupujete do banky. Bankéř vás spatří a říká: \"Již jste si vzali půjčku. Nejprve ji splaťte, než si vezmete další.\"", "vcmi.townStructure.bank.payBack" : "Vstupujete do banky. Bankéř vás spatří a říká: \"Již jste si vzali půjčku. Nejprve ji splaťte, než si vezmete další.\"",
"vcmi.logicalExpressions.anyOf" : "Něco z následujících:", "vcmi.logicalExpressions.anyOf" : "Nějaké z následujících:",
"vcmi.logicalExpressions.allOf" : "Všechny následující:", "vcmi.logicalExpressions.allOf" : "Všechny následující:",
"vcmi.logicalExpressions.noneOf" : "Žádné z následujících:", "vcmi.logicalExpressions.noneOf" : "Žádné z následujících:",
@@ -381,7 +381,7 @@
"vcmi.randomMapTab.widgets.roadTypesLabel" : "Druhy cest", "vcmi.randomMapTab.widgets.roadTypesLabel" : "Druhy cest",
"vcmi.optionsTab.turnOptions.hover" : "Možnosti tahu", "vcmi.optionsTab.turnOptions.hover" : "Možnosti tahu",
"vcmi.optionsTab.turnOptions.help" : "Vyberte odpočítávadlo tahů a nastavení souběžných tahů", "vcmi.optionsTab.turnOptions.help" : "Vyberte odpočítávadlo a nastavení souběžných tahů",
"vcmi.optionsTab.chessFieldBase.hover" : "Základní časovač", "vcmi.optionsTab.chessFieldBase.hover" : "Základní časovač",
"vcmi.optionsTab.chessFieldTurn.hover" : "Časovač tahu", "vcmi.optionsTab.chessFieldTurn.hover" : "Časovač tahu",
@@ -404,7 +404,7 @@
"vcmi.optionsTab.simturnsMax.help" : "Hrát souběžně po určený počet dní nebo do setkání s jiným hráčem", "vcmi.optionsTab.simturnsMax.help" : "Hrát souběžně po určený počet dní nebo do setkání s jiným hráčem",
"vcmi.optionsTab.simturnsAI.help" : "{Souběžné tahy AI}\nExperimentální volba. Dovoluje AI hráčům hrát souběžně s lidskými hráči, když jsou souběžné tahy povoleny.", "vcmi.optionsTab.simturnsAI.help" : "{Souběžné tahy AI}\nExperimentální volba. Dovoluje AI hráčům hrát souběžně s lidskými hráči, když jsou souběžné tahy povoleny.",
"vcmi.optionsTab.turnTime.select" : "Vyberte šablonu nastavení časovače", "vcmi.optionsTab.turnTime.select" : "Šablona nastavení časovače",
"vcmi.optionsTab.turnTime.unlimited" : "Neomezený čas tahu", "vcmi.optionsTab.turnTime.unlimited" : "Neomezený čas tahu",
"vcmi.optionsTab.turnTime.classic.1" : "Klasický časovač: 1 minuta", "vcmi.optionsTab.turnTime.classic.1" : "Klasický časovač: 1 minuta",
"vcmi.optionsTab.turnTime.classic.2" : "Klasický časovač: 2 minuty", "vcmi.optionsTab.turnTime.classic.2" : "Klasický časovač: 2 minuty",
@@ -419,7 +419,7 @@
"vcmi.optionsTab.turnTime.chess.2" : "Šachová: 02:00 + 01:00 + 00:15 + 00:00", "vcmi.optionsTab.turnTime.chess.2" : "Šachová: 02:00 + 01:00 + 00:15 + 00:00",
"vcmi.optionsTab.turnTime.chess.1" : "Šachová: 01:00 + 01:00 + 00:00 + 00:00", "vcmi.optionsTab.turnTime.chess.1" : "Šachová: 01:00 + 01:00 + 00:00 + 00:00",
"vcmi.optionsTab.simturns.select" : "Vyberte šablonu souběžných tahů", "vcmi.optionsTab.simturns.select" : "Šablona souběžných tahů",
"vcmi.optionsTab.simturns.none" : "Bez souběžných tahů", "vcmi.optionsTab.simturns.none" : "Bez souběžných tahů",
"vcmi.optionsTab.simturns.tillContactMax" : "Souběžně: Do setkání", "vcmi.optionsTab.simturns.tillContactMax" : "Souběžně: Do setkání",
"vcmi.optionsTab.simturns.tillContact1" : "Souběžně: 1 týden, přerušit při setkání", "vcmi.optionsTab.simturns.tillContact1" : "Souběžně: 1 týden, přerušit při setkání",

View File

@@ -15,6 +15,8 @@
"vcmi.adventureMap.monsterLevel" : "\n\nNivå: %LEVEL - Faktion: %TOWN", "vcmi.adventureMap.monsterLevel" : "\n\nNivå: %LEVEL - Faktion: %TOWN",
"vcmi.adventureMap.monsterMeleeType" : "närstrid", "vcmi.adventureMap.monsterMeleeType" : "närstrid",
"vcmi.adventureMap.monsterRangedType" : "fjärrstrid", "vcmi.adventureMap.monsterRangedType" : "fjärrstrid",
"vcmi.adventureMap.search.hover" : "Sök kartobjekt",
"vcmi.adventureMap.search.help" : "Välj objekt för att söka på kartan.",
"vcmi.adventureMap.confirmRestartGame" : "Är du säker på att du vill starta om spelet?", "vcmi.adventureMap.confirmRestartGame" : "Är du säker på att du vill starta om spelet?",
"vcmi.adventureMap.noTownWithMarket" : "Det finns inga tillgängliga marknadsplatser!", "vcmi.adventureMap.noTownWithMarket" : "Det finns inga tillgängliga marknadsplatser!",
@@ -356,6 +358,7 @@
"vcmi.heroWindow.sortBackpackBySlot.help" : "Sorterar artefakter i ryggsäcken efter utrustad plats.", "vcmi.heroWindow.sortBackpackBySlot.help" : "Sorterar artefakter i ryggsäcken efter utrustad plats.",
"vcmi.heroWindow.sortBackpackByClass.hover" : "Sortera efter klass", "vcmi.heroWindow.sortBackpackByClass.hover" : "Sortera efter klass",
"vcmi.heroWindow.sortBackpackByClass.help" : "Sorterar artefakter i ryggsäcken efter artefaktklass (skatt, mindre, större, relik)", "vcmi.heroWindow.sortBackpackByClass.help" : "Sorterar artefakter i ryggsäcken efter artefaktklass (skatt, mindre, större, relik)",
"vcmi.heroWindow.fusingArtifact.fusing" : "Du har alla komponenterna som behövs för en sammanslagning av %s. Vill du utföra sammanslagningen? {Alla komponenter kommer att förbrukas vid sammanslagningen.}",
"vcmi.tavernWindow.inviteHero" : "Bjud in hjälte", "vcmi.tavernWindow.inviteHero" : "Bjud in hjälte",
@@ -574,7 +577,7 @@
"core.bonus.ENEMY_ATTACK_REDUCTION.name" : "Avfärda attack (${val}%)", "core.bonus.ENEMY_ATTACK_REDUCTION.name" : "Avfärda attack (${val}%)",
"core.bonus.ENEMY_ATTACK_REDUCTION.description" : "Ignorerar ${val}% av angriparens attack.", "core.bonus.ENEMY_ATTACK_REDUCTION.description" : "Ignorerar ${val}% av angriparens attack.",
"core.bonus.ENEMY_DEFENCE_REDUCTION.name" : "Förbigå försvar (${val}%)", "core.bonus.ENEMY_DEFENCE_REDUCTION.name" : "Förbigå försvar (${val}%)",
"core.bonus.ENEMY_DEFENCE_REDUCTION.description" : "Din attack ignorerar ${val}% av fiendens försvar.", "core.bonus.ENEMY_DEFENCE_REDUCTION.description" : "Attacker ignorerar ${val}% av fiendens försvar.",
"core.bonus.FIRE_IMMUNITY.name" : "Eld-immunitet", "core.bonus.FIRE_IMMUNITY.name" : "Eld-immunitet",
"core.bonus.FIRE_IMMUNITY.description" : "Immun mot alla eldmagi-trollformler.", "core.bonus.FIRE_IMMUNITY.description" : "Immun mot alla eldmagi-trollformler.",
"core.bonus.FIRE_SHIELD.name" : "Eldsköld (${val}%)", "core.bonus.FIRE_SHIELD.name" : "Eldsköld (${val}%)",
@@ -594,7 +597,7 @@
"core.bonus.GARGOYLE.name" : "Stenfigur", "core.bonus.GARGOYLE.name" : "Stenfigur",
"core.bonus.GARGOYLE.description" : "Kan varken upplivas eller läkas.", "core.bonus.GARGOYLE.description" : "Kan varken upplivas eller läkas.",
"core.bonus.GENERAL_DAMAGE_REDUCTION.name" : "Minska skada (${val}%)", "core.bonus.GENERAL_DAMAGE_REDUCTION.name" : "Minska skada (${val}%)",
"core.bonus.GENERAL_DAMAGE_REDUCTION.description" : "Reducerar skadan från inkommande attacker.", "core.bonus.GENERAL_DAMAGE_REDUCTION.description" : "Reducerar skadan från fiendens attacker.",
"core.bonus.HATE.name" : "Hatar: ${subtype.creature}", "core.bonus.HATE.name" : "Hatar: ${subtype.creature}",
"core.bonus.HATE.description" : "Gör ${val}% mer skada mot ${subtype.creature}.", "core.bonus.HATE.description" : "Gör ${val}% mer skada mot ${subtype.creature}.",
"core.bonus.HEALER.name" : "Helare", "core.bonus.HEALER.name" : "Helare",
@@ -644,7 +647,7 @@
"core.bonus.REVENGE.name" : "Hämndlysten", "core.bonus.REVENGE.name" : "Hämndlysten",
"core.bonus.REVENGE.description" : "Vållar mer skada om den själv blivit skadad.", "core.bonus.REVENGE.description" : "Vållar mer skada om den själv blivit skadad.",
"core.bonus.SHOOTER.name" : "Distans-attack", "core.bonus.SHOOTER.name" : "Distans-attack",
"core.bonus.SHOOTER.description" : "Varelsen kan skjuta/attackera på avstånd.", "core.bonus.SHOOTER.description" : "Skjuter/attackerar på avstånd.",
"core.bonus.SHOOTS_ALL_ADJACENT.name" : "Skjuter alla i närheten", "core.bonus.SHOOTS_ALL_ADJACENT.name" : "Skjuter alla i närheten",
"core.bonus.SHOOTS_ALL_ADJACENT.description" : "Distans-attack drabbar alla inom räckhåll.", "core.bonus.SHOOTS_ALL_ADJACENT.description" : "Distans-attack drabbar alla inom räckhåll.",
"core.bonus.SOUL_STEAL.name" : "Själtjuv", "core.bonus.SOUL_STEAL.name" : "Själtjuv",

View File

@@ -111,7 +111,7 @@ void InputSourceKeyboard::handleEventKeyUp(const SDL_KeyboardEvent & key)
if(key.repeat != 0) if(key.repeat != 0)
return; // ignore periodic event resends return; // ignore periodic event resends
std::string keyName = SDL_GetKeyName(key.keysym.sym); std::string keyName = getKeyNameWithModifiers(SDL_GetKeyName(key.keysym.sym));
logGlobal->trace("keyboard: key '%s' released", keyName); logGlobal->trace("keyboard: key '%s' released", keyName);
if (SDL_IsTextInputActive() == SDL_TRUE) if (SDL_IsTextInputActive() == SDL_TRUE)

View File

@@ -99,7 +99,7 @@ CBonusSelection::CBonusSelection()
int availableSpace = videoButtonActive ? 225 : 285; int availableSpace = videoButtonActive ? 225 : 285;
mapName = std::make_shared<CLabel>(481, 219, FONT_BIG, ETextAlignment::TOPLEFT, Colors::YELLOW, CSH->mi->getNameTranslated(), availableSpace ); mapName = std::make_shared<CLabel>(481, 219, FONT_BIG, ETextAlignment::TOPLEFT, Colors::YELLOW, CSH->mi->getNameTranslated(), availableSpace );
labelMapDescription = std::make_shared<CLabel>(481, 253, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::YELLOW, CGI->generaltexth->allTexts[496]); labelMapDescription = std::make_shared<CLabel>(481, 253, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::YELLOW, CGI->generaltexth->allTexts[496]);
mapDescription = std::make_shared<CTextBox>("", Rect(480, 278, 292, 108), 1); mapDescription = std::make_shared<CTextBox>("", Rect(480, 278, 286, 108), 1);
labelChooseBonus = std::make_shared<CLabel>(475, 432, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, CGI->generaltexth->allTexts[71]); labelChooseBonus = std::make_shared<CLabel>(475, 432, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, CGI->generaltexth->allTexts[71]);
groupBonuses = std::make_shared<CToggleGroup>(std::bind(&IServerAPI::setCampaignBonus, CSH, _1)); groupBonuses = std::make_shared<CToggleGroup>(std::bind(&IServerAPI::setCampaignBonus, CSH, _1));

View File

@@ -188,7 +188,7 @@ void CLobbyScreen::toggleMode(bool host)
return; return;
auto buttonColor = host ? Colors::WHITE : Colors::ORANGE; auto buttonColor = host ? Colors::WHITE : Colors::ORANGE;
buttonSelect->setTextOverlay(CGI->generaltexth->allTexts[500], FONT_SMALL, buttonColor); buttonSelect->setTextOverlay(" " + CGI->generaltexth->allTexts[500], FONT_SMALL, buttonColor);
buttonOptions->setTextOverlay(CGI->generaltexth->allTexts[501], FONT_SMALL, buttonColor); buttonOptions->setTextOverlay(CGI->generaltexth->allTexts[501], FONT_SMALL, buttonColor);
if (buttonTurnOptions) if (buttonTurnOptions)
@@ -199,7 +199,7 @@ void CLobbyScreen::toggleMode(bool host)
if(buttonRMG) if(buttonRMG)
{ {
buttonRMG->setTextOverlay(CGI->generaltexth->allTexts[740], FONT_SMALL, buttonColor); buttonRMG->setTextOverlay(" " + CGI->generaltexth->allTexts[740], FONT_SMALL, buttonColor);
buttonRMG->block(!host); buttonRMG->block(!host);
} }
buttonSelect->block(!host); buttonSelect->block(!host);

View File

@@ -187,8 +187,8 @@ InfoCard::InfoCard()
iconsVictoryCondition = std::make_shared<CAnimImage>(AnimationPath::builtin("SCNRVICT"), 0, 0, 24, 302); iconsVictoryCondition = std::make_shared<CAnimImage>(AnimationPath::builtin("SCNRVICT"), 0, 0, 24, 302);
iconsLossCondition = std::make_shared<CAnimImage>(AnimationPath::builtin("SCNRLOSS"), 0, 0, 24, 359); iconsLossCondition = std::make_shared<CAnimImage>(AnimationPath::builtin("SCNRLOSS"), 0, 0, 24, 359);
labelVictoryConditionText = std::make_shared<CLabel>(60, 307, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE); labelVictoryConditionText = std::make_shared<CLabel>(60, 307, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, "", 290);
labelLossConditionText = std::make_shared<CLabel>(60, 366, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE); labelLossConditionText = std::make_shared<CLabel>(60, 366, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, "", 290);
labelDifficulty = std::make_shared<CLabel>(62, 472, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE); labelDifficulty = std::make_shared<CLabel>(62, 472, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE);
labelDifficultyPercent = std::make_shared<CLabel>(311, 472, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE); labelDifficultyPercent = std::make_shared<CLabel>(311, 472, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE);

View File

@@ -540,7 +540,7 @@ CMultiPlayers::CMultiPlayers(const std::vector<std::string> & playerNames, ESele
std::string text = CGI->generaltexth->allTexts[446]; std::string text = CGI->generaltexth->allTexts[446];
boost::replace_all(text, "\t", "\n"); boost::replace_all(text, "\t", "\n");
textTitle = std::make_shared<CTextBox>(text, Rect(25, 20, 315, 50), 0, FONT_BIG, ETextAlignment::CENTER, Colors::WHITE); //HOTSEAT Please enter names textTitle = std::make_shared<CTextBox>(text, Rect(25, 10, 315, 60), 0, FONT_BIG, ETextAlignment::CENTER, Colors::WHITE); //HOTSEAT Please enter names
for(int i = 0; i < inputNames.size(); i++) for(int i = 0; i < inputNames.size(); i++)
{ {

View File

@@ -265,7 +265,12 @@ void MusicEntry::load(const AudioPath & musicURI)
try try
{ {
auto * musicFile = MakeSDLRWops(CResourceHandler::get()->load(currentName)); std::unique_ptr<CInputStream> stream = CResourceHandler::get()->load(currentName);
if(musicURI.getName() == "BLADEFWCAMPAIGN") // handle defect MP3 file - ffprobe says: Skipping 52 bytes of junk at 0.
stream->seek(52);
auto * musicFile = MakeSDLRWops(std::move(stream));
music = Mix_LoadMUS_RW(musicFile, SDL_TRUE); music = Mix_LoadMUS_RW(musicFile, SDL_TRUE);
} }
catch(std::exception & e) catch(std::exception & e)

View File

@@ -199,7 +199,7 @@
"dwellingLvl3": { "id" : 32, "requires" : [ "dwellingLvl1" ] }, "dwellingLvl3": { "id" : 32, "requires" : [ "dwellingLvl1" ] },
"dwellingLvl4": { "id" : 33, "requires" : [ "dwellingLvl3" ] }, "dwellingLvl4": { "id" : 33, "requires" : [ "dwellingLvl3" ] },
"dwellingLvl5": { "id" : 34, "requires" : [ "dwellingLvl3" ] }, "dwellingLvl5": { "id" : 34, "requires" : [ "dwellingLvl3" ] },
"dwellingLvl6": { "id" : 35, "requires" : [ "allOf", [ "dwellingLvl3" ], [ "dwellingLvl4" ] ] }, "dwellingLvl6": { "id" : 35, "requires" : [ "allOf", [ "dwellingLvl4" ], [ "dwellingLvl5" ] ] },
"dwellingLvl7": { "id" : 36, "requires" : [ "allOf", [ "dwellingLvl6" ], [ "mageGuild2" ] ] }, "dwellingLvl7": { "id" : 36, "requires" : [ "allOf", [ "dwellingLvl6" ], [ "mageGuild2" ] ] },
"dwellingUpLvl1": { "id" : 37, "upgrades" : "dwellingLvl1" }, "dwellingUpLvl1": { "id" : 37, "upgrades" : "dwellingLvl1" },

View File

@@ -484,7 +484,7 @@ std::vector<ConstTransitivePtr<CGObjectInstance>> CGameInfoCallback::getAllVisit
{ {
std::vector<ConstTransitivePtr<CGObjectInstance>> ret; std::vector<ConstTransitivePtr<CGObjectInstance>> ret;
for(auto & obj : gs->map->objects) for(auto & obj : gs->map->objects)
if(obj->isVisitable() && obj->ID != Obj::EVENT && isVisible(obj)) if(obj && obj->isVisitable() && obj->ID != Obj::EVENT && isVisible(obj))
ret.push_back(obj); ret.push_back(obj);
return ret; return ret;