Browse Source

Merge branch 'develop' into multiple_small_fixes

Ivan Savenko 1 year ago
parent
commit
28bc38c94f

+ 63 - 60
Mods/vcmi/config/vcmi/swedish.json

@@ -13,6 +13,8 @@
 	"vcmi.adventureMap.monsterThreat.levels.10" : "Dödlig",
 	"vcmi.adventureMap.monsterThreat.levels.11" : "Omöjlig",
 	"vcmi.adventureMap.monsterLevel"            : "\n\nNivå: %LEVEL - Faktion: %TOWN",
+	"vcmi.adventureMap.monsterMeleeType"        : "närstrid",
+	"vcmi.adventureMap.monsterRangedType"       : "fjärrstrid",
 
 	"vcmi.adventureMap.confirmRestartGame"               : "Är du säker på att du vill starta om spelet?",
 	"vcmi.adventureMap.noTownWithMarket"                 : "Det finns inga tillgängliga marknadsplatser!",
@@ -21,7 +23,7 @@
 	"vcmi.adventureMap.playerAttacked"                   : "Spelare har blivit attackerad: %s",
 	"vcmi.adventureMap.moveCostDetails"                  : "Förflyttningspoängs-kostnad: %TURNS tur(er) + %POINTS poäng - Återstående poäng: %REMAINING",
 	"vcmi.adventureMap.moveCostDetailsNoTurns"           : "Förflyttningspoängs-kostnad: %POINTS poäng - Återstående poäng: %REMAINING",
-	"vcmi.adventureMap.movementPointsHeroInfo" 			 : "(Förflyttningspoäng: %REMAINING / %POINTS)",
+	"vcmi.adventureMap.movementPointsHeroInfo"           : "(Förflyttningspoäng: %REMAINING / %POINTS)",
 	"vcmi.adventureMap.replayOpponentTurnNotImplemented" : "Tyvärr, att spela om motståndarens tur är inte implementerat ännu!",
 
 	"vcmi.capitalColors.0" : "Röd",
@@ -135,14 +137,15 @@
 	"vcmi.lobby.pvp.coin.hover"           : "Mynt",
 	"vcmi.lobby.pvp.coin.help"            : "Singla slant",
 	"vcmi.lobby.pvp.randomTown.hover"     : "Slumpmässig stad",
-	"vcmi.lobby.pvp.randomTown.help"      : "Skriv en slumpmässig stad i chatten",
-	"vcmi.lobby.pvp.randomTownVs.hover"   : "Slumpmässig stad vs.",
-	"vcmi.lobby.pvp.randomTownVs.help"    : "Skriv två slumpmässiga städer i chatten",
+	"vcmi.lobby.pvp.randomTown.help"      : "Skriv en slumpad stad i chatten",
+	"vcmi.lobby.pvp.randomTownVs.hover"   : "Slumpad stad vs.",
+	"vcmi.lobby.pvp.randomTownVs.help"    : "Skriv två slumpade städer i chatten",
 	"vcmi.lobby.pvp.versus"               : "vs.",
 
 	"vcmi.client.errors.invalidMap"       : "{Ogiltig karta eller kampanj}\n\nStartade inte spelet! Vald karta eller kampanj kan vara ogiltig eller skadad. Orsak:\n%s",
 	"vcmi.client.errors.missingCampaigns" : "{Saknade datafiler}\n\nKampanjernas datafiler hittades inte! Du kanske använder ofullständiga eller skadade Heroes 3-datafiler. Vänligen installera om speldata.",
 	"vcmi.server.errors.disconnected"     : "{Nätverksfel}\n\nAnslutningen till spelservern har förlorats!",
+	"vcmi.server.errors.playerLeft"       : "{Spelare har lämnat}\n\n%s spelaren har kopplat bort sig från spelet!", //%s -> spelarens färg
 	"vcmi.server.errors.existingProcess"  : "En annan VCMI-serverprocess är igång. Vänligen avsluta den innan du startar ett nytt spel.",
 	"vcmi.server.errors.modsToEnable"     : "{Följande modd(ar) krävs}",
 	"vcmi.server.errors.modsToDisable"    : "{Följande modd(ar) måste inaktiveras}",
@@ -221,8 +224,8 @@
 	"vcmi.systemOptions.enableUiEnhancementsButton.help"   : "{Gränssnittsförbättringar}\n\nVälj mellan olika förbättringar av användargränssnittet. Till exempel en lättåtkomlig ryggsäcksknapp med mera. Avaktivera för att få en mer klassisk spelupplevelse.",
 	"vcmi.systemOptions.enableLargeSpellbookButton.hover"  : "Stor trollformelsbok",
 	"vcmi.systemOptions.enableLargeSpellbookButton.help"   : "{Stor trollformelsbok}\n\nAktiverar en större trollformelsbok som rymmer fler trollformler per sida (animeringen av sidbyte i den större trollformelsboken fungerar inte).",
-	"vcmi.systemOptions.audioMuteFocus.hover"              : "Stänger av ljudet vid inaktivitet",
-	"vcmi.systemOptions.audioMuteFocus.help"               : "{Stäng av ljud vid inaktivitet}\n\nStänger av ljudet i spelet vid inaktivitet. Undantag är meddelanden i spelet och ljudet för ny tur/omgång.",
+	"vcmi.systemOptions.audioMuteFocus.hover"              : "Tyst vid inaktivitet",
+	"vcmi.systemOptions.audioMuteFocus.help"               : "{Tyst vid inaktivitet}\n\nStänger av ljudet i spelet vid inaktivitet. Undantag är meddelanden i spelet och ljudet för ny turomgång.",
 
 	"vcmi.adventureOptions.infoBarPick.hover"                : "Visar textmeddelanden i infopanelen",
 	"vcmi.adventureOptions.infoBarPick.help"                 : "{Infopanelsmeddelanden}\n\nNär det är möjligt kommer spelmeddelanden från besökande kartobjekt att visas i infopanelen istället för att dyka upp i ett separat fönster.",
@@ -234,11 +237,11 @@
 	"vcmi.adventureOptions.showGrid.help"                    : "{Visa rutnät}\n\nVisa rutnätsöverlägget som markerar gränserna mellan äventyrskartans brickor/rutor.",
 	"vcmi.adventureOptions.borderScroll.hover"               : "Kantrullning",
 	"vcmi.adventureOptions.borderScroll.help"                : "{Kantrullning}\n\nRullar äventyrskartan när markören är angränsande till fönsterkanten. Kan inaktiveras genom att hålla ned CTRL-tangenten.",
-	"vcmi.adventureOptions.infoBarCreatureManagement.hover"  : "Hantering av varelser i infopanelen i nedre högra hörnet",
+	"vcmi.adventureOptions.infoBarCreatureManagement.hover"  : "Hantera armén i nedre högra hörnet",
 	"vcmi.adventureOptions.infoBarCreatureManagement.help"   : "{Varelsehantering i infopanelen}\n\nTillåter omarrangering av varelser i infopanelen längst ner till höger på äventyrskartan istället för att bläddra mellan olika infopaneler.",
-	"vcmi.adventureOptions.leftButtonDrag.hover"             : "Dra kartan med vänster musknapp",
+	"vcmi.adventureOptions.leftButtonDrag.hover"             : "V.klicksdragning",
 	"vcmi.adventureOptions.leftButtonDrag.help"              : "{Vänsterklicksdragning}\n\nVid aktivering kan äventyrskartans kartvy dras genom att flytta musen med vänster musknapp nedtryckt.",
-	"vcmi.adventureOptions.rightButtonDrag.hover"            : "Dra kartan med höger musknapp",
+	"vcmi.adventureOptions.rightButtonDrag.hover"            : "H.klicksdragning",
 	"vcmi.adventureOptions.rightButtonDrag.help"             : "{Högerklicksdragning}\n\nVid aktivering kan äventyrskartans kartvy dras genom att flytta musen med höger musknapp nedtryckt.",
 	"vcmi.adventureOptions.smoothDragging.hover"             : "Mjuk kartdragning",
 	"vcmi.adventureOptions.smoothDragging.help"              : "{Mjuk kartdragning}\n\nVid aktivering så har kartdragningen en modern rullningseffekt.",
@@ -268,16 +271,16 @@
 	"vcmi.battleOptions.animationsSpeed1.help"           : "Ställ in animationshastigheten till mycket långsam.",
 	"vcmi.battleOptions.animationsSpeed5.help"           : "Ställ in animationshastigheten till mycket snabb.",
 	"vcmi.battleOptions.animationsSpeed6.help"           : "Ställ in animationshastigheten till omedelbar.",
-	"vcmi.battleOptions.movementHighlightOnHover.hover"  : "Muspeka (hovra) för att avslöja förflyttningsräckvidd",
-	"vcmi.battleOptions.movementHighlightOnHover.help"   : "{Muspeka för att avslöja förflyttningsräckvidd}\n\nVisar enheters potentiella förflyttningsräckvidd över slagfältet när du håller muspekaren över dem.",
+	"vcmi.battleOptions.movementHighlightOnHover.hover"  : "Avslöja förflyttningsräckvidd",
+	"vcmi.battleOptions.movementHighlightOnHover.help"   : "{Muspeka (hovra) för att avslöja förflyttningsräckvidd}\n\nVisar enheters potentiella förflyttningsräckvidd över slagfältet när du håller muspekaren över dem.",
 	"vcmi.battleOptions.rangeLimitHighlightOnHover.hover": "Avslöja skyttars räckvidd",
 	"vcmi.battleOptions.rangeLimitHighlightOnHover.help" : "{Muspeka för att avslöja skyttars räckvidd}\n\nVisar hur långt en enhets distansattack sträcker sig över slagfältet när du håller muspekaren över dem.",
 	"vcmi.battleOptions.showStickyHeroInfoWindows.hover" : "Visa fönster med hjältars primärförmågor",
 	"vcmi.battleOptions.showStickyHeroInfoWindows.help"  : "{Visa fönster med hjältars primärförmågor}\n\nKommer alltid att visa ett fönster där du kan se dina hjältars primärförmågor (anfall, försvar, trollkonst, kunskap och trollformelpoäng).",
 	"vcmi.battleOptions.skipBattleIntroMusic.hover"      : "Hoppa över intromusik",
 	"vcmi.battleOptions.skipBattleIntroMusic.help"       : "{Hoppa över intromusik}\n\nTillåt åtgärder under intromusiken som spelas i början av varje strid.",
-	"vcmi.battleOptions.endWithAutocombat.hover"         : "Slutför striden så fort som möjligt",
-	"vcmi.battleOptions.endWithAutocombat.help"          : "{Slutför strid}\n\nAuto-strid spelar striden åt dig för att striden ska slutföras så fort som möjligt.",
+	"vcmi.battleOptions.endWithAutocombat.hover"         : "Snabbstrid (AI)",
+	"vcmi.battleOptions.endWithAutocombat.help"          : "{Slutför striden så fort som möjligt}\n\nAI för auto-strid spelar striden åt dig för att striden ska slutföras så fort som möjligt.",
 	"vcmi.battleOptions.showQuickSpell.hover"            : "Snabb åtkomst till dina trollformler",
 	"vcmi.battleOptions.showQuickSpell.help"             : "{Visa snabbtrollformels-panelen}\n\nVisar en snabbvalspanel vid sidan av stridsfönstret där du har snabb åtkomst till några av dina trollformler",
 
@@ -365,15 +368,15 @@
 	"vcmi.optionsTab.turnOptions.help"  : "Välj alternativ för turomgångs-timer och simultana turer",
 
 	"vcmi.optionsTab.chessFieldBase.hover"          : "Bas-timern",
-	"vcmi.optionsTab.chessFieldTurn.hover"          : "Turomgångs-timern",
+	"vcmi.optionsTab.chessFieldTurn.hover"          : "Tur-timern",
 	"vcmi.optionsTab.chessFieldBattle.hover"        : "Strids-timern",
 	"vcmi.optionsTab.chessFieldUnit.hover"          : "Enhets-timern",
-	"vcmi.optionsTab.chessFieldBase.help"           : "Används när {Turomgångs-timern} når '0'. Ställs in en gång i början av spelet. När den når '0' avslutas den aktuella turomgången (pågående strid avslutas med förlust).",
+	"vcmi.optionsTab.chessFieldBase.help"           : "Används när {Tur-timern} når '0'. Ställs in en gång i början av spelet. När den når '0' avslutas den aktuella turomgången (pågående strid avslutas med förlust).",
 	"vcmi.optionsTab.chessFieldTurnAccumulate.help" : "Används utanför strid eller när {Strids-timern} tar slut. Återställs varje turomgång. Outnyttjad tid läggs till i {Bas-timern} till nästa turomgång.",
 	"vcmi.optionsTab.chessFieldTurnDiscard.help"    : "Används utanför strid eller när {Strids-timern} tar slut. Återställs varje turomgång. Outnyttjad tid går förlorad.",
-	"vcmi.optionsTab.chessFieldBattle.help"         : "Används i strider med AI eller i PVP-strid när {Enhets-timern} tar slut. Återställs i början av varje strid.",
-	"vcmi.optionsTab.chessFieldUnitAccumulate.help" : "Används när du styr din enhet i PVP-strid. Outnyttjad tid läggs till i {Strids-timern} när enheten har avslutat sin turomgång.",
-	"vcmi.optionsTab.chessFieldUnitDiscard.help"    : "Används när du styr din enhet i PVP-strid. Återställs i början av varje enhets turomgång. Outnyttjad tid går förlorad.",
+	"vcmi.optionsTab.chessFieldBattle.help"         : "Används i strider med AI eller i PvP-strid när {Enhets-timern} tar slut. Återställs i början av varje strid.",
+	"vcmi.optionsTab.chessFieldUnitAccumulate.help" : "Används när du styr din enhet i PvP-strid. Outnyttjad tid läggs till i {Strids-timern} när enheten har avslutat sin turomgång.",
+	"vcmi.optionsTab.chessFieldUnitDiscard.help"    : "Används när du styr din enhet i PvP-strid. Återställs i början av varje enhets turomgång. Outnyttjad tid går förlorad.",
 
 	"vcmi.optionsTab.accumulate" : "Ackumulera",
 
@@ -385,7 +388,7 @@
 	"vcmi.optionsTab.simturnsMax.help"  : "Spela samtidigt som andra spelare under ett angivet antal dagar eller tills en tillräckligt nära kontakt inträffar med en annan spelare",
 	"vcmi.optionsTab.simturnsAI.help"   : "{Simultana AI-turomgångar}\nExperimentellt alternativ. Tillåter AI-spelare att agera samtidigt som den mänskliga spelaren när simultana turomgångar är aktiverade.",
 
-	"vcmi.optionsTab.turnTime.select"     : "Turtids-förinställningar",
+	"vcmi.optionsTab.turnTime.select"     : "Timer-inställningar för turomgångar",
 	"vcmi.optionsTab.turnTime.unlimited"  : "Obegränsat med tid",
 	"vcmi.optionsTab.turnTime.classic.1"  : "Klassisk timer: 1 minut",
 	"vcmi.optionsTab.turnTime.classic.2"  : "Klassisk timer: 2 minuter",
@@ -393,22 +396,22 @@
 	"vcmi.optionsTab.turnTime.classic.10" : "Klassisk timer: 10 minuter",
 	"vcmi.optionsTab.turnTime.classic.20" : "Klassisk timer: 20 minuter",
 	"vcmi.optionsTab.turnTime.classic.30" : "Klassisk timer: 30 minuter",
-	"vcmi.optionsTab.turnTime.chess.20"   : "Schack-timer: 20:00 + 10:00 + 02:00 + 00:00",
-	"vcmi.optionsTab.turnTime.chess.16"   : "Schack-timer: 16:00 + 08:00 + 01:30 + 00:00",
-	"vcmi.optionsTab.turnTime.chess.8"    : "Schack-timer: 08:00 + 04:00 + 01:00 + 00:00",
-	"vcmi.optionsTab.turnTime.chess.4"    : "Schack-timer: 04:00 + 02:00 + 00:30 + 00:00",
-	"vcmi.optionsTab.turnTime.chess.2"    : "Schack-timer: 02:00 + 01:00 + 00:15 + 00:00",
-	"vcmi.optionsTab.turnTime.chess.1"    : "Schack-timer: 01:00 + 01:00 + 00:00 + 00:00",
-
-	"vcmi.optionsTab.simturns.select"         : "Välj förinställning för simultana/samtidiga turer",
+	"vcmi.optionsTab.turnTime.chess.20"   : "Schack: 20:00 + 10:00 + 02:00 + 00:00",
+	"vcmi.optionsTab.turnTime.chess.16"   : "Schack: 16:00 + 08:00 + 01:30 + 00:00",
+	"vcmi.optionsTab.turnTime.chess.8"    : "Schack: 08:00 + 04:00 + 01:00 + 00:00",
+	"vcmi.optionsTab.turnTime.chess.4"    : "Schack: 04:00 + 02:00 + 00:30 + 00:00",
+	"vcmi.optionsTab.turnTime.chess.2"    : "Schack: 02:00 + 01:00 + 00:15 + 00:00",
+	"vcmi.optionsTab.turnTime.chess.1"    : "Schack: 01:00 + 01:00 + 00:00 + 00:00",
+
+	"vcmi.optionsTab.simturns.select"         : "Simultana/samtidiga turomgångsinställningar",
 	"vcmi.optionsTab.simturns.none"           : "Inga simultana/samtidiga turer",
-	"vcmi.optionsTab.simturns.tillContactMax" : "Simultantur: Fram till kontakt",
-	"vcmi.optionsTab.simturns.tillContact1"   : "Simultantur: 1 vecka, bryt vid kontakt",
-	"vcmi.optionsTab.simturns.tillContact2"   : "Simultantur: 2 veckor, bryt vid kontakt",
-	"vcmi.optionsTab.simturns.tillContact4"   : "Simultantur: 1 månad, bryt vid kontakt",
-	"vcmi.optionsTab.simturns.blocked1"       : "Simultantur: 1 vecka, kontakter blockerade",
-	"vcmi.optionsTab.simturns.blocked2"       : "Simultantur: 2 veckor, kontakter blockerade",
-	"vcmi.optionsTab.simturns.blocked4"       : "Simultantur: 1 månad, kontakter blockerade",
+	"vcmi.optionsTab.simturns.tillContactMax" : "Sam-tur: Fram till kontakt",
+	"vcmi.optionsTab.simturns.tillContact1"   : "Sam-tur: 1 vecka, bryt vid kontakt",
+	"vcmi.optionsTab.simturns.tillContact2"   : "Sam-tur: 2 veckor, bryt vid kontakt",
+	"vcmi.optionsTab.simturns.tillContact4"   : "Sam-tur: 1 månad, bryt vid kontakt",
+	"vcmi.optionsTab.simturns.blocked1"       : "Sam-tur: 1 vecka, kontakter blockerade",
+	"vcmi.optionsTab.simturns.blocked2"       : "Sam-tur: 2 veckor, kontakter blockerade",
+	"vcmi.optionsTab.simturns.blocked4"       : "Sam-tur: 1 månad, kontakter blockerade",
 
 	// Translation note: translate strings below using form that is correct for "0 days", "1 day" and "2 days" in your language
 	// Using this information, VCMI will automatically select correct plural form for every possible amount
@@ -525,10 +528,10 @@
 	"core.bonus.AIR_IMMUNITY.description"                : "Immun mot alla trollformler från skolan för luftmagi",
 	"core.bonus.ATTACKS_ALL_ADJACENT.name"               : "Attackera runtomkring",
 	"core.bonus.ATTACKS_ALL_ADJACENT.description"        : "Attackerar alla angränsande fiender",
-	"core.bonus.BLOCKS_RETALIATION.name"                 : "Ingen motattack",
+	"core.bonus.BLOCKS_RETALIATION.name"                 : "Blockera närstrids-motattack",
 	"core.bonus.BLOCKS_RETALIATION.description"          : "Fienden kan inte slå tillbaka/retaliera",
-	"core.bonus.BLOCKS_RANGED_RETALIATION.name"          : "Ingen motattack på avstånd",
-	"core.bonus.BLOCKS_RANGED_RETALIATION.description"   : "Fienden kan inte göra en motattack/retaliering på avstånd genom att använda en distansattack",
+	"core.bonus.BLOCKS_RANGED_RETALIATION.name"          : "Blockera fjärrstrids-motattack",
+	"core.bonus.BLOCKS_RANGED_RETALIATION.description"   : "Fienden kan inte retaliera på avstånd genom att använda en distansattack",
 	"core.bonus.CATAPULT.name"                           : "Katapult",
 	"core.bonus.CATAPULT.description"                    : "Attackerar belägringsmurar",
 	"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name"        : "Minska trollformelkostnaden (${val})",
@@ -538,21 +541,21 @@
 	"core.bonus.CHARGE_IMMUNITY.name"                    : "Galoppanfalls-immunitet",
 	"core.bonus.CHARGE_IMMUNITY.description"             : "Immun mot ryttares och tornerares galopperande ridanfall",
 	"core.bonus.DARKNESS.name"                           : "I skydd av mörkret",
-	"core.bonus.DARKNESS.description"                    : "Skapar ett hölje av mörker med en ${val}-rutorsradie",
+	"core.bonus.DARKNESS.description"                    : "Skapar ett mörkerhölje med en rut-radie på ${val} som gäckar dina fiender",
 	"core.bonus.DEATH_STARE.name"                        : "Dödsblick (${val}%)",
-	"core.bonus.DEATH_STARE.description"                 : "Varje förbandsenhet med 'Dödsblick' har ${val}% chans att döda den översta enheten i ett fiendeförband",
+	"core.bonus.DEATH_STARE.description"                 : "Varje 'Dödsblick' har ${val}% chans att döda den översta fiendeenheten",
 	"core.bonus.DEFENSIVE_STANCE.name"                   : "Försvarshållning",
-	"core.bonus.DEFENSIVE_STANCE.description"            : "Ger ytterligare +${val} till enhetens försvarsförmåga när du väljer att försvarar dig",
+	"core.bonus.DEFENSIVE_STANCE.description"            : "När du väljer att försvara en enhet så får den +${val} extra försvar",
 	"core.bonus.DESTRUCTION.name"                        : "Förintelse",
 	"core.bonus.DESTRUCTION.description"                 : "Har ${val}% chans att döda extra enheter efter attack",
 	"core.bonus.DOUBLE_DAMAGE_CHANCE.name"               : "Dödsstöt",
-	"core.bonus.DOUBLE_DAMAGE_CHANCE.description"        : "Har ${val}% chans att ge dubbel basskada vid attack",
+	"core.bonus.DOUBLE_DAMAGE_CHANCE.description"        : "Har ${val}% chans att utdela dubbel basskada vid attack",
 	"core.bonus.DRAGON_NATURE.name"                      : "Drake",
 	"core.bonus.DRAGON_NATURE.description"               : "Varelsen har en draknatur",
 	"core.bonus.EARTH_IMMUNITY.name"                     : "Jord-immunitet",
 	"core.bonus.EARTH_IMMUNITY.description"              : "Immun mot alla trollformler från skolan för jordmagi",
 	"core.bonus.ENCHANTER.name"                          : "Förtrollare",
-	"core.bonus.ENCHANTER.description"                   : "Kan kasta ${subtyp.spell} på alla varje tur/omgång",
+	"core.bonus.ENCHANTER.description"                   : "Kan kasta ${subtyp.spell} på alla varje turomgång",
 	"core.bonus.ENCHANTED.name"                          : "Förtrollad",
 	"core.bonus.ENCHANTED.description"                   : "Påverkas av permanent ${subtype.spell}",
 	"core.bonus.ENEMY_ATTACK_REDUCTION.name"             : "Avfärda attack (${val}%)",
@@ -578,15 +581,15 @@
 	"core.bonus.GARGOYLE.name"                           : "Stenfigur",
 	"core.bonus.GARGOYLE.description"                    : "Kan varken upplivas eller läkas",
 	"core.bonus.GENERAL_DAMAGE_REDUCTION.name"           : "Minska skada (${val}%)",
-	"core.bonus.GENERAL_DAMAGE_REDUCTION.description"    : "Reducerar fysisk skada från både distans- och närstridsattacker",
+	"core.bonus.GENERAL_DAMAGE_REDUCTION.description"    : "Reducerar skadan från distans- och närstrids-attacker",
 	"core.bonus.HATE.name"                               : "Hatar ${subtyp.varelse}",
 	"core.bonus.HATE.description"                        : "Gör ${val}% mer skada mot ${subtyp.varelse}",
 	"core.bonus.HEALER.name"                             : "Helare",
 	"core.bonus.HEALER.description"                      : "Helar/läker allierade enheter",
 	"core.bonus.HP_REGENERATION.name"                    : "Självläkande",
-	"core.bonus.HP_REGENERATION.description"             : "Får tillbaka ${val} träffpoäng (hälsa) varje runda",
+	"core.bonus.HP_REGENERATION.description"             : "Får tillbaka ${val} hälsa (träffpoäng) varje runda",
 	"core.bonus.JOUSTING.name"                           : "Galopperande ridanfall",
-	"core.bonus.JOUSTING.description"                    : "Orsakar +${val}% extra skada för varje ruta som enheten förflyttas innan attack",
+	"core.bonus.JOUSTING.description"                    : "Orsakar +${val}% mer skada för varje ruta som förflyttas innan attack",
 	"core.bonus.KING.name"                               : "Kung",
 	"core.bonus.KING.description"                        : "Sårbar för 'Dräpar'-nivå ${val} eller högre",
 	"core.bonus.LEVEL_SPELL_IMMUNITY.name"               : "Förtrollningsimmunitet 1-${val}",
@@ -594,13 +597,13 @@
 	"core.bonus.LIMITED_SHOOTING_RANGE.name"             : "Begränsad räckvidd för skjutning",
 	"core.bonus.LIMITED_SHOOTING_RANGE.description"      : "Kan inte sikta på enheter längre bort än ${val} rutor",
 	"core.bonus.LIFE_DRAIN.name"                         : "Dränerar livskraft (${val}%)",
-	"core.bonus.LIFE_DRAIN.description"                  : "Dränerar ${val}% träffpoäng (hälsa) av utdelad skada",
+	"core.bonus.LIFE_DRAIN.description"                  : "Dränerar ${val}% hälsa (träffpoäng) av utdelad skada",
 	"core.bonus.MANA_CHANNELING.name"                    : "Kanalisera trollformelspoäng ${val}%",
-	"core.bonus.MANA_CHANNELING.description"             : "Ger din hjälte ${val}% av den mängd trollformelspoäng som fienden spenderar per trollformel i strid",
+	"core.bonus.MANA_CHANNELING.description"             : "Ger din hjälte ${val}% av fiendens spenderade trollformelspoäng i strid",
 	"core.bonus.MANA_DRAIN.name"                         : "Dränera trollformelspoäng",
 	"core.bonus.MANA_DRAIN.description"                  : "Dränerar ${val} trollformelspoäng varje tur",
 	"core.bonus.MAGIC_MIRROR.name"                       : "Magisk spegel (${val}%)",
-	"core.bonus.MAGIC_MIRROR.description"                : "Har ${val}% chans att reflektera (omdirigera) en offensiv trollformel på en fiendeenhet",
+	"core.bonus.MAGIC_MIRROR.description"                : "${val}% chans att reflektera en offensiv trollformel på en fiendeenhet",
 	"core.bonus.MAGIC_RESISTANCE.name"                   : "Magiskt motstånd (${val}%)",
 	"core.bonus.MAGIC_RESISTANCE.description"            : "Har en ${val}% chans att motstå en skadlig trollformel",
 	"core.bonus.MIND_IMMUNITY.name"                      : "Immunitet mot sinnesförtrollningar",
@@ -610,11 +613,11 @@
 	"core.bonus.NO_MELEE_PENALTY.name"                   : "Ingen närstridsbestraffning",
 	"core.bonus.NO_MELEE_PENALTY.description"            : "Varelsen har ingen närstridsbestraffning",
 	"core.bonus.NO_MORALE.name"                          : "Ingen Moralpåverkan",
-	"core.bonus.NO_MORALE.description"                   : "Varelsen är immun mot moraliska effekter och har alltid neutral moral",
+	"core.bonus.NO_MORALE.description"                   : "Är immun mot moraliska effekter och har alltid neutral moral",
 	"core.bonus.NO_WALL_PENALTY.name"                    : "Ingen murbestraffning",
 	"core.bonus.NO_WALL_PENALTY.description"             : "Orsakar full skada mot fiender bakom en mur",
 	"core.bonus.NON_LIVING.name"                         : "Icke levande",
-	"core.bonus.NON_LIVING.description"                  : "Immunitet mot många effekter som annars bara påverkar levande och odöda varelser",
+	"core.bonus.NON_LIVING.description"                  : "Påverkas inte av vissa effekter som levande/odöda gör",
 	"core.bonus.RANDOM_SPELLCASTER.name"                 : "Slumpmässig besvärjare",
 	"core.bonus.RANDOM_SPELLCASTER.description"          : "Kan kasta trollformler som väljs slumpmässigt",
 	"core.bonus.RANGED_RETALIATION.name"                 : "Motattacker på avstånd",
@@ -624,21 +627,21 @@
 	"core.bonus.REBIRTH.name"                            : "Återfödelse (${val}%)",
 	"core.bonus.REBIRTH.description"                     : "${val}% av enheterna kommer att återuppväckas efter döden",
 	"core.bonus.RETURN_AFTER_STRIKE.name"                : "Återvänder efter närstrid",
-	"core.bonus.RETURN_AFTER_STRIKE.description"         : "Efter att ha attackerat en fiendeenhet i närstrid återvänder enheten till rutan som den var placerad på innan den utförde sin närstridsattack",
+	"core.bonus.RETURN_AFTER_STRIKE.description"         : "Efter närstridsattack återvänder den till sin ursprungliga ruta",
 	"core.bonus.REVENGE.name"                            : "Hämnd",
-	"core.bonus.REVENGE.description"                     : "Orsakar extra skada baserat på angriparens förlorade träffpoäng (hälsa) i strid",
+	"core.bonus.REVENGE.description"                     : "Orsakar mer skada om den själv blivit skadad",
 	"core.bonus.SHOOTER.name"                            : "Distans-attack",
 	"core.bonus.SHOOTER.description"                     : "Varelsen kan skjuta/attackera på avstånd",
 	"core.bonus.SHOOTS_ALL_ADJACENT.name"                : "Skjuter alla i närheten",
-	"core.bonus.SHOOTS_ALL_ADJACENT.description"         : "Denna varelses distans-attacker drabbar alla mål i ett litet område",
+	"core.bonus.SHOOTS_ALL_ADJACENT.description"         : "Dess distans-attacker drabbar alla mål i ett litet område",
 	"core.bonus.SOUL_STEAL.name"                         : "Själtjuv",
-	"core.bonus.SOUL_STEAL.description"                  : "Återuppväcker ${val} av sina egna enheter för varje dödad fiendeenhet",
+	"core.bonus.SOUL_STEAL.description"                  : "Återuppväcker ${val} av sina egna för varje dödad fiendeenhet",
 	"core.bonus.SPELLCASTER.name"                        : "Besvärjare",
 	"core.bonus.SPELLCASTER.description"                 : "Kan kasta ${subtype.spell}",
 	"core.bonus.SPELL_AFTER_ATTACK.name"                 : "Besvärja efter attack",
-	"core.bonus.SPELL_AFTER_ATTACK.description"          : "Har en ${val}% chans att kasta ${subtype.spell} efter att den har attackerat",
+	"core.bonus.SPELL_AFTER_ATTACK.description"          : "Har ${val}% chans att kasta ${subtype.spell} efter anfall",
 	"core.bonus.SPELL_BEFORE_ATTACK.name"                : "Besvärja före attack",
-	"core.bonus.SPELL_BEFORE_ATTACK.description"         : "Har en ${val}% chans att kasta ${subtype.spell} innan den attackerar",
+	"core.bonus.SPELL_BEFORE_ATTACK.description"         : "Har ${val}% chans att kasta ${subtype.spell} före anfall",
 	"core.bonus.SPELL_DAMAGE_REDUCTION.name"             : "Trolldoms-resistens",
 	"core.bonus.SPELL_DAMAGE_REDUCTION.description"      : "Skadan från trollformler är reducet med ${val}%.",
 	"core.bonus.SPELL_IMMUNITY.name"                     : "Trolldoms-immunitet",
@@ -659,14 +662,14 @@
 	"core.bonus.TRANSMUTATION.description"               : "${val}% chans att förvandla angripen enhet till en annan typ",
 	"core.bonus.UNDEAD.name"                             : "Odöd",
 	"core.bonus.UNDEAD.description"                      : "Varelsen är odöd",
-	"core.bonus.UNLIMITED_RETALIATIONS.name"             : "Obegränsat antal motattacker",
-	"core.bonus.UNLIMITED_RETALIATIONS.description"      : "Kan slå tillbaka mot ett obegränsat antal attacker varje omgång",
+	"core.bonus.UNLIMITED_RETALIATIONS.name"             : "Slår tillbaka varje gång",
+	"core.bonus.UNLIMITED_RETALIATIONS.description"      : "Obegränsat antal motattacker",
 	"core.bonus.WATER_IMMUNITY.name"                     : "Vatten-immunitet",
-	"core.bonus.WATER_IMMUNITY.description"              : "Immun mot alla trollformler från vattenmagi-skolan",
+	"core.bonus.WATER_IMMUNITY.description"              : "Immun mot alla trollformler från vattenmagiskolan",
 	"core.bonus.WIDE_BREATH.name"                        : "Bred dödlig andedräkt",
 	"core.bonus.WIDE_BREATH.description"                 : "Bred andningsattack (flera rutor)",
 	"core.bonus.DISINTEGRATE.name"                       : "Desintegrerar",
-	"core.bonus.DISINTEGRATE.description"                : "Ingen fysisk kropp finns kvar efter att enheten blivit besegrad i strid",
+	"core.bonus.DISINTEGRATE.description"                : "Ingen kropp lämnas kvar efter dödsögonblicket",
 	"core.bonus.INVINCIBLE.name"                         : "Oövervinnerlig",
 	"core.bonus.INVINCIBLE.description"                  : "Kan inte påverkas av någonting"
 }

+ 2 - 1
client/lobby/SelectionTab.cpp

@@ -809,6 +809,7 @@ void SelectionTab::parseMaps(const std::unordered_set<ResourcePath> & files)
 		{
 			auto mapInfo = std::make_shared<ElementInfo>();
 			mapInfo->mapInit(file.getOriginalName());
+			mapInfo->name = mapInfo->getNameForList();
 
 			if (isMapSupported(*mapInfo))
 				allItems.push_back(mapInfo);
@@ -988,6 +989,6 @@ void SelectionTab::ListItem::updateItem(std::shared_ptr<ElementInfo> info, bool
 		iconLossCondition->setFrame(info->mapHeader->defeatIconIndex, 0);
 		labelName->setMaxWidth(185);
 	}
-	labelName->setText(info->getNameForList());
+	labelName->setText(info->name);
 	labelName->setColor(color);
 }

+ 1 - 0
client/lobby/SelectionTab.h

@@ -33,6 +33,7 @@ public:
 	ElementInfo() : CMapInfo() { }
 	~ElementInfo() { }
 	std::string folderName = "";
+	std::string name = "";
 	bool isFolder = false;
 };
 

+ 4 - 0
launcher/CMakeLists.txt

@@ -202,6 +202,10 @@ elseif(NOT APPLE_IOS)
 	target_link_libraries(vcmilauncher SDL2::SDL2)
 endif()
 
+if(ENABLE_STATIC_LIBS OR NOT (ENABLE_EDITOR AND ENABLE_LAUNCHER))
+	target_compile_definitions(vcmilauncher PRIVATE VCMIQT_STATIC)
+endif()
+
 target_link_libraries(vcmilauncher vcmi vcmiqt Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network)
 target_include_directories(vcmilauncher
 	PUBLIC	${CMAKE_CURRENT_SOURCE_DIR}

+ 4 - 0
mapeditor/CMakeLists.txt

@@ -217,6 +217,10 @@ if(APPLE)
 	set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER vcmieditor)
 endif()
 
+if(ENABLE_STATIC_LIBS OR NOT (ENABLE_EDITOR AND ENABLE_LAUNCHER))
+	target_compile_definitions(vcmieditor PRIVATE VCMIQT_STATIC)
+endif()
+
 target_link_libraries(vcmieditor vcmi vcmiqt Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network)
 target_include_directories(vcmieditor
 	PUBLIC	${CMAKE_CURRENT_SOURCE_DIR}

+ 2 - 1
server/CGameHandler.cpp

@@ -235,7 +235,8 @@ void CGameHandler::levelUpCommander (const CCommanderInstance * c, int skill)
 				scp.accumulatedBonus.type = BonusType::STACKS_SPEED;
 				break;
 			case ECommander::SPELL_POWER:
-				scp.accumulatedBonus.type = BonusType::MAGIC_RESISTANCE;
+				scp.accumulatedBonus.type = BonusType::SPELL_DAMAGE_REDUCTION;
+				scp.accumulatedBonus.subtype = BonusSubtypeID(SpellSchool::ANY);
 				scp.accumulatedBonus.val = difference (VLC->creh->skillLevels, c->secondarySkills, ECommander::RESISTANCE);
 				sendAndApply(scp); //additional pack
 				scp.accumulatedBonus.type = BonusType::CREATURE_SPELL_POWER;

+ 1 - 1
vcmiqt/vcmiqt.h

@@ -10,7 +10,7 @@
 
 #include <QtCore/QtGlobal>
 
-#if VCMIQT_STATIC
+#ifdef VCMIQT_STATIC
 # define VCMIQT_LINKAGE
 #elif defined(VCMIQT_SHARED)
 #  define VCMIQT_LINKAGE Q_DECL_EXPORT