Index: binaries/data/mods/public/l10n/ast.public-civilizations.po =================================================================== --- binaries/data/mods/public/l10n/ast.public-civilizations.po +++ binaries/data/mods/public/l10n/ast.public-civilizations.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: 0 A.D.\n" "POT-Creation-Date: 2021-01-22 08:09+0000\n" -"PO-Revision-Date: 2021-11-06 18:31+0000\n" +"PO-Revision-Date: 2021-11-01 03:47+0000\n" "Last-Translator: David Sowa \n" "Language-Team: Asturian (http://www.transifex.com/wildfire-games/0ad/language/ast/)\n" "MIME-Version: 1.0\n" @@ -457,11 +457,11 @@ "Meroitic kingdom was known as Aethiopia. The Kushite kingdom persisted until" " the 4th century AD, when it weakened and disintegrated due to internal " "rebellion, eventually succumbing to the rising power of Axum." -msgstr "Qesa yera un antiguu reinu africanu asitiáu nes miestes del Nilu Azul, Albu y Prietu no qu'anguaño ye la República del Sudán. El reinu qesán nació en Napata tres l'esbarrumbu del Imperiu Nuevu d'Exiptu a la fin de la Edá del Bronce. Nel VIII a.C. los sos reis conquisten Exiptu y gobiérnenlu demientres un sieglu como los faraones de la XXV dinastía exipcia, hasta que los asirios los espuxen. La cultura qesana bebía de la de los exipcios. Ello pervése nes sos abondoses pirámides, templos y monumentos. Tamién adoraben a munchos dioses exipcios, como Amón. Yá na antigüedá clásica, la cabecera del reinu yera Medevi, los griegos nomaben al reinu de Meroe o Etiopía. El reinu dura hasta'l IV d.C., cuando, por culpa de rebeliones internes, decaye, s'esbruga y finalmente agacha énte l'ascensu d'Acsun." +msgstr "Qos yera un antiguu reinu africanu asitiáu nes miestes del Nilu Azul, Albu y Prietu no qu'anguaño ye la República del Sudán. El reinu qosán nació en Napata tres l'esbarrumbu del Imperiu Nuevu d'Exiptu a la fin de la Edá del Bronce. Nel VIII a.C. los sos reis conquisten Exiptu y gobiérnenlu demientres un sieglu como los faraones de la XXV dinastía exipcia, hasta que los asirios los espuxen. La cultura qosana bebía de la de los exipcios. Ello pervése nes sos abondoses pirámides, templos y monumentos. Tamién adoraben a munchos dioses exipcios, como Amón. Yá na antigüedá clásica, la cabecera del reinu yera Medevi, los griegos nomaben al reinu de Meroe o Etiopía. El reinu dura hasta'l IV d.C., cuando, por culpa de rebeliones internes, decaye, s'esbruga y finalmente agacha énte l'ascensu d'Acsun." #: simulation/data/civs/kush.jsonName msgid "Kushites" -msgstr "Qesanos" +msgstr "Qosanos" #: simulation/data/civs/mace.jsonAINames[0] msgid "Alexander the Great" @@ -523,7 +523,7 @@ "Macedonian forces and allies took over most of the world they knew, " "including Egypt, Persia and parts of the Indian subcontinent, allowing a " "diffusion of Hellenic and eastern cultures for years to come." -msgstr "Na antigüedá, Macedonia yera un reinu oriental septentrional de la península griega. Sol mandu d'Alexandre Magnu, ella apoderóse de la mayor parte del mundiu coñocíu—Exiptu, Persia y estayes del socontinente índicu—y asina dio llugar a la difusión de les cultures heléniques y orientales." +msgstr "Na antigüedá, Macedonia yera un reinu del septentrión oriental de la península griega. Sol mandu d'Alexandre Magnu, ella apoderóse de la mayor parte del mundiu coñocíu—Exiptu, Persia y estayes del socontinente índicu—y asina dio llugar a la difusión de les cultures heléniques y orientales." #: simulation/data/civs/mace.jsonName msgid "Macedonians" @@ -836,7 +836,7 @@ "nations on earth for almost 800 years. The Romans were the supreme builders " "of the ancient world, excelled at siege warfare and had an exquisite " "infantry and navy." -msgstr "Los romanos gobernaron ún de los imperios más grandes de l'antigüedá. Nel so cumal, les sos fronteres espurríense de la Escocia meridiana al desiertu del Sáḥara, y tenía ente 60 y 80 millones d'habitantes, un cuartu de la población de la Tierra d'aquella dómina. Amás, siguió siendo una potencia mundial cuasimente 800 años. Los romanos yeren constructores ensin oldéu. Teníen arte pal asediu y xeitu pal combate terrestre y naval." +msgstr "Los romanos gobernaron ún de los imperios más grandes de l'antigüedá. Nel so cumal, les sos fronteres espurríense de la Escocia meridional al desiertu del Sáḥara, y tenía ente 60 y 80 millones d'habitantes, un cuartu de la población de la Tierra d'aquella dómina. Amás, siguió siendo una potencia mundial cuasimente 800 años. Los romanos yeren constructores ensin oldéu. Teníen arte pal asediu y xeitu pal combate terrestre y naval." #: simulation/data/civs/rome.jsonName msgid "Romans" Index: binaries/data/mods/public/l10n/ast.public-gui-campaigns.po =================================================================== --- binaries/data/mods/public/l10n/ast.public-gui-campaigns.po +++ binaries/data/mods/public/l10n/ast.public-gui-campaigns.po @@ -47,9 +47,9 @@ " fast at the start, be prepared to run through the initial bit several " "times." msgstr "" -"Nesti percorríu vamos deprender cómo entamar con xeitu. Al aniciu del xuegu," -" lo más importante ye axuntar recursos tan aína como puedas pa que llueu " -"sías a producir mílites abondos. Avisu: El cursín comienza perrápido, tate " +"Nesti mapa vamos deprender cómo empezar a xugar. Al principiu, lo más " +"importante ye llograr recursos lo más rápido posible pa que más alantre " +"puedas allistar abondos soldaos. Avisu: El tutorial entama perrápido, tate " "preparáu pa repetilu delles veces." #: campaigns/tutorial.jsonLevels.eco_walkthrough.Name @@ -60,7 +60,7 @@ #: campaigns/tutorial.jsonLevels.introduction.Description msgctxt "Campaign Template" msgid "This is a basic tutorial to get you started playing 0 A.D." -msgstr "Nesti cursín vamos deprender a xugar al 0 A.D." +msgstr "Esti ye un cursín básicu p'ayudate a entamar 0 A.D." #: campaigns/tutorial.jsonLevels.introduction.Name msgctxt "Campaign Template" @@ -170,12 +170,12 @@ #: gui/campaigns/new_modal/NewCampaignModal.xml:(caption):16 msgid "Please enter the name of your new campaign run:" -msgstr "Noma esti entamu, por favor:" +msgstr "Noma esti nuevu entamu de campaña, por favor:" #: gui/campaigns/new_modal/NewCampaignModal.xml:(caption):27 #: gui/campaigns/setup/CampaignSetupPage.xml:(caption):55 msgid "Start Campaign" -msgstr "Entamar campaña" +msgstr "Entamar la campaña" #: gui/campaigns/setup/CampaignSetupPage.js:40 msgid "No campaign selected." Index: binaries/data/mods/public/l10n/ast.public-gui-gamesetup.po =================================================================== --- binaries/data/mods/public/l10n/ast.public-gui-gamesetup.po +++ binaries/data/mods/public/l10n/ast.public-gui-gamesetup.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: 0 A.D.\n" "POT-Creation-Date: 2021-08-30 07:08+0000\n" -"PO-Revision-Date: 2021-11-06 18:53+0000\n" +"PO-Revision-Date: 2021-11-05 02:59+0000\n" "Last-Translator: David Sowa \n" "Language-Team: Asturian (http://www.transifex.com/wildfire-games/0ad/language/ast/)\n" "MIME-Version: 1.0\n" @@ -196,7 +196,7 @@ #: gui/gamesetup/Pages/GameSetupPage/GameSettings/Single/Buttons/MapBrowser.js:39 #, javascript-format msgid "Press %(hotkey)s to view the list of available maps." -msgstr "Premi %(hotkey)s pa ver los mapes disponibles." +msgstr "Primi %(hotkey)s pa ver los mapes disponibles." #: gui/gamesetup/Pages/GameSetupPage/GameSettings/Single/Checkboxes/AlliedView.js:26 msgid "Allied View" @@ -608,7 +608,7 @@ msgid "" "%(hotkey_civinfo)s / %(hotkey_structree)s: View Civilization Overview / Structure Tree\n" "Last opened will be reopened on click." -msgstr "%(hotkey_civinfo)s / %(hotkey_structree)s: Ver la Sinopsis civilizacional / Árbole de construcciones\nL'últimu abiertu va reabrise en calcando." +msgstr "%(hotkey_civinfo)s / %(hotkey_structree)s: Ver la Sinopsis civilizacional / Árbore de construcciones\nL'últimu abiertu va reabrise en calcando." #: gui/gamesetup/Pages/GameSetupPage/Panels/Buttons/LobbyButton.js:19 msgid "Show the multiplayer lobby in a dialog window." @@ -664,7 +664,7 @@ #: gui/gamesetup/Pages/GameSetupPage/Panels/Chat/ChatInputPanel.js:55 #, javascript-format msgid "Press %(hotkey)s to autocomplete player names or settings." -msgstr "Premi %(hotkey)s p'autocompletar nomes de xugadores o axustes. " +msgstr "Primi %(hotkey)s p'autocompletar nomes de xugadores o axustes. " #: gui/gamesetup/Pages/GameSetupPage/Panels/Chat/ChatMessages/ClientChat.js:27 msgid "Unknown Player" @@ -1152,7 +1152,7 @@ msgid "" "“It is from their foes, not their friends, that cities learn the lesson of " "building high walls and ships of war.” \\n— Aristophanes (“Birds”)" -msgstr "«Ye de los enemigos, non los amigos, que les poleis deprendieron a llevantar muralles altes y construir naves llargues.» \\n— Aristófanes («Los páxaros»)" +msgstr "«Ye de los enemigos, non los amigos, que les poleis deprendieron a llevantar muralles altes y construyir naves llargues.» \\n— Aristófanes («Los páxaros»)" #: gui/text/quotes.txt:34 msgid "" @@ -1522,7 +1522,7 @@ "while the survivors used the heap as a vantage point for throwing missiles " "at our men, or catching our spears and throwing them back.” \\n— Caesar " "about the Battle of the Sabis (“De Bello Gallico”, II. 27)" -msgstr "«Mas los enemigos \\[…] amosaron tanta virtú qu'en cayendo los primeros d'ellos los siguientes escartábenlos y sustituíenlos, inda que s'engarriaren dende enriba los sos cuerpos; los cadabres sobrantes deitábense y atropábense, que dende'l montón llanzaren proyeutiles escontra nós y devolvieren pilos interceutaos.» \\n— César sobre la batalla del Sabe («Sobre la guerra gálica», II. 27)" +msgstr "«Mas los enemigos \\[…] amosaron tanta virtú qu'en cayendo los primeros d'ellos los siguientes escartábenlos y sostituyíenlos, inda que s'engarriaren dende enriba los sos cuerpos; los cadabres sobrantes deitábense y atropábense, que dende'l montón llanzaren proyeutiles escontra nós y devolvieren pilos interceutaos.» \\n— César sobre la batalla del Sabe («Sobre la guerra gálica», II. 27)" #: gui/text/quotes.txt:85 msgid "" Index: binaries/data/mods/public/l10n/ast.public-gui-ingame.po =================================================================== --- binaries/data/mods/public/l10n/ast.public-gui-ingame.po +++ binaries/data/mods/public/l10n/ast.public-gui-ingame.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: 0 A.D.\n" "POT-Creation-Date: 2021-10-29 07:08+0000\n" -"PO-Revision-Date: 2021-11-06 18:52+0000\n" +"PO-Revision-Date: 2021-11-05 03:46+0000\n" "Last-Translator: David Sowa \n" "Language-Team: Asturian (http://www.transifex.com/wildfire-games/0ad/language/ast/)\n" "MIME-Version: 1.0\n" @@ -262,22 +262,22 @@ #: gui/session/chat/ChatInput.js:37 #, javascript-format msgid "Press %(hotkey)s to open the public chat." -msgstr "Premi %(hotkey)s p'abrir la charra pública." +msgstr "Primi %(hotkey)s p'abrir la charra pública." #: gui/session/chat/ChatInput.js:40 #, javascript-format msgid "Press %(hotkey)s to open the observer chat." -msgstr "Premi %(hotkey)s p'abrir la charra d'espectadores." +msgstr "Primi %(hotkey)s p'abrir la charra d'espectadores." #: gui/session/chat/ChatInput.js:41 #, javascript-format msgid "Press %(hotkey)s to open the ally chat." -msgstr "Premi %(hotkey)s p'abrir la charra comuñera." +msgstr "Primi %(hotkey)s p'abrir la charra comuñera." #: gui/session/chat/ChatInput.js:43 #, javascript-format msgid "Press %(hotkey)s to open the previously selected private chat." -msgstr "Premi %(hotkey)s p'abrir la última charra privada esbillada." +msgstr "Primi %(hotkey)s p'abrir la última charra privada esbillada." #. Translation: A player that left the game joins again #: gui/session/chat/ChatMessageFormatNetwork.js:24 @@ -611,7 +611,7 @@ #: gui/session/diplomacy/DiplomacyDialog.xml:(caption):39 msgid "Tribute" -msgstr "Tribuir" +msgstr "Tribuyir" #: gui/session/diplomacy/DiplomacyDialog.xml:(caption):90 #: gui/session/objectives/ObjectivesDialog.xml:(caption):43 @@ -659,7 +659,7 @@ msgid "" "Bribe a random unit from this player and share its vision during a limited " "period." -msgstr "Sobornar una unidá d'esti xugador al debalu y compartir la so vista un tiempu determináu." +msgstr "Sobornar una unidá d'esti xugador al debalu & aprovechar la so vista un periodu llendáu." #: gui/session/diplomacy/playercontrols/SpyRequestButton.js:142 msgid "A failed bribe will cost you:" @@ -675,7 +675,7 @@ msgid "" "Tribute %(resourceAmount)s %(resourceType)s to %(playerName)s. Shift-click " "to tribute %(greaterAmount)s." -msgstr "Tribuir %(resourceAmount)s de %(resourceType)s a %(playerName)s. Con Mayúscules premida, calca pa tribuir %(greaterAmount)s." +msgstr "Tribuyir %(resourceAmount)s de %(resourceType)s a %(playerName)s. Con Mayús primida, calca pa tribuyir %(greaterAmount)s." #: gui/session/input.js:191 #, javascript-format @@ -701,7 +701,7 @@ #: gui/session/message_box/DeleteSelectionConfirmation.js:11 msgid "Destroy everything currently selected?" -msgstr "¿Destruir tolo esbillao?" +msgstr "¿Destruyir tolo esbillao?" #: gui/session/dialogs/yes_no.xml:(caption):24 #: gui/session/message_box/DeleteSelectionConfirmation.js:14 @@ -1046,7 +1046,7 @@ #: gui/session/selection_panels.js:339 msgid "Single-click to unload 1. Shift-click to unload all of this type." -msgstr "Calca una vegada pa descargar 1. Calca con Mayúscules premida pa descargar tolos d'esti tipu." +msgstr "Calca una vegada pa descargar 1. Calca con Mayús primida pa descargar tolos d'esti tipu." #: gui/session/selection_panels.js:341 gui/session/selection_panels.js:906 #, javascript-format @@ -1219,19 +1219,19 @@ #: gui/session/selection_panels_helpers.js:140 msgid "Could only be constructed once." msgid_plural "Could only be constructed %(limit)s times." -msgstr[0] "Namái pudo construise una vegada." -msgstr[1] "Namái pudo construise %(limit)s vegaes." +msgstr[0] "Namái pudo construyise una vegada." +msgstr[1] "Namái pudo construyise %(limit)s vegaes." #: gui/session/selection_panels_helpers.js:144 msgid "Can be constructed only once." -msgstr "Pue construise namái una vegada." +msgstr "Pue construyise namái una vegada." #: gui/session/selection_panels_helpers.js:146 #, javascript-format msgid "Can be constructed %(count)s more time." msgid_plural "Can be constructed %(count)s more times." -msgstr[0] "Pue construise %(count)s vegada más." -msgstr[1] "Pue construise %(count)s vegaes más." +msgstr[0] "Pue construyise %(count)s vegada más." +msgstr[1] "Pue construyise %(count)s vegaes más." #: gui/session/selection_panels_helpers.js:153 msgid "Could only be trained once." @@ -1332,7 +1332,7 @@ "%(civ)s\n" "%(hotkey_civinfo)s / %(hotkey_structree)s: View Civilization Overview / Structure Tree\n" "Last opened will be reopened on click." -msgstr "%(civ)s\n%(hotkey_civinfo)s / %(hotkey_structree)s: Ver Sinopsis civilizacional / Árbole de construcciones\nL'últimu abiertu va reabrise en calcando." +msgstr "%(civ)s\n%(hotkey_civinfo)s / %(hotkey_structree)s: Ver Sinopsis civilizacional / Árbore de construcciones\nL'últimu abiertu va reabrise en calcando." #: gui/session/top_panel/CounterManager.js:101 #, javascript-format @@ -1459,7 +1459,7 @@ "Select one type of goods you want to modify by clicking on it, and then use " "the arrows of the other types to modify their shares. You can also press " "%(hotkey)s while selecting one type of goods to bring its share to 100%%." -msgstr "Esbilla un tipu de bienes que quieras camudar calcando nelli, y llueu emplega les fleches de los otros tipos pa camudar les sos proporciones. Tamién puedes premer %(hotkey)s al esbillar un tipu de bienes pa xubir la so proporción al 100 %%." +msgstr "Esbilla un tipu de bienes que quieras camudar calcando nelli, & llueu emplega les fleches de los otros tipos pa camudar les sos proporciones. Tamién pues primir %(hotkey)s al esbillar un tipu de bienes pa xubir la so proporción al 100 %%." #: gui/session/trade/TradeDialogBarterPanel.js:45 #, javascript-format @@ -1468,7 +1468,7 @@ "each time the lower buttons are pressed, %(quantity)s of the upper resource " "will be sold for the displayed quantity of the lower. Press and hold " "%(hotkey)s to temporarily multiply the traded amount by %(multiplier)s." -msgstr "Entama escoyendo'l recursu que quieras vender de la fila cimera. Cada vegada que se calquen los botones baxeros, %(quantity)s de los recursos arriberos va (van) vendese pola cantidá amosada de los baxeros. Premi y caltén premíu/ida %(hotkey)s pa multiplicar temporalmente la cantidá entrocada por %(multiplier)s." +msgstr "Entama escoyendo'l recursu que quieras vender de la fila cimera. Cada vegada que se calquen los botones baxeros, %(quantity)s de los recursos arriberos va (van) vendese pola cantidá amosada de los baxeros. Primi & caltén primíu (-ida) %(hotkey)s pa multiplicar temporalmente la cantidá entrocada por %(multiplier)s." #: gui/session/trade/TradePanel.xml:(caption):5 msgid "Trade" @@ -1538,7 +1538,7 @@ #: gui/session/trade/TraderStatusTextShip.js:46 #, javascript-format msgid "%(openingTradingString)s, and %(inactiveString)s." -msgstr "%(openingTradingString)s y %(inactiveString)s." +msgstr "%(openingTradingString)s & %(inactiveString)s." #: gui/session/trade/TraderStatusTextLand.js:75 #, javascript-format @@ -1717,11 +1717,11 @@ #: gui/session/unit_actions.js:1734 msgid "Press to allow allies to use this dropsite" -msgstr "Premi pa dexar que los comuñeros usen esti depósitu" +msgstr "Primi pa dexar que los comuñeros usen esti depósitu" #: gui/session/unit_actions.js:1739 msgid "Press to prevent allies from using this dropsite" -msgstr "Premi pa quitar que los comuñeros usen esti depósitu" +msgstr "Primi pa quitar que los comuñeros usen esti depósitu" #: gui/session/unit_actions.js:1774 msgid "The use of this dropsite is prohibited" Index: binaries/data/mods/public/l10n/ast.public-gui-lobby.po =================================================================== --- binaries/data/mods/public/l10n/ast.public-gui-lobby.po +++ binaries/data/mods/public/l10n/ast.public-gui-lobby.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: 0 A.D.\n" "POT-Creation-Date: 2021-09-03 07:08+0000\n" -"PO-Revision-Date: 2021-11-06 18:51+0000\n" +"PO-Revision-Date: 2021-11-03 03:55+0000\n" "Last-Translator: David Sowa \n" "Language-Team: Asturian (http://www.transifex.com/wildfire-games/0ad/language/ast/)\n" "MIME-Version: 1.0\n" @@ -871,7 +871,7 @@ "Wildfire Games reserves the right to delete any service data (including " "personal data) at any time, except where a user has objected to the erasure " "of his or her personal data for performance of a legal claim." -msgstr "Wildfire Games acuta'l derechu a desaniciar cualesquier datos de serviciu (datos personales incluíos) en cualquier momentu, sacante cuando un usuariu o usuaria se tenga opuesto a la esborradura de los sos datos personales pal cumplimientu d'una demanda llegal." +msgstr "Wildfire Games acuta'l derechu a desaniciar cualesquier datos de serviciu (datos personales incluyíos) en cualquier momentu, sacante cuando un usuariu o usuaria se tenga opuesto a la esborradura de los sos datos personales pal cumplimientu d'una demanda llegal." #: gui/prelobby/common/terms/Privacy_Policy.txt:48 msgid "[font=\"sans-bold-16\"]Legal basis for the processing:[/font]" Index: binaries/data/mods/public/l10n/ast.public-gui-manual.po =================================================================== --- binaries/data/mods/public/l10n/ast.public-gui-manual.po +++ binaries/data/mods/public/l10n/ast.public-gui-manual.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: 0 A.D.\n" "POT-Creation-Date: 2021-10-11 07:08+0000\n" -"PO-Revision-Date: 2021-11-06 18:45+0000\n" +"PO-Revision-Date: 2021-11-05 03:52+0000\n" "Last-Translator: David Sowa \n" "Language-Team: Asturian (http://www.transifex.com/wildfire-games/0ad/language/ast/)\n" "MIME-Version: 1.0\n" @@ -39,7 +39,7 @@ " In windowed mode, you can resize the window. If the game runs too slowly, " "you can change some settings in the options window: try disabling the “HQ " "Water Effects” and “Shadows” options." -msgstr "Puedes cambiar ente la pantalla completa y la ventana premiendo Alternativa + Introducir. Nel mou ventana, puedes camudar el tamañu de la mesma. Si'l xuegu va amodín, pues afacer los axustes nel menú «Opciones»: prúebalu sin «Efectos acuáticos en calidá alta» y «Solombres»." +msgstr "Pues cambiar ente la pantalla completa y la ventana primiendo Alternativa + Introducir. Nel mou ventana, pues camudar el tamañu de la mesma. Si'l xuegu va amodín, pues afacer los axustes nel menú opciones: prúebalu sin «Efectos acuáticos en calidá alta» y «Solombres»." #: gui/manual/intro.txt:7 msgid "[font=\"sans-bold-16\"]Playing the game[font=\"sans-14\"]" @@ -447,7 +447,7 @@ #: gui/manual/intro.txt:96 msgid " hotkey.structree – Toggle structure tree panel" -msgstr " hotkey.structree – Alternar l'árbole de construcciones" +msgstr " hotkey.structree – Alternar l'árbore de construcciones" #: gui/manual/intro.txt:97 msgid " hotkey.civinfo – Toggle civilization info panel" @@ -595,7 +595,7 @@ " hotkey.wireframe – Toggle wireframe mode (press once to get wireframes " "overlaid over the textured models, twice to get just the wireframes colored " "by the textures, thrice to get back to normal textured mode)" -msgstr " hotkey.wireframe – Alternar el mou cadarma (premi una vez p'amosar la cadarma de los modelos testuraos, dos veces p'amosar namái la cadarma coloriao de les testures, tres veces pa volver al mou normal)" +msgstr " hotkey.wireframe – Alternar el mou cadarma (primi una vez p'amosar la cadarma de los modelos testuraos, dos veces p'amosar namái la cadarma coloriao de les testures, tres veces pa volver al mou normal)" #: gui/manual/intro.txt:126 msgid "" @@ -687,17 +687,17 @@ msgid "" " hotkey.camera.zoom.in, hotkey.camera.zoom.wheel.in – Zoom in (keep pressed" " for continuous zoom)" -msgstr " hotkey.camera.zoom.in, hotkey.camera.zoom.wheel.in – Averar (calténlu premíu p'averar de contino)" +msgstr " hotkey.camera.zoom.in, hotkey.camera.zoom.wheel.in – Averar (calténlu primíu p'averar de contino)" #: gui/manual/intro.txt:146 msgid "" " hotkey.camera.zoom.out, hotkey.camera.zoom.wheel.out – Zoom out (keep " "pressed for continuous zoom)" -msgstr " hotkey.camera.zoom.out, hotkey.camera.zoom.wheel.out – Allonxar (calténlu premíu p'allonxar de contino)" +msgstr " hotkey.camera.zoom.out, hotkey.camera.zoom.wheel.out – Allonxar (calténlu primíu p'allonxar de contino)" #: gui/manual/intro.txt:147 msgid " hotkey.camera.pan – Keep pressed and move the mouse to pan" -msgstr " hotkey.camera.pan – Calténlu premíu y movi'l mure pa desplazar la vista." +msgstr " hotkey.camera.pan – Calténlu primíu y movi'l mure pa desplazar la vista." #: gui/manual/intro.txt:149 msgid "[font=\"sans-bold-14\"]During Structure Placement[font=\"sans-14\"]" Index: binaries/data/mods/public/l10n/ast.public-gui-other.po =================================================================== --- binaries/data/mods/public/l10n/ast.public-gui-other.po +++ binaries/data/mods/public/l10n/ast.public-gui-other.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: 0 A.D.\n" "POT-Creation-Date: 2021-10-29 07:08+0000\n" -"PO-Revision-Date: 2021-11-06 18:51+0000\n" +"PO-Revision-Date: 2021-11-05 03:51+0000\n" "Last-Translator: David Sowa \n" "Language-Team: Asturian (http://www.transifex.com/wildfire-games/0ad/language/ast/)\n" "MIME-Version: 1.0\n" @@ -39,7 +39,7 @@ #: gui/common/color.js:196 #, javascript-format msgid "Press %(hotkey)s to autocomplete player names." -msgstr "Premi %(hotkey)s p'autocompletar nomes de xugadores." +msgstr "Primi %(hotkey)s p'autocompletar nomes de xugadores." #: gui/common/color.js:198 msgctxt "hotkey" @@ -1444,7 +1444,7 @@ msgid "" "Indiegogo 2013 campaign\n" "More than 1000 donators (!), including:" -msgstr "Campaña Indiegogo 2013\nMás de 1000 donantes (!), incluíos:" +msgstr "Campaña Indiegogo 2013\nMás de 1000 donantes (!), incluyíos:" #: gui/credits/texts/donators.jsonTitle msgid "Donors" @@ -2331,12 +2331,12 @@ #: gui/hotkeys/spec/ingame.jsonmapped_hotkeys.ingame.session.flare.desc msgctxt "hotkey metadata" msgid "Set the cursor to Flare while this hotkey is pressed." -msgstr "Facer señes col punteru premiendo l'atayu al calcar." +msgstr "Facer señes col punteru primiendo l'atayu al calcar." #: gui/hotkeys/spec/ingame.jsonmapped_hotkeys.ingame.session.flare.name msgctxt "hotkey metadata" msgid "Flare (hold)" -msgstr "Aseñar (premiendo)" +msgstr "Aseñar (primiendo)" #: gui/hotkeys/spec/ingame.jsonmapped_hotkeys.ingame.session.flareactivate.desc msgctxt "hotkey metadata" @@ -2411,12 +2411,12 @@ #: gui/hotkeys/spec/ingame.jsonmapped_hotkeys.ingame.session.masstribute.desc msgctxt "hotkey metadata" msgid "Modifier to tribute bunch of resources." -msgstr "Facer tribuir una montonera de recursos." +msgstr "Facer tribuyir una montonera de recursos." #: gui/hotkeys/spec/ingame.jsonmapped_hotkeys.ingame.session.masstribute.name msgctxt "hotkey metadata" msgid "Mass tribute" -msgstr "Tribuir en masa" +msgstr "Tribuyir en masa" #: gui/hotkeys/spec/ingame.jsonmapped_hotkeys.ingame.session.move.desc msgctxt "hotkey metadata" @@ -2977,12 +2977,12 @@ #: gui/hotkeys/spec/ingamegui.jsonmapped_hotkeys.ingamegui.structree.desc msgctxt "hotkey metadata" msgid "Toggle the structure tree." -msgstr "Alternar l'árbole de construcciones." +msgstr "Alternar l'árbore de construcciones." #: gui/hotkeys/spec/ingamegui.jsonmapped_hotkeys.ingamegui.structree.name msgctxt "hotkey metadata" msgid "Toggle structure tree" -msgstr "Alternar l'árbole de construcciones" +msgstr "Alternar l'árbore de construcciones" #: gui/hotkeys/spec/ingamegui.jsonmapped_hotkeys.ingamegui.summary.desc msgctxt "hotkey metadata" @@ -3422,7 +3422,7 @@ #: gui/hotkeys/spec/selection.jsonmapped_hotkeys.selection.selection.offscreen.name msgctxt "hotkey metadata" msgid "Include offscreen" -msgstr "Incluir el fuera de campu" +msgstr "Incluyir el fuera de campu" #: gui/hotkeys/spec/selection.jsonmapped_hotkeys.selection.selection.remove.desc msgctxt "hotkey metadata" @@ -3462,7 +3462,7 @@ #: gui/loadgame/SavegameDeleter.js:39 gui/replaymenu/replay_menu.js:205 #, javascript-format msgid "Hold %(hotkey)s to skip the confirmation dialog while deleting." -msgstr "Caltén %(hotkey)s premíu/ida pa saltar el diálogu de confirmanza al desaniciar." +msgstr "Caltén %(hotkey)s primíu (-ida) pa saltar el diálogu de confirmanza al desaniciar." #: gui/loadgame/SavegameDeleter.js:52 gui/loadgame/SavegameWriter.js:45 #, javascript-format @@ -4745,7 +4745,7 @@ #: gui/options/options.json[6].options[19].list[0].tooltip msgid "" "New structures are aligned with nearby structures while pressing the hotkey." -msgstr "Les construcciones nueves allíniense con construcciones cercanes al premer l'atayu de tecláu." +msgstr "Les construcciones nueves allíniense con construcciones cercanes al primir l'atayu de tecláu." #: gui/options/options.json[6].options[19].list[1].label msgid "Hotkey to disable snapping" @@ -4755,7 +4755,7 @@ msgid "" "New structures are aligned with nearby structures unless the hotkey is " "pressed." -msgstr "Les construcciones nueves allíniense con construcciones cercanes sacante que premas l'atayu de tecláu." +msgstr "Les construcciones nueves allíniense con construcciones cercanes sacante que primas l'atayu de tecláu." #: gui/options/options.json[6].options[19].tooltip msgid "This option allows to align new structures with nearby structures." @@ -4939,7 +4939,7 @@ msgid "" "Learn how to play, start the tutorial, discover the technology trees, and " "the history behind the civilizations." -msgstr "Deprender a xugar, entamar el cursín, descubrir los árboles tecnolóxicos y la historia detrás de les civilizaciones." +msgstr "Deprender a xugar, entamar el cursín, descubrir los árbores tecnolóxicos y la historia detrás de les civilizaciones." #: gui/pregame/MainMenuItems.js:7 msgid "Manual" @@ -4961,7 +4961,7 @@ #: gui/reference/common/Buttons/StructreeButton.js:21 #: gui/reference/structree/structree.xml:(caption):20 msgid "Structure Tree" -msgstr "Árbole de construcciones" +msgstr "Árbore de construcciones" #: gui/pregame/MainMenuItems.js:28 #, javascript-format @@ -5401,7 +5401,7 @@ #: gui/reference/common/Buttons/StructreeButton.js:27 #, javascript-format msgid "%(hotkey)s: Switch to Structure Tree." -msgstr "%(hotkey)s: Cambiar a «Árbole de construcciones»." +msgstr "%(hotkey)s: Cambiar a «Árbore de construcciones»." #: gui/reference/common/Dropdowns/CivSelectDropdown.js:63 msgid "Civilization:" @@ -5473,7 +5473,7 @@ #: gui/reference/structree/StructreePage.js:85 #, javascript-format msgid "%(hotkey)s: Close Structure Tree." -msgstr "%(hotkey)s: Zarrar l'árbole de construcciones." +msgstr "%(hotkey)s: Zarrar l'árbore de construcciones." #: gui/reference/viewer/ViewerPage.js:172 #, javascript-format @@ -5645,7 +5645,7 @@ #: gui/replaymenu/replay_menu.xml:(caption):240 msgid "Rebuild Cache" -msgstr "Reconstruir Caxé" +msgstr "Reconstruyir Caxé" #: gui/replaymenu/replay_menu.xml:(caption):247 #: gui/summary/summary.xml:(caption):26 @@ -5686,7 +5686,7 @@ #: gui/replaymenu/replay_menu.xml:(tooltip):241 msgid "Rebuild the replay cache from scratch. Potentially slow!" -msgstr "Reconstruir el caxé de la repetición dende cero. ¡Pue entardar!" +msgstr "Reconstruyir el caxé de la repetición dende cero. ¡Pue tardar!" #: gui/splashscreen/splashscreen.txt:2 msgid "" @@ -5954,7 +5954,7 @@ #: gui/summary/summary.js:35 msgid "Constructed" -msgstr "Construíes" +msgstr "Construyíes" #: gui/summary/summary.js:40 msgid "Gathered" @@ -6333,7 +6333,7 @@ #: gui/text/tips/civic_centres.txt:4 msgid "Can be built in friendly and neutral territory." -msgstr "Pue construise en territoriu neutral y amigo." +msgstr "Pue construyise en territoriu neutral y amigo." #: gui/text/tips/civic_centres.txt:5 msgid "" @@ -6477,7 +6477,7 @@ msgid "" "Therefore select some units, press and hold the right mouse button, draw any" " line, then release the button." -msgstr "Pa ello esbilla delles unidaes y, premiendo'l botón derechu del mure, dibuxa una llinia, ya darréu suelta'l botón." +msgstr "Pa ello esbilla delles unidaes y, primiendo'l botón derechu del mure, dibuxa una llinia, ya darréu suelta'l botón." #: gui/text/tips/freehand_position.txt:4 msgid "Your units will now spread out on this line." @@ -6571,7 +6571,7 @@ #: gui/text/tips/meroe_pyramids.txt:2 msgid "Special structures available for the Kushites." -msgstr "Construcciones esclusives de los qesanos." +msgstr "Construcciones esclusives de los qosanos." #: gui/text/tips/meroe_pyramids.txt:3 msgid "" @@ -6651,7 +6651,7 @@ #: gui/text/tips/pikemen.txt:4 msgid "Available to: Kushites, Macedonians, Ptolemies, and Seleucids." -msgstr "Disponibles a los: qesanos, macedonios, ptolemaicos y seléucides" +msgstr "Disponibles a los: qosanos, macedonios, ptolemaicos y seléucides" #: gui/text/tips/quinquereme.txt:1 msgid "QUINQUEREME" @@ -6715,7 +6715,7 @@ msgid "" "Structures can be aligned by keeping the snap hotkey pressed during " "placement." -msgstr "Puedes alliniar les construcciones premiendo l'atayu d'alliniamientu al allugales." +msgstr "Puedes alliniar les construcciones primiendo l'atayu d'alliniadura al allugales." #: gui/text/tips/snapping.txt:3 msgid "Aligning structures allows to conserve space for future construction." @@ -6883,7 +6883,7 @@ msgid "" "Available to: Carthaginians, Kushites, Mauryas, Persians, Ptolemies, and " "Seleucids." -msgstr "Disponibles a los cartaxineses, qesanos, maurios, perses, ptolemaicos y seléucides." +msgstr "Disponibles a los cartaxineses, qosanos, maurios, perses, ptolemaicos y seléucides." #: gui/text/tips/whales.txt:1 msgid "WHALES" @@ -7073,7 +7073,7 @@ #: simulation/data/resources/wood.jsondescription msgid "Cut down from trees or groves." -msgstr "Llógrase de los árboles y mates." +msgstr "Llógrase de los árbores y mates." #. Translation: Word as used at the beginning of a sentence or as a single- #. word sentence. @@ -7095,7 +7095,7 @@ #: simulation/data/resources/wood.jsonsubtypes.tree msgctxt "firstWord" msgid "Tree" -msgstr "Árbole" +msgstr "Árbore" #. Translation: Word as used in the middle of a sentence (which may require #. using lowercase @@ -7103,4 +7103,4 @@ #: simulation/data/resources/wood.jsonsubtypes.tree msgctxt "withinSentence" msgid "Tree" -msgstr "árbole" +msgstr "árbore" Index: binaries/data/mods/public/l10n/ast.public-gui-userreport.po =================================================================== --- binaries/data/mods/public/l10n/ast.public-gui-userreport.po +++ binaries/data/mods/public/l10n/ast.public-gui-userreport.po @@ -1,16 +1,16 @@ # Translation template for 0 A.D. — Empires Ascendant. # Copyright (C) 2020 Wildfire Games -# This file is distributed under the same license as the 0 A.D. — Empires Ascendant -# project. +# This file is distributed under the same license as the 0 A.D. — Empires Ascendant project. +# # Translators: -# David Sowa , 2021 +# David Sowa , 2020 # msgid "" msgstr "" "Project-Id-Version: 0 A.D. — Empires Ascendant\n" -"POT-Creation-Date: 2020-11-28 10:01+0000\n" +"POT-Creation-Date: 2020-02-07 08:09+0000\n" "PO-Revision-Date: 2018-10-14 18:34+0000\n" -"Last-Translator: David Sowa , 2021\n" +"Last-Translator: David Sowa , 2020\n" "Language-Team: Asturian (https://www.transifex.com/wildfire-games/teams/17418/ast/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -119,7 +119,7 @@ msgstr "" " L'UserID permite a los desendolcadores cuntar cuántos xugadores de 0 " "A.D. empleguen un conxuntu específicu de hardware o software ensin dexa-yos " -"atribuir los datos a denguna persona." +"atribuyir los datos a denguna persona." #: gui/userreport/Terms_and_Conditions.txt:18 msgid "" Index: binaries/data/mods/public/l10n/ast.public-maps.po =================================================================== --- binaries/data/mods/public/l10n/ast.public-maps.po +++ binaries/data/mods/public/l10n/ast.public-maps.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: 0 A.D.\n" "POT-Creation-Date: 2021-06-14 07:08+0000\n" -"PO-Revision-Date: 2021-11-06 18:45+0000\n" +"PO-Revision-Date: 2021-11-05 03:13+0000\n" "Last-Translator: David Sowa \n" "Language-Team: Asturian (http://www.transifex.com/wildfire-games/0ad/language/ast/)\n" "MIME-Version: 1.0\n" @@ -102,7 +102,7 @@ "Each player starts deep in the forest.\n" "\n" "The Ardennes is a region of extensive forests, rolling hills and ridges formed within the Givetian Ardennes mountain range, primarily in modern day Belgium and Luxembourg. The region took its name from the ancient Silva, a vast forest in Roman times called Arduenna Silva." -msgstr "Cada xugador entama no fondero la viesca.\n\nLos sotambios forestales de L'Ardena, una fastera de monte que s'espurre principalmente ente Bélxica y Luxemburgu. El nome de la rexón remanez de la denomación galo-romana de la so silva, Arduenna." +msgstr "Cada xugador entama no fondero la viesca.\n\nLos sotambios arbolíos de L'Ardena, una fastera de monte que s'espurre principalmente ente Bélxica y Luxemburgu. El nome de la rexón remanez de la denomación galo-romana de la so silva, Arduenna." #: maps/random/ardennes_forest.jsonsettings.Name msgid "Ardennes Forest" @@ -112,7 +112,7 @@ msgid "" "A rugged land with small room for buildings with scarce wood. Represents the" " mountain range in the Northwest Africa." -msgstr "La sierra de l'África occidental septentrional, un terrén arispiu con pocu campu pa construcciones y poca madera." +msgstr "La sierra del septentrión occidental d'África, un terrén arispiu con pocu campu pa construcciones y poca madera." #: maps/random/atlas_mountains.jsonsettings.Name msgid "Atlas Mountains" @@ -272,11 +272,11 @@ " subject to numerous yet short-lived invasions. Ultimately consolidating " "power with Rhodes at their lead, these islands developed into great " "maritime, commercial and cultural centers. Will you achieve the same?" -msgstr "Asitiaes na entrada oriental del mar Exéu, les dolce islles principales de les Espórades meridianes tienen sufrío numberoses ocupaciones. Sicasí, con Rodes a la cabeza, llograron afitase y volviéronse un referente cultural, comercial y marítimu. ¿Vas algamar lo mesmo?" +msgstr "Asitiaes na entrada oriental del mar Exéu, les dolce islles principales de les Espórades meridionales tienen sufrío numberoses ocupaciones. Sicasí, con Rodes a la cabeza, llograron afitase y volviéronse un referente cultural, comercial y marítimu. ¿Vas algamar lo mesmo?" #: maps/random/dodecanese.jsonsettings.Name msgid "Dodecanese" -msgstr "Les Espórades meridianes" +msgstr "Les Espórades meridionales" #: maps/random/elephantine.jsonsettings.Description msgid "" @@ -286,7 +286,7 @@ "became an important way-station for the trade in ivory and other goods. It " "was considered to be the home of the god Khnum, guardian of the source of " "the Nile, and boasted an impressive temple complex." -msgstr "El castru d'Elefantina atópase na primera catarata del ríu Nilu y formaba la dixebra tradicional ente Qesa y Exiptu. Como llende ente los dos reinos, yera un llugar de pasu obligáu pal comerciu del marfil, y otros bienes. Creyíase que yera la morada del dios Khnum, guardia de les fontes del Nilu, y abellugaba un templu ablucante." +msgstr "El castru d'Elefantina atópase na primera catarata del ríu Nilu y formaba la dixebra tradicional ente Qos y Exiptu. Como llende ente los dos reinos, yera un llugar de pasu obligáu pal comerciu del marfil, y otros bienes. Creyíase que yera la morada del dios Khnum, guardia de les fontes del Nilu, y abellugaba un templu ablucante." #: maps/random/elephantine.jsonsettings.Name msgid "Elephantine" @@ -346,7 +346,7 @@ "making way for the semi-arid savannahs and small acacia forests dot the " "landscape. The area is rich in resources and the ever-present Nile brings " "life, but grave threats loom on the opposite riverbank." -msgstr "El corazón de Qesa, la «islla de Medevi» yera una gran península ente los ríos Nilu y Atbara, onde los ermos emprimen a camudar n'aranxales y les alcacies pueblen el terrén. La estaya ye ricu en recursos y el Nilu caltién la vida, mas escluquen amenaces na otra oriella." +msgstr "El corazón de Qos, la «islla de Medevi» yera una gran península ente los ríos Nilu y Atbara, onde los ermos emprimen a camudar n'aranxales y les alcacies pueblen el terrén. La estaya ye ricu en recursos y el Nilu caltién la vida, mas escluquen amenaces na otra oriella." #: maps/random/fields_of_meroe.jsonsettings.Name msgid "Fields of Meroë" @@ -450,7 +450,7 @@ "Each player starts in a coastal area between forested hills and the Sea. " "Inspired by the southern regions of the Caspian Sea known in Antiquity as " "Hyrcania." -msgstr "Cada xugador entama nuna faza mariñana arredolada de llombes forestales. Inspírase nes tierres meridianes del mar Caspiu que los antiguos nomaben Hircania." +msgstr "Cada xugador entama nuna faza mariñana arredolada de llombes arbolíes. Inspírase nes tierres meridionales del mar Caspiu que los antiguos nomaben Hircania." #: maps/random/hyrcanian_shores.jsonsettings.Name msgid "Hyrcanian Shores" @@ -462,7 +462,7 @@ "life-bringing rain which is already two months late. Due to the extended " "dryness and scorching heat, only the largest lake remains. The hardy trees " "which have survived the climate are spread out, yet not too scarce." -msgstr "La India central enantes de los monzones—una fastera suriona espera l'agua de vida qu'allancia yá dos meses. La duranza de la seca y la calisma tien fecho que tolos llagos, sacantes los pergrandes, secaren. Los árboles que siguen aguantando tán arralaos, anque non pocos." +msgstr "La India central enantes de los monzones—una fastera suriona espera l'agua de vida qu'allancia yá dos meses. La duranza de la seca y la calisma tien fecho que tolos llagos, sacantes los pergrandes, secaren. Los árbores que siguen aguantando tán arralaos, anque non pocos." #: maps/random/india.jsonsettings.Name msgid "India" @@ -495,7 +495,7 @@ "Lands”, the ancient religious capital of Napata lay in its shadow. This is " "where kings were made – and unmade! Abutting a rich floodplain downstream " "from the Fourth Cataract, this area became the breadbasket of ancient Kush." -msgstr "Los xugadores entamen cerca les veres vicioses del ríu Nilu acorraxando la plaza fuerte al pie de Nst-tAwy, el tronu les dos tierres. Tamién conocíu como'l monte puru o Dw-w’b, al aveséu de so queda la capital relixosa de Napata. Esti cotapu ye la morada meridiana d'Amón y, según tanto los qesanos como los exipcios, el berciu del home. Equí ñacieron—y morrieron—reis. Asitiada cabo un porréu agua abaxo de la cuarta catarata, esti sitiu yera l'horru de Qesa." +msgstr "Los xugadores entamen cerca les veres vicioses del ríu Nilu acorraxando la plaza fuerte al pie de Nst-tAwy, el tronu les dos tierres. Tamién conocíu como'l monte puru o Dw-w’b, al aveséu de so queda la capital relixosa de Napata. Esti cotapu ye la morada meridional d'Amón y, según tanto los qosanos como los exipcios, el berciu del home. Equí ñacieron—y morrieron—reis. Asitiada cabo un porréu agua abaxo de la cuarta catarata, esti sitiu yera l'horru de Qos." #: maps/random/jebel_barkal.jsonsettings.Name msgid "Jebel Barkal" @@ -514,7 +514,7 @@ msgid "" "Players start in the southwestern shores of India between a sea and " "mountains." -msgstr "Los xugadores entamen na mariña occidental meridiana de la India, ente monte y mar." +msgstr "Los xugadores entamen al meudía occidental de la India, ente monte y mar." #: maps/random/kerala.jsonsettings.Name msgid "Kerala" @@ -568,7 +568,7 @@ "place to live, but the control of this ancient corridor was vital for any " "power seeking to control the lucrative trade routes on the Nile and affords " "access to the rich goldfields of the Nubian desert." -msgstr "Coñocida en mundu griegu como'l Triakontáschoinos, Wawat yera la tierra ente les catarates primera y segunda del Nilu y formaba la dixebra tradicional ente Qesa y Exiptu. La calisma del ermu, lo empruno de les valles y l'altor de los cairones nun la faen nada atopadiza. Sicasí, esti corredor antiguu, que da entrada a les xacees d'oru del desiertu nubiu, yera precisu pa dominar les víes comerciales del Nilu." +msgstr "Coñocida en mundu griegu como'l Triakontáschoinos, Wawat yera la tierra ente les catarates primera y segunda del Nilu y formaba la dixebra tradicional ente Qos y Exiptu. La calisma del ermu, lo empruno de les valles y l'altor de los cairones nun la faen nada atopadiza. Sicasí, esti corredor antiguu, que da entrada a les xacees d'oru del desiertu nubiu, yera precisu pa dominar les víes comerciales del Nilu." #: maps/random/lower_nubia.jsonsettings.Name msgid "Lower Nubia" @@ -594,7 +594,7 @@ "founded, later to become the capital of the great Byzantine Empire under the" " new name of Constantinople. Players start on fertile land with adequate " "resources." -msgstr "La Propóntida (mar de Mármara) xunía'l Pontu Euxín (mar Prieta) al Exéu y xebraba Asia Menor y Tracia. Al mediudía occidental quedaba l'Helespontu (los Dardanelos) y a la entrada de so tuviera la urbe d'Iliu (Troya). Al septentrión oriental quedaba'l Bósporu Traciu (el Bósforu) u tiempu dempués se fundaría Bizanciu, destináu a encabezar el gran Imperiu Bizantín, magar rebautizáu como Constantinopla. Los xugadores entamen en tierra granible con recursos acondaos." +msgstr "La Propóntida (mar de Mármara) xunía'l Pontu Euxín (mar Prieta) al Exéu y xebraba Asia Menor y Tracia. Al meudía occidental quedaba l'Helespontu (los Dardanelos) y a la entrada de so tuviera la urbe d'Iliu (Troya). Al septentrión oriental quedaba'l Bósporu Traciu (el Bósforu) u tiempu dempués se fundaría Bizanciu, destináu a encabezar el gran Imperiu Bizantín, magar rebautizáu como Constantinopla. Los xugadores entamen en tierra granible con recursos acondaos." #: maps/random/marmara.jsonsettings.Name msgid "Marmara" @@ -612,7 +612,7 @@ "Syria, on the south by Libya and Mauritania, and on the west by Iberia. The " "name Mediterranean is derived from Latin, but the Romans themselves " "preferred the term 'Mare Internum' or even 'Mare Nostrum'." -msgstr "El Mediterraneu, llar de los exipcios, fenicios, griegos y, más sero, los romanos, que refinaron lo mesopotámico y ficieron de la mariña mediterránea'l corazón científicu ya cultural de l'antigüedá, y asina punxeron les bases al mundiu d'anguaño. El Mediterraneu ta cuasi zarráu de tierra: al septentrión pola Galia tresalpina, Italia, Grecia y Anatolia, al oriente por Siria, al mediudía por Libia y Mauritania ya al occidente por Iberia. La pallabra Mediterraneu vien del llatín, pero a los romanos prestáben-ys más los llamatos «Mare Internum» y «Mare Nostrum»." +msgstr "El Mediterraneu, llar de los exipcios, fenicios, griegos y, más sero, los romanos, que refinaron lo mesopotámico y ficieron de la mariña mediterránea'l corazón científicu y cultural de l'antigüedá, y asina punxeron les bases al mundiu d'anguaño. El Mediterraneu ta cuasi zarráu de tierra: Europa a septentrión, el llevante a oriente, África a meudía y les columnes d'Hércules a occidente. La pallabra Mediterraneu vien del llatín, pero a los romanos prestáben-yos más los llamatos «Mare Internum» y «Mare Nostrum»." #: maps/random/mediterranean.jsonsettings.Name msgid "Mediterranean" @@ -634,7 +634,7 @@ "A jumbled maze of cliffs, canyons, and rugged terrain with an oasis in the center\n" "\n" "Cappadocia is a historical region in Central Anatolia. In the time of Herodotus, the Cappadocians were reported as occupying the whole region from Mount Taurus to the vicinity of the the Black Sea. Cappadocia, in this sense, was bounded in the south by the chain of the Taurus Mountains that separate it from Cilicia, to the east by the upper Euphrates and the Armenian Highland, to the north by Pontus, and to the west by Lycaonia and eastern Galatia. Cappadocia lies in eastern Anatolia. The relief consists of a high plateau over 1000 m in altitude that is pierced by volcanic peaks. Due to its inland location and high altitude, Cappadocia has a markedly continental climate, with hot dry summers and cold snowy winters. Rainfall is sparse and the region is largely semi-arid." -msgstr "Un llaberintu d'arribayeros, escoyos y escares con un oasis ente medies.\n\nCapadocia yera una rexón de l'Anatolia oriental. En tiempos d'Heródotu, dicíase de los capadocios qu'ocupaben tolo que quedaba ente'l monte'l Tauru y el Pontu Euxín. D'esta miente, Capadocia llendaba al mediudía col monte'l Tauru, que la xebraba de Cilicia, al oriente col Éufrates y los altos d'Armenia, al occidente con Galacia y Licaonia y al septentrión col Pontu. El terrén confórmalu un pandu de más de 1000 m d'altor, travesáu por picos volcánicos. Pola mor del so allugamientu y altor, el tiempu de Capadocia ye marcadamente continental, con branos calientes y ensuchos y hibiernos fríos y nevaos. L'agua ye escaso y la fastera ye mayormente grebia." +msgstr "Un llaberintu d'arribayeros, escoyos y escares con un oasis ente medies.\n\nCapadocia yera una rexón de l'Anatolia oriental. En tiempos d'Heródotu, dicíase de los capadocios qu'ocupaben tolo que quedaba ente'l monte'l Tauru y el Pontu Euxín. D'esta miente, Capadocia llendaba a meudía col monte'l Tauru, que la xebraba de Cilicia, a oriente col Éufrates y los altos d'Armenia, a occidente con Galacia y Licaonia y a septentrión col Pontu. El terrén confórmalu un pandu de más de 1000 m d'altor, travesáu por picos volcánicos. Pola mor del so allugamientu y altor, el tiempu de Capadocia ye marcadamente continental, con branos calientes y ensuchos y hibiernos fríos y nevaos. L'agua ye escaso y la fastera ye mayormente grebia." #: maps/random/neareastern_badlands.jsonsettings.Name msgid "Neareastern Badlands" @@ -685,7 +685,7 @@ "A dry central plateau rich in minerals surrounded by rocky hills\n" "\n" "The southern parts of Zagros Mountains were the heart of the Persian empires and population. Although the altitude is high, the southern parts are drier that the northern Zagros, leading to a semi-arid climate. Still there are some sparse oak forests in the higher grounds." -msgstr "Una granda arredolada de sierros y fornida de minerales.\n\nLes fasteres meridianes de los Zagros formaben el cogollu de Persia. Inda qu'altes, son más seques que les septentrionales, conque'l tiempu ye más bien ensucho que llento. Eso sí, nun ye ralo ver daqué carbayéu pelos altos." +msgstr "Una granda arredolada de sierros y fornida de minerales.\n\nLes fasteres meridionales de los Zagros formaben el cogollu de Persia. Inda qu'altes, son más seques que les septentrionales, conque'l tiempu ye más bien ensucho que llento. Eso sí, nun ye ralo ver daqué carbayéu pelos altos." #: maps/random/persian_highlands.jsonsettings.Name msgid "Persian Highlands" @@ -728,7 +728,7 @@ "undermine his economy and cause his downfall. [color=\"red\"]Warning: It is " "inadvisable to disable treasures, since there is no gatherable wood. Not " "recommended for inexperienced players.[/color]" -msgstr "Los xugadores entamen nel torbeyu d'una paramera polar. L'agua xelono de la mar averbena de pexe y ballenes y el terrén vidroso ta llarao de morses y llobos. Estos caberos, esgalazaos polo duro del clima y atrayíos pol arrecendor a cacia, vienen multiplicándose como pa meter mieu. Lo prudente será caltenelos a raya, nun seya que te coman la figura. [color=\"red\"]Avisu: Nun ye aconseyable desactivar les ayalgues, darréu que nun hai árboles que cortar. Nun s'encamienta a xugadores inespertos.[/color]" +msgstr "Los xugadores entamen nel torbeyu d'una paramera polar. L'agua xelono de la mar averbena de pexe y ballenes y el terrén vidroso ta llarao de morses y llobos. Estos caberos, esgalazaos polo duro del clima y atrayíos pol arrecendor a cacia, vienen multiplicándose como pa meter mieu. Lo prudente será caltenelos a raya, nun seya que te coman la figura. [color=\"red\"]Avisu: Nun ye aconseyable desactivar les ayalgues, darréu que nun hai árbores que cortar. Nun s'encamienta a xugadores inespertos.[/color]" #: maps/random/polar_sea.jsonsettings.Name msgid "Polar Sea" @@ -936,7 +936,7 @@ "to the south. The sunlight floods through the open canopy and lights the " "grassland between the trees, where herds of zebras, wildebeest, giraffes and" " elephants roam." -msgstr "La transición ente'l Sáḥara al septentrión y les viesques ecuatoriales al mediudía. La raxón del sol caltria les cogolles de los árboles y alluma'l prau, al empar que les cebres, ñus, xirafes ya elefantes que per ende anden." +msgstr "La transición ente'l Sáḥara al septentrión y les viesques ecuatoriales al meudía. La raxón del sol caltria les cogolles de los árbores y alluma'l prau, al empar que les cebres, ñus, xirafes ya elefantes que per ende anden." #: maps/random/rmbiome/generic/savanna.jsonDescription.Title msgctxt "biome definition" @@ -949,7 +949,7 @@ "Wide grasslands stretching to the horizon, without any trees blocking the " "view. The Steppe is home to large herds of wild horses, which graze " "peacefully on the empty land, but flee quickly if you try to catch them." -msgstr "Praderes tan estenses como pa perdese nel horizonte, y ensin árboles qu'emparamenten la vista. La estepa puéblenla corros de caballos monteses, que pacen tranquilos nes llanures, sacante que les caces." +msgstr "Praderes tan estenses como pa perdese nel horizonte, y ensin árbores qu'emparamenten la vista. La estepa puéblenla corros de caballos monteses, que pacen tranquilos nes llanures, sacante que les caces." #: maps/random/rmbiome/generic/steppe.jsonDescription.Title msgctxt "biome definition" @@ -1025,7 +1025,7 @@ msgid "" "An arid, hostile land. The blistering heat has baked the ground to a sickly " "brown and the remaining trees struggle for survival." -msgstr "Una fastera ensucha y contraria. El calorón tien cocío la tierra y los árboles breguen por sobrevivir." +msgstr "Una fastera ensucha y contraria. El calorón tien cocío la tierra y los árbores breguen por sobrevivir." #: maps/random/rmbiome/persian_highlands/summer.jsonDescription.Title msgctxt "biome definition" @@ -1657,7 +1657,7 @@ #: maps/scenarios/gorge.xml:Description:26 msgid "A riparian gorge meanders its way through the South lands of Gaul." -msgstr "Una cabuerca riberana colobrexa peles tierres al meudía de la Galia." +msgstr "Una cabuerca riberana culebrexa peles tierres al meudía de la Galia." #: maps/scenarios/gorge.xml:Name:26 msgid "Gorge" @@ -1829,7 +1829,7 @@ "Situated Southside of the Atlas mountain range in North Africa.\n" "\n" "A somewhat open map with an abundance of food and mineral resources, while wood is somewhat scarce." -msgstr "Asitiáu al mediudía del cordal del Atles na África septentrional.\n\nUn mapa daqué abiertu con muncha doyura de comida ya recursos minerales, magar qu'escasín de madera. " +msgstr "Asitiáu al meudía del cordal del Atles na África septentrional.\n\nUn mapa daqué abiertu con muncha doyura de comida ya recursos minerales, magar qu'escasín de madera. " #: maps/scenarios/sahel.xml:PlayerData[0].Name:38 msgid "Aulus Manlius Capitolinus" @@ -1925,15 +1925,15 @@ #: maps/scenarios/sandbox_kushites.xml:Description:39 msgid "Play the Kushites faction in a non-threatening sandbox scenario." -msgstr "Xuega cola facción qesana nun escenariu pacetible, ensin oxetivos nin arremielgos." +msgstr "Xuega cola facción qosana nun escenariu pacetible, ensin oxetivos nin arremielgos." #: maps/scenarios/sandbox_kushites.xml:Name:39 msgid "Sandbox - The Kushites" -msgstr "Probadoriu - los qesanos" +msgstr "Probadoriu - los qosanos" #: maps/scenarios/sandbox_kushites.xml:PlayerData[1].Name:39 msgid "Kushites" -msgstr "Qesanos" +msgstr "Qosanos" #: maps/scenarios/sandbox_kushites.xml:PlayerData[2].Name:39 msgid "Egyptians" @@ -2543,7 +2543,7 @@ " and thick forests make for a very dynamic and fast-paced 3-player map with " "lots of potential for skirmishing and guerilla warfare as well as tough " "defensive fighting or aggressive maneuvers." -msgstr "Una islla forestal y xabaz, enllena de mates, oru ya misteriu. Los montes, mares ya viesques resulten nun mapa de 3 xugadores rápidu y afechiscu p'amarradielles, guerrilles, combate defensivu o maniobres agresives." +msgstr "Una islla selvaxe y arbolada, enllena de mates, oru ya misteriu. Los montes, mares ya viesques resulten nun mapa de 3 xugadores rápidu y afechiscu p'amarradielles, guerrilles, combate defensivu o maniobres agresives." #: maps/skirmishes/barcania_3p.xml:Name:26 msgid "Barcania (3)" @@ -2564,7 +2564,7 @@ msgid "" "South of the Sahara, East of the Nile, lies a semi-arid region today known " "as the Butana Steppe." -msgstr "Al mediudía del Sáḥara, al oriente del Nilu, esiste una rexón semi-greba qu'anguaño se conoz como les estepes de Butana." +msgstr "Al meudía del Sáḥara, al oriente del Nilu, esiste una rexón semi-greba qu'anguaño se conoz como les estepes de Butana." #: maps/skirmishes/butana_steppe_2p.xml:Name:39 msgid "Island of Meroë (2)" @@ -2711,7 +2711,7 @@ "- Fayyum: crocodile shrine, nile dam\n" "- Eastern desert: mount Sinai, deep Wadi, Red Sea reefs\n" "- Western desert: Oasis Charga and Siwa, Qattara Depression\n" -msgstr "¡Llucha polo que resta del antiguu Exiptu!\n\nLos xugadores entamen con un exércitu pequeñu nuna ciudá dafechamente desendolcada, caúna con estramaos pros ya contres. Repara, ¡hai 7 fuertes ya bandíos a la chisba!\n\nYe'l sieglu caberu primero de 0 A.D. Exiptu ta estremáu ente helenistes (Alexandría, representada polos seléucides) ya tradicionalistes (Menfis, representada polos ptolemaicos). Tebes, nel clima al mediudía del ríu Nilu, yá ta en manes de los qesanos. Nel monte verde occidental septentrional, onde la ciudá mediterránea de Cirene, los romanos tán entamando una invasión. Del ermu oriental ya la península del Sinaí, lo mesmo que d'Amoniaca, hai enemigos (representaos polos perses) avanzando. Los habitantes d'Oasis Mayor (representaos por Cartagu) nel ermu meridianu mueven por una estayuca tamién.\nAllugamientos:\n- Alexandría: biblioteca, puertu\n- Menfis: necrópolis, pirámides, santuariu d'Apis\n- Tebes: distritu'l templu, Valle los Reis\n- Cirene: carba mediterráneo, olivares\n- Arsínoe: santuariu'l crocodilu, presa'l Nilu\n- L'ermu oriental: monte Sinaí, gollones, petones de la mar Bermeya\n- L'ermu occidental: Oasis Mayor, oasis d'Amoniaca, fondalada d'Amoniaca\n" +msgstr "¡Llucha polo que resta del antiguu Exiptu!\n\nLos xugadores entamen con un exércitu pequeñu nuna ciudá dafechamente desendolcada, caúna con estramaos pros ya contres. Repara, ¡hai 7 fuertes ya bandíos a la chisba!\n\nYe'l sieglu caberu primero de 0 A.D. Exiptu ta estremáu ente helenistes (Alexandría, representada polos seléucides) ya tradicionalistes (Menfis, representada polos ptolemaicos). Tebes, nel clima al meudía del ríu Nilu, yá ta en manes de los qosanos. Nel monte verde del septentrión occidental, onde la ciudá mediterránea de Cirene, los romanos tán entamando una invasión. Del ermu oriental ya la península del Sinaí, lo mesmo que d'Amoniaca, hai enemigos (representaos polos perses) avanzando. Los habitantes d'Oasis Mayor (representaos por Cartagu) nel ermu meridional mueven por una estayuca tamién.\nAllugamientos:\n- Alexandría: biblioteca, puertu\n- Menfis: necrópolis, pirámides, santuariu d'Apis\n- Tebes: distritu'l templu, Valle los Reis\n- Cirene: carba mediterráneo, olivares\n- Arsínoe: santuariu'l crocodilu, presa'l Nilu\n- L'ermu oriental: monte Sinaí, gollones, petones de la mar Bermeya\n- L'ermu occidental: Oasis Mayor, oasis d'Amoniaca, fondalada d'Amoniaca\n" #: maps/skirmishes/egypt_3pv3p.xml:Name:39 msgid "Egypt (3v3)" @@ -2898,7 +2898,7 @@ "Fairly open-wooded and basically flat. Plenty of building room. Well balanced resources.\n" "\n" "Civ Territories are divided by main river and tributaries (with necessary shallows for crossings)." -msgstr "El mapa permédialu un ríu que cuerre d'oriente a occidente con dalgunos baxos\n\nDaqué abiertu y arbolíu ya básicamente llanu. Abondu espaciu pa construcciones. Recursos bien equilibraos.\n\nLos territorios de les civilizaciones estrémenlos el ríu principal ya los sos afluentes (coles vayaes afayadices pa crucialos)." +msgstr "El mapa permédialu un ríu que cuerre d'oriente a occidente con dalgunos baxos\n\nDaqué abiertu y arboláu ya básicamente llanu. Abondu espaciu pa construcciones. Recursos bien equilibraos.\n\nLos territorios de les civilizaciones estrémenlos el ríu principal ya los sos afluentes (coles vayaes afayadices pa crucialos)." #: maps/skirmishes/lorraine_plain_2p.xml:Name:39 msgid "Lorraine Plain (2)" @@ -2985,7 +2985,7 @@ "Stranded in the cold North, 2 players fight for supremacy over the Island. " "One player starts in the Mountains to the West, the other player starts near" " the Bay in the East." -msgstr "Tiraos al fríu del boreal, 2 xugadores amárrense pola islla. Un xugador apienza sobre los Montes occidentales, l'otru apienza cabo la Badea oriental." +msgstr "Tiraos al fríu del septentrión, 2 xugadores amárrense pola islla. Un xugador apienza sobre los Montes occidentales, l'otru apienza cabo la Badea oriental." #: maps/skirmishes/northern_island_2p.xml:Name:39 msgid "Northern Island (2)" @@ -3038,7 +3038,7 @@ "Northwest India. Nearby rivers swell with monsoon rains, allowing for only a few treacherous crossings.\n" "\n" "The rivers are heavily forested, while grasslands carpet the surrounding countryside. Watch out for Tigers in the tall grass! Asian elephants are also a common sight." -msgstr "La india occidental septentrional. Crecíos col agua de los monzones, los ríos qu'hai cerca van de baramonte, dexando namái unos pocos vaos traicioniegos.\n\nHai mui bien d'arbolíu a les orielles de los ríos, pero la contorna ta cubierta de pradería. ¡Curiáu colos tigres na pación! Tamién ye corriente ver daqué elefante asiáticu." +msgstr "La india del septentrión occidental. Crecíos col agua de los monzones, los ríos qu'hai cerca van de baramonte, dexando namái unos pocos vaos traicioniegos.\n\nLos ríos tán bien arbolaos, pero la pradería domina'l paisaxe. ¡Curiáu colos tigres na pación! Los elefantes asiáticos tamién son corrientes." #: maps/skirmishes/punjab_2p.xml:Name:39 msgid "Punjab (2)" @@ -3065,7 +3065,7 @@ "Situated Southside of the Atlas mountain range in North Africa.\n" "\n" "A somewhat open map with an abundance of animals and mineral resources, while wood is scarce." -msgstr "Asitiáu al mediudía del cordal del Atles na África septentrional.\n\nUn mapa daqué abiertu con muncha doyura de comida ya recursos minerales, magar qu'escasín de madera. " +msgstr "Asitiáu al meudía del cordal del Atles na África septentrional.\n\nUn mapa daqué abiertu con muncha doyura de comida ya recursos minerales, magar qu'escasín de madera. " #: maps/skirmishes/sahel_4p.xml:Name:38 msgid "Sahel (4)" @@ -3097,7 +3097,7 @@ "The steppes of central Asia. A wide open grassland with few trees (about 90%" " fewer trees than on a temperate or Aegean map). Animal life is plentiful " "though, so take advantage of the hunting available. " -msgstr "Les estepes de l'Asia central. Una pradería abierta con perpocos árboles (aprosimao'l décimu de los árboles de la faza templada o exea). Sicasí, son abondoses en vida animal y, poro, en cacia." +msgstr "Les estepes de l'Asia central. Una pradería abierta con perpocos árbores (aprosimao'l décimu de los árbores de la faza templada o exea). Sicasí, son abondoses en vida animal y, poro, en cacia." #: maps/skirmishes/scythia_4p.xml:Name:39 msgid "Scythian Steppes (4)" Index: binaries/data/mods/public/l10n/ast.public-simulation-auras.po =================================================================== --- binaries/data/mods/public/l10n/ast.public-simulation-auras.po +++ binaries/data/mods/public/l10n/ast.public-simulation-auras.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: 0 A.D.\n" "POT-Creation-Date: 2021-06-07 07:53+0000\n" -"PO-Revision-Date: 2021-11-06 18:30+0000\n" +"PO-Revision-Date: 2021-11-05 01:58+0000\n" "Last-Translator: David Sowa \n" "Language-Team: Asturian (http://www.transifex.com/wildfire-games/0ad/language/ast/)\n" "MIME-Version: 1.0\n" @@ -353,7 +353,7 @@ msgid "" "Ruling with full power in the Meroë Empire and also playing a significant role in the Meroitic religion, Shanakdakheto represented the might of Kush, something not to be taken lightly.\n" "Enemy Female Citizens −15% gather speed." -msgstr "monarca absoluta del Imperiu de Medevi y figura importante na relixón medevina, Sánac-Daḥeto encarnaba'l poderíu de Qesa, algo digno de reverencia.\nCives enemigues: velocidá de llogru −15%." +msgstr "monarca absoluta del Imperiu de Medevi y figura importante na relixón medevina, Sánac-Daḥeto encarnaba'l poderíu de Qos, algo digno de reverencia.\nCives enemigues: velocidá de llogru −15%." #: simulation/data/auras/units/catafalques/kush_catafalque_1.jsonauraName msgid "Earliest Nubian Queen" @@ -363,7 +363,7 @@ msgid "" "As in all cultures, religion played a significant part in Kush. Shanakdakheto had the temple built around 160 BC as a symbol of the advancedness of Meroë.\n" "Temples +1 garrison heal rate." -msgstr "como en toa cultura, en Qesa la relixón xugaba un papel importante. Alredor de 160 a.C., Sánac-Daḥeto fezo que'l templu se llevantare como signu de la prosperidá de Medevi.\nTemplos: ritmu de sanamientu +1." +msgstr "como en toa cultura, en Qos la relixón xugaba un papel importante. Alredor de 160 a.C., Sánac-Daḥeto fezo que'l templu se llevantare como signu de la prosperidá de Medevi.\nTemplos: ritmu de sanamientu +1." #: simulation/data/auras/units/catafalques/kush_catafalque_2.jsonauraName msgid "Temple at Naqa" @@ -393,7 +393,7 @@ msgid "" "Bindusara is said to have conquered lands to the south of the empire.\n" "Soldiers +15% capture attack strength." -msgstr "dizse que Bindusara conquistó tierres al mediudía del imperiu.\nMílites: captura +15%." +msgstr "dizse que Bindusara conquistó tierres al meudía del imperiu.\nMílites: captura +15%." #: simulation/data/auras/units/catafalques/maur_catafalque_2.jsonauraName msgid "Vamba Moriyar" @@ -729,11 +729,11 @@ #: simulation/data/auras/units/heroes/kush_hero_nastasen_1.jsonauraName msgid "Savior of Kush" -msgstr "Salvador de Qesa" +msgstr "Salvador de Qos" #: simulation/data/auras/units/heroes/kush_hero_nastasen_2.jsonauraDescription msgid "Kushite Triremes −50 wood and metal cost." -msgstr "−50 al costu en madera y metal \\[de trirremes qesanes]." +msgstr "−50 al costu en madera y metal \\[de trirremes qosanes]." #: simulation/data/auras/units/heroes/kush_hero_nastasen_2.jsonauraName msgid "Gift of Warships" Index: binaries/data/mods/public/l10n/ast.public-simulation-other.po =================================================================== --- binaries/data/mods/public/l10n/ast.public-simulation-other.po +++ binaries/data/mods/public/l10n/ast.public-simulation-other.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: 0 A.D.\n" "POT-Creation-Date: 2021-06-14 07:08+0000\n" -"PO-Revision-Date: 2021-11-06 18:50+0000\n" +"PO-Revision-Date: 2021-11-03 04:34+0000\n" "Last-Translator: David Sowa \n" "Language-Team: Asturian (http://www.transifex.com/wildfire-games/0ad/language/ast/)\n" "MIME-Version: 1.0\n" @@ -229,7 +229,7 @@ msgid "" "%(_player_)s, you must send me a tribute of %(_amount_)s %(_resource_)s " "before I accept an alliance with you." -msgstr "%(_player_)s, tienes que me tribuir %(_amount_)s de %(_resource_)s primero que yo acomuño contigo." +msgstr "%(_player_)s, tienes que me tribuyir %(_amount_)s de %(_resource_)s primero que yo acomuño contigo." #: simulation/ai/petra/chatHelper.js:82 #, javascript-format @@ -309,7 +309,7 @@ msgid "" "%(_player_)s, I will not accept your neutrality request unless you tribute " "me %(_amount_)s %(_resource_)s soon." -msgstr "Á %(_player_)s, mentanto nun entaínes a tribuime %(_amount_)s de %(_resource_)s, nun acepto la propuesta de neutralidá." +msgstr "Á %(_player_)s, mentanto nun entaínes a tribuyime %(_amount_)s de %(_resource_)s, nun acepto la propuesta de neutralidá." #: simulation/ai/petra/chatHelper.js:116 #, javascript-format @@ -369,22 +369,22 @@ #: simulation/components/BuildRestrictions.js:91 #, javascript-format msgid "%(name)s cannot be built due to unknown error" -msgstr "Esto nun pue construise por cuenta d'un fallu desconocíu" +msgstr "Esto nun pue construyise por cuenta d'un fallu desconocíu" #: simulation/components/BuildRestrictions.js:115 #, javascript-format msgid "%(name)s cannot be built in unexplored area" -msgstr "Esto nun pue construise nuna fastera non esplorada" +msgstr "Esto nun pue construyise nuna fastera non esplorada" #: simulation/components/BuildRestrictions.js:163 #, javascript-format msgid "%(name)s cannot be built on another building or resource" -msgstr "Esto nun pue construise enriba d'un recursu o construcción" +msgstr "Esto nun pue construyise enriba d'un recursu o construcción" #: simulation/components/BuildRestrictions.js:167 #, javascript-format msgid "%(name)s cannot be built on invalid terrain" -msgstr "Esto nun pue construise en terrén non válido." +msgstr "Esto nun pue construyise en terrén non válido." #. Translation: territoryType being displayed in a translated sentence in the #. form: "House @@ -439,12 +439,12 @@ msgid "" "%(name)s cannot be built in %(territoryType)s territory. Valid territories: " "%(validTerritories)s" -msgstr "Esto nun pue construise en campu %(territoryType)s. Territorios válidos: %(validTerritories)s" +msgstr "Esto nun pue construyise en campu %(territoryType)s. Territorios válidos: %(validTerritories)s" #: simulation/components/BuildRestrictions.js:234 #, javascript-format msgid "%(name)s must be built on a valid shoreline" -msgstr "Esto ha construise nuna riba válida." +msgstr "Esto ha construyise nuna riba válida." #: simulation/components/BuildRestrictions.js:261 #, javascript-format Index: binaries/data/mods/public/l10n/ast.public-simulation-technologies.po =================================================================== --- binaries/data/mods/public/l10n/ast.public-simulation-technologies.po +++ binaries/data/mods/public/l10n/ast.public-simulation-technologies.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: 0 A.D.\n" "POT-Creation-Date: 2021-08-30 07:08+0000\n" -"PO-Revision-Date: 2021-11-06 18:49+0000\n" +"PO-Revision-Date: 2021-11-05 03:06+0000\n" "Last-Translator: David Sowa \n" "Language-Team: Asturian (http://www.transifex.com/wildfire-games/0ad/language/ast/)\n" "MIME-Version: 1.0\n" @@ -127,7 +127,7 @@ msgid "" "The Indian, Iranian, and Kushite peoples had a tradition of fine archery and" " a penchant for using massed archers in battle." -msgstr "L'arcu tenía gran raigañu ente los qesanos, indios ya iraninos, que solíen emplegar ensames d'arqueros na batalla." +msgstr "L'arcu tenía gran raigañu ente los qosanos, indios ya iraninos, que solíen emplegar ensames d'arqueros na batalla." #: simulation/data/technologies/archery_tradition.jsongenericName msgid "Archery Tradition" @@ -548,7 +548,7 @@ #: simulation/data/technologies/gather_lumbering_sharpaxes.jsondescription #: simulation/data/technologies/gather_lumbering_strongeraxes.jsondescription msgid "Increases wood gathering rates for trees." -msgstr "Entaína la corta d'árboles." +msgstr "Entaína la corta d'árbores." #: simulation/data/technologies/gather_lumbering_ironaxes.jsongenericName msgid "Iron Axe Heads" @@ -843,7 +843,7 @@ "Themistocles and extended 6 km from the city to the port of Piraeus. This " "secured the city's sea supply routes and prevented an enemy from starving " "out the city during a siege." -msgstr "Construíes por aciu de Temístocles, les cerques llongues d'Atenes espurríense 6 km de la ciudá al puertu'l Piréu, lo qu'aseguraba la comunicación cola mariña, y poro les víes marítimes, en casu d'asediu." +msgstr "Construyíes por aciu de Temístocles, les cerques llongues d'Atenes espurríense 6 km de la ciudá al puertu'l Piréu, lo qu'aseguraba la comunicación cola mariña, y poro les víes marítimes, en casu d'asediu." #: simulation/data/technologies/long_walls.jsongenericName msgid "Athenian Long Walls" Index: binaries/data/mods/public/l10n/ast.public-templates-buildings.po =================================================================== --- binaries/data/mods/public/l10n/ast.public-templates-buildings.po +++ binaries/data/mods/public/l10n/ast.public-templates-buildings.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: 0 A.D.\n" "POT-Creation-Date: 2021-10-29 07:08+0000\n" -"PO-Revision-Date: 2021-11-07 18:32+0000\n" +"PO-Revision-Date: 2021-11-05 01:52+0000\n" "Last-Translator: David Sowa \n" "Language-Team: Asturian (http://www.transifex.com/wildfire-games/0ad/language/ast/)\n" "MIME-Version: 1.0\n" @@ -400,7 +400,7 @@ #: simulation/templates/structures/cart/apartment.xml:23 msgid "Apartment Building" -msgstr "Casa de vivienda" +msgstr "Vivienda" #: simulation/templates/structures/cart/apartment.xml:24 #: simulation/templates/structures/cart/house.xml:8 @@ -514,7 +514,7 @@ #: simulation/templates/structures/cart/super_dock.xml:43 msgid "Shipyard" -msgstr "Cotón" +msgstr "Estelleru naval" #: simulation/templates/structures/cart/temple.xml:9 msgid "Maqdaš" @@ -1096,15 +1096,15 @@ #: simulation/templates/structures/palisades_spike_angle.xml:17 msgid "Angle Spike" -msgstr "Puya angular" +msgstr "Puga angular" #: simulation/templates/structures/palisades_spikes_small.xml:17 msgid "Small Spikes" -msgstr "Puyines" +msgstr "Puguines" #: simulation/templates/structures/palisades_spikes_tall.xml:17 msgid "Tall Spikes" -msgstr "Puyones" +msgstr "Pugones" #: simulation/templates/structures/palisades_watchtower.xml:14 msgid "Watchtower" @@ -1313,7 +1313,7 @@ #: simulation/templates/structures/rome/arsenal.xml:5 msgid "Ballistārium" -msgstr "Officīna" +msgstr "Ballistārium" #: simulation/templates/structures/rome/barracks.xml:12 msgid "Castrum" @@ -1371,11 +1371,11 @@ #: simulation/templates/structures/rome/siege_wall_gate.xml:22 msgid "Siege Wall Gate" -msgstr "Puerta vallar" +msgstr "Puerta mural" #: simulation/templates/structures/rome/siege_wall_gate.xml:23 msgid "Porta Circummūnītiōnis" -msgstr "Porta Circumvallātiōnis" +msgstr "Porta Circummūnītiōnis" #: simulation/templates/structures/rome/siege_wall_gate.xml:24 #: simulation/templates/structures/rome/siege_wall_long.xml:25 @@ -1384,29 +1384,29 @@ #: simulation/templates/structures/rome/siege_wall_tower.xml:29 #: simulation/templates/structures/rome/wallset_siege.xml:9 msgid "SiegeWall" -msgstr "Valláu" +msgstr "Muriu" #: simulation/templates/structures/rome/siege_wall_long.xml:23 #: simulation/templates/structures/rome/siege_wall_medium.xml:23 #: simulation/templates/structures/rome/siege_wall_short.xml:23 #: simulation/templates/structures/rome/wallset_siege.xml:5 msgid "Siege Wall" -msgstr "Valláu" +msgstr "Muriu" #: simulation/templates/structures/rome/siege_wall_long.xml:24 #: simulation/templates/structures/rome/siege_wall_medium.xml:24 #: simulation/templates/structures/rome/siege_wall_short.xml:24 #: simulation/templates/structures/rome/wallset_siege.xml:6 msgid "Mūrus Circummūnītiōnis" -msgstr "Circumvallātiō" +msgstr "Mūrus Circummūnītiōnis" #: simulation/templates/structures/rome/siege_wall_tower.xml:26 msgid "Siege Wall Tower" -msgstr "Torre vallar" +msgstr "Torre mural" #: simulation/templates/structures/rome/siege_wall_tower.xml:27 msgid "Turris Circummūnītiōnis" -msgstr "Turris Circumvallātiōnis" +msgstr "Turris Circummūnītiōnis" #: simulation/templates/structures/rome/stable.xml:5 msgid "Equīle" @@ -1465,7 +1465,7 @@ #: simulation/templates/structures/rome/wall_tower.xml:9 msgid "Turris Lapidea" -msgstr "Prōpugnāculum Moenium" +msgstr "Turris Mūnītiōnis" #: simulation/templates/structures/rome/wallset_siege.xml:7 msgid "Wall off an area. Build in own, neutral, or enemy territory." @@ -1473,7 +1473,7 @@ #: simulation/templates/structures/rome/wonder.xml:9 msgid "Aedēs Iovis Optimi Maximi" -msgstr "Aedēs Iovis Optimī Maximī" +msgstr "Aedēs Iovis Optimi Maximi" #: simulation/templates/structures/sele/wonder.xml:9 msgid "Hieron tou Apollōnos Pythiou" @@ -1809,7 +1809,7 @@ #: simulation/templates/template_structure_defensive_wall_tower.xml:22 msgid "Wall Turret" -msgstr "Torreta" +msgstr "Torrina" #: simulation/templates/template_structure_economic.xml:4 msgid "Economic Structure" @@ -1866,13 +1866,13 @@ #: simulation/templates/template_structure_military_arsenal.xml:25 #: simulation/templates/template_structure_military_arsenal.xml:28 msgid "Arsenal" -msgstr "Oficina mecánica" +msgstr "Ballesteru" #: simulation/templates/template_structure_military_arsenal.xml:27 msgid "" "Train Champion Infantry Crossbowmen, construct Siege Engines, and research " "Siege Engine technologies." -msgstr "Sitiu onde s'exerciten Ballesteros invictos pedestres, se constrúin Máquines béliques y se desendolquen técniques mecániques." +msgstr "Sitiu onde s'exerciten Mamballesteros invictos, se constrúin Máquines béliques y se desendolquen técniques mecániques." #: simulation/templates/structures/gaul/assembly.xml:31 #: simulation/templates/structures/kush/pyramid_large.xml:29 Index: binaries/data/mods/public/l10n/ast.public-templates-other.po =================================================================== --- binaries/data/mods/public/l10n/ast.public-templates-other.po +++ binaries/data/mods/public/l10n/ast.public-templates-other.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: 0 A.D.\n" "POT-Creation-Date: 2021-05-28 07:15+0000\n" -"PO-Revision-Date: 2021-11-06 18:43+0000\n" +"PO-Revision-Date: 2021-11-05 03:06+0000\n" "Last-Translator: David Sowa \n" "Language-Team: Asturian (http://www.transifex.com/wildfire-games/0ad/language/ast/)\n" "MIME-Version: 1.0\n" @@ -661,7 +661,7 @@ #: simulation/templates/gaia/ruins/stone_statues_kushite.xml:8 msgid "Kushite Statue" -msgstr "Estatua qesana" +msgstr "Estatua qosana" #: simulation/templates/gaia/ruins/stone_statues_kushite_bird.xml:9 #: simulation/templates/gaia/ruins/stone_statues_kushite_lion.xml:9 @@ -671,7 +671,7 @@ #: simulation/templates/gaia/ruins/stone_statues_kushite_bird.xml:10 msgid "Kushite Bird Statue" -msgstr "Ibis qesana" +msgstr "Ibis qosana" #: simulation/templates/gaia/ruins/stone_statues_kushite_lion.xml:10 msgid "Apademak Lion Statue" @@ -977,7 +977,7 @@ #: simulation/templates/gaia/tree/tropic_rainforest.xml:4 msgid "Rainforest Tree" -msgstr "Árbole tropical" +msgstr "Árbore tropical" #: simulation/templates/mixins/builder.xml:35 msgid "Builder" @@ -1168,7 +1168,7 @@ #: simulation/templates/template_gaia_tree.xml:8 msgid "Tree" -msgstr "Árbole" +msgstr "Árbore" #: simulation/templates/template_gaia_tree.xml:9 msgid "Chop trees for wood." Index: binaries/data/mods/public/l10n/ast.public-templates-units.po =================================================================== --- binaries/data/mods/public/l10n/ast.public-templates-units.po +++ binaries/data/mods/public/l10n/ast.public-templates-units.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: 0 A.D.\n" "POT-Creation-Date: 2021-05-24 07:17+0000\n" -"PO-Revision-Date: 2021-11-06 20:26+0000\n" +"PO-Revision-Date: 2021-11-05 03:07+0000\n" "Last-Translator: David Sowa \n" "Language-Team: Asturian (http://www.transifex.com/wildfire-games/0ad/language/ast/)\n" "MIME-Version: 1.0\n" @@ -280,7 +280,7 @@ #: simulation/templates/template_unit_cavalry_ranged_crossbowman.xml:29 msgid "Cavalry Crossbowman" -msgstr "Ballesteru ecuestre" +msgstr "Mamballesteru ecuestre" #: simulation/templates/template_unit_cavalry_ranged_crossbowman.xml:30 #: simulation/templates/template_unit_champion_cavalry_crossbowman.xml:24 @@ -289,7 +289,7 @@ #: simulation/templates/template_unit_hero_infantry_crossbowman.xml:24 #: simulation/templates/template_unit_infantry_ranged_crossbowman.xml:30 msgid "Crossbowman" -msgstr "Ballesteru" +msgstr "Mamballesteru" #: simulation/templates/template_unit_cavalry_ranged_javelineer.xml:5 #: simulation/templates/template_unit_champion_cavalry_javelineer.xml:5 @@ -336,7 +336,7 @@ #: simulation/templates/template_unit_champion_cavalry_crossbowman.xml:23 msgid "Champion Cavalry Crossbowman" -msgstr "Ballesteru invictu ecuestre" +msgstr "Mamballesteru invictu ecuestre" #: simulation/templates/template_unit_champion_cavalry_javelineer.xml:23 msgid "Champion Cavalry Javelineer" @@ -395,7 +395,7 @@ #: simulation/templates/template_unit_champion_infantry_crossbowman.xml:26 msgid "Champion Infantry Crossbowman" -msgstr "Ballesteru invictu pedestre" +msgstr "Mamballesteru invictu pedestre" #: simulation/templates/template_unit_champion_infantry_javelineer.xml:26 msgid "Champion Infantry Javelineer" @@ -513,7 +513,7 @@ #: simulation/templates/template_unit_hero_cavalry_crossbowman.xml:23 msgid "Hero Cavalry Crossbowman" -msgstr "Ballesteru heroicu ecuestre" +msgstr "Mamballesteru heroicu ecuestre" #: simulation/templates/template_unit_hero_cavalry_javelineer.xml:23 msgid "Hero Cavalry Javelineer" @@ -557,7 +557,7 @@ #: simulation/templates/template_unit_hero_infantry_crossbowman.xml:23 msgid "Hero Infantry Crossbowman" -msgstr "Ballesteru heroicu pedestre" +msgstr "Mamballesteru heroicu pedestre" #: simulation/templates/template_unit_hero_infantry_javelineer.xml:23 msgid "Hero Infantry Javelineer" @@ -595,7 +595,7 @@ #: simulation/templates/template_unit_infantry_ranged_crossbowman.xml:29 msgid "Infantry Crossbowman" -msgstr "Ballesteru pedestre" +msgstr "Mamballesteru pedestre" #: simulation/templates/template_unit_infantry_ranged_javelineer.xml:28 msgid "Infantry Javelineer" @@ -1887,7 +1887,7 @@ #: simulation/templates/units/kush/siege_tower.xml:5 msgid "Kushite Siege Tower" -msgstr "Ambulante qesana" +msgstr "Ambulante qosana" #: simulation/templates/units/kush/siege_tower.xml:6 msgid "iwn n ms" @@ -1899,7 +1899,7 @@ #: simulation/templates/units/kush/support_female_citizen.xml:16 msgid "Kushite Woman" -msgstr "Qesana" +msgstr "Qosana" #: simulation/templates/units/kush/support_healer_b.xml:6 msgid "Priest" Index: binaries/data/mods/public/l10n/ast.public-tutorials.po =================================================================== --- binaries/data/mods/public/l10n/ast.public-tutorials.po +++ binaries/data/mods/public/l10n/ast.public-tutorials.po @@ -48,8 +48,8 @@ "Select the Civic Center building and hold %(hotkey)s while clicking on the " "Hoplite icon once to begin training a batch of Hoplites." msgstr "" -"Esbilla'l Foru. Premiendo %(hotkey)s, calca una vegada nel iconu «Hoplita " -"periecu» pa emprimar la exercitación d'un ensame d'Hoplites." +"Esbilla'l Foru. Primiendo %(hotkey)s, calca una vegada nel iconu «Hoplita " +"ateniense» pa emprimar la conscripción d'un ensame d'Hoplites." #: maps/tutorials/introductory_tutorial.js:37 #: maps/tutorials/introductory_tutorial.js:79 @@ -59,13 +59,13 @@ "Do not forget to press the batch training hotkey while clicking to produce " "multiple units." msgstr "" -"Nun se t'escaeza premer l'atayu de conscripción al calcar pa producir delles" +"Nun se t'escaeza primir l'atayu de conscripción al calcar pa producir delles" " unidaes." #: maps/tutorials/introductory_tutorial.js:38 #: maps/tutorials/introductory_tutorial.js:162 msgid "Click on the Hoplite icon." -msgstr "Calca nel iconu «Hoplita periecu»." +msgstr "Calca nel iconu «Hoplita ateniense»." #: maps/tutorials/introductory_tutorial.js:46 msgid "" @@ -82,7 +82,7 @@ "when it's constructed." msgstr "" "Cuando tean preparaos, esbilla los Hoplites nuevos y fai que llevanten una " -"Bodega al pie d'unos árboles averaos. En construyéndola van entamar a " +"Bodega al pie d'unos árbores averaos. En construyéndola van entamar a " "llograr madera." #: maps/tutorials/introductory_tutorial.js:64 @@ -91,12 +91,12 @@ "Train a batch of Skirmishers by holding %(hotkey)s and clicking on the " "Skirmisher icon in the Civic Center." msgstr "" -"Exercita un ensame de Quimeristes premiendo %(hotkey)s y calcando nel iconu " -"«Quimerista ilota» en Foru." +"Conscribi un ensame de Quimeristes primiendo %(hotkey)s y calcando nel iconu" +" «Quimerista» en Foru." #: maps/tutorials/introductory_tutorial.js:80 msgid "Click on the Skirmisher icon." -msgstr "Calca nel iconu «Quimerista ilota»." +msgstr "Calca nel iconu «Quimerista»." #: maps/tutorials/introductory_tutorial.js:88 msgid "" @@ -114,9 +114,9 @@ "gathering food if there is any nearby. Select the builders and instead make " "them construct a Field beside the Farmstead." msgstr "" -"En peracabando l'Horriu, los constructores van entamar a llograr comida de " -"fontes averaes, si les hai. En cuenta d'ello, esbilla los constructores y " -"fai que semen un Panal xunto al Horriu." +"N'acabando l'Horriu, los constructores van entamar a llograr cualquier " +"comida que tea a mano. En cuenta d'ello, esbilla los constructores y fai que" +" semen un Panal xunto al Horriu." #: maps/tutorials/introductory_tutorial.js:136 msgid "" @@ -125,7 +125,7 @@ "another House nearby." msgstr "" "Agora los semadores del Panal van entamar a coyer el pan automáticamente. " -"Fai que los quimeristes nuevos llevanten otra Casa ehí a la vera." +"Fai que los quimeristes acabantes d'aprucir llevanten otra Casa ehí averao." #: maps/tutorials/introductory_tutorial.js:144 msgid "" @@ -133,7 +133,7 @@ "with it selected right-click on a tree nearby. Units from the Civic Center " "will now automatically gather wood." msgstr "" -"Exercita un ensame d'Hoplites en Foru. Esbilla'l Foru y calca col botón " +"Conscribi un ensame d'Hoplites en Foru. Esbilla'l Foru y calca col botón " "derechu nun árbol averáu. Agora les unidaes del Foru van llograr madera " "automáticamente." @@ -142,7 +142,7 @@ "Select the Civic Center, then hover the cursor over the tree and right-click" " when you see your cursor change into a wood icon." msgstr "" -"Esbilla'l Foru, pon el punteru enriba del árbole ya darréu calca nelli col " +"Esbilla'l Foru, pon el punteru enriba del árbore ya darréu calca nelli col " "botón derechu al camudar l'iconu del punteru en lleñeru." #: maps/tutorials/introductory_tutorial.js:185 @@ -152,9 +152,9 @@ "Village Phase structure that you have built, allowing you to advance to the " "Town Phase." msgstr "" -"Llevanta un Castru ehí a la vera. Siempre que se cuta'l techu poblacional, " -"fai otra Casa con cualquier constructor baleru. Como esta va ser la quinta " -"construcción rural que ficieras, vas poder pasar a la Fas opidana." +"Llevanta un Castru. Siempres que s'algame'l techu poblacional, alza otra " +"Casa colos constructores disponibles. Como esta va ser la quinta " +"construcción rural que ficieres, vas poder pasar a la Fas opidana." #: maps/tutorials/introductory_tutorial.js:193 msgid "" @@ -163,8 +163,8 @@ "allow Town Phase buildings to be constructed." msgstr "" "Volvi esbillar el Foru y avanza a la Fas opidana calcando nel iconu «ll» " -"(una y bona que se perfaiga'l castru). Asina vas poder llevantar edificios " -"opidanos." +"(primero hai qu'esperar a que se perfaiga'l castru). Asina vas poder " +"llevantar edificios opidanos." #: maps/tutorials/introductory_tutorial.js:205 msgid "" @@ -172,23 +172,23 @@ "gathering the resources you are short of." msgstr "" "Mentanto esperes el cambéu de fas, podríes facer que los obreros baleros " -"llogren los recursos que te falten." +"percancien los recursos que falten." #: maps/tutorials/introductory_tutorial.js:220 msgid "" "Order the idle Skirmishers to build an outpost to the north east at the edge" " of your territory." msgstr "" -"Ordena a los Quimeristes baleros llevantar un miradoriu pela llende oriental" -" septentrional de la to tierra." +"Ordena a los Quimeristes baleros llevantar un miradoriu pel septentrión " +"oriental de les tos tierres." #: maps/tutorials/introductory_tutorial.js:228 msgid "" "Start training a batch of Female Citizens in the Civic Center and set its " "rally point to the Field (right click on it)." msgstr "" -"Exercita un ensame de Cives fémines en Foru y afita'l puntu d'alcuentru en " -"Panal (calca nelli col botón derechu). " +"Conscribi un ensame de Cives fémines en Foru y afita'l puntu d'alcuentru en " +"Panal (calca nelli col botón derechu del mure). " #: maps/tutorials/introductory_tutorial.js:246 #: maps/tutorials/starting_economy_walkthrough.js:348 @@ -200,40 +200,40 @@ "Prepare for an attack by an enemy player. Train more soldiers using the " "Barracks, and get idle soldiers to build a Tower near your Outpost." msgstr "" -"Prepara pa una incursión enemiga. Exercita más mílites col Castru y fai que " -"los baleros llevanten una Torre a la oriella'l Miradoriu." +"Prepara pa un ataque enemigu. Exercita más mílites en Castru y fai que los " +"mílites baleros llevanten una Torre a la vera del Miradoriu." #: maps/tutorials/introductory_tutorial.js:274 msgid "" "Build a Forge and research the Infantry Training technology (sword icon) to " "improve infantry hack attack." msgstr "" -"Llevanta una Fragua y desendolca la primera Técnica pedestre (espada) " -"p'ameyorar el corte de los pédites." +"Llevanta una Fragua y desendolca «Arma auxiliar» (la espada) p'ameyorar el " +"corte de los pédites." #: maps/tutorials/introductory_tutorial.js:282 msgid "The enemy is coming. Train more soldiers to fight off the enemies." -msgstr "Velahí l'enemigu. Exercita más mílites pa refugar los invasores." +msgstr "Ehí vien l'enemigu. Exercita más mílites pa estornar los invasores." #: maps/tutorials/introductory_tutorial.js:290 msgid "Try to repel the attack." -msgstr "Tenta de tornar la incursión." +msgstr "Escontarma l'ataque." #: maps/tutorials/introductory_tutorial.js:300 msgid "" "The enemy attack has been thwarted. Now build a market and a temple while " "you assign new units to gather required resources." msgstr "" -"¡Esfarrápestilos! Agora llevanta un mercáu y un templu de la qu'unvies les " -"unidaes nueves a llograr recursos." +"¡Esfarrápestilos! Agora llevanta un mercáu y un templu y unvia les unidaes " +"nueves a llograr los recursos que falten." #: maps/tutorials/introductory_tutorial.js:321 msgid "" "Once you meet the City Phase requirements, select your Civic Center and " "advance to City Phase." msgstr "" -"Cuando cumplas colos requisitos de la Fas urbana, esbilla'l Foru y avanza a " -"la Fas urbana." +"Cuando cumplas los requisitos urbanos, esbilla'l Foru y avanza a la Fas " +"urbana." #: maps/tutorials/introductory_tutorial.js:333 msgid "" @@ -247,8 +247,8 @@ "Now that you are in City Phase, build the Arsenal nearby and then use it to " "construct 2 Battering Rams." msgstr "" -"Agora que tas na Fas urbana, llevanta una Oficina mecánica y emplégala pa " -"construir 2 Arietes." +"Agora que tas na Fas urbana, llevanta un Balistrariu y úsala pa construir 2 " +"Arietes." #: maps/tutorials/introductory_tutorial.js:367 msgid "" @@ -257,20 +257,20 @@ "spotted, send your Siege Engines and all remaining soldiers to destroy it.\n" msgstr "" "Fai que tolos mílites dexen de llograr recursos y, en cuenta d'ello, unvia " -"unos ensames en cata del Foru enemigu. Una y bones endilgáu, manda a los " -"Arietes ya demás mílites que lu esbarrumben.\n" +"unos ensames en cata del Foru enemigu. Una y bones endilgáu, manda los " +"Arietes y demás mílites a esbarrumbalu.\n" #: maps/tutorials/introductory_tutorial.js:368 msgid "Female Citizens should continue to gather resources." -msgstr "Cal que les Cives sigan llogrando recursos." +msgstr "Cal que les cives sigan llogrando recursos." #: maps/tutorials/introductory_tutorial.js:379 msgid "The enemy has been defeated. These tutorial tasks are now completed." -msgstr "L'enemigu ta vencíu. Cumpliéronse yá toles xeres del cursín." +msgstr "¡Vencisti l'enemigu y cumplisti toles xeres del cursín!" #: maps/tutorials/introductory_tutorial.xml:Description:38 msgid "This is a basic tutorial to get you started playing 0 A.D." -msgstr "Nesti cursín vamos deprender a xugar al 0 A.D." +msgstr "Esti ye un cursín básicu p'ayudate a entamar 0 A.D." #: maps/tutorials/introductory_tutorial.xml:Name:38 msgid "Introductory Tutorial" @@ -292,10 +292,10 @@ "ultimately, your goal will be to develop and expand your empire, often by " "evolving to Town Phase and City Phase afterward.\n" msgstr "" -"Nesti cursín vamos deprender lo básico pa desenvolver la economía. Polo " -"xeneral, el xugador emprima na Fas rural con un Foru ya un puñáu d'unidaes " -"y, pa trunfar, ha esparder los sos dominios, pasando a la Fas opidana y " -"llueu a la Fas urbana.\n" +"Nesti cursín vamos deprender cómo desenvolver una economía. Polo xeneral, el" +" xugador emprima na Fas rural con un Foru ya un puñáu d'unidaes y, pa " +"trunfar, ha espurrir los sos dominios, pasando a la Fas opidana y llueu a la" +" urbana.\n" #: maps/tutorials/starting_economy_walkthrough.js:6 #, javascript-format @@ -392,7 +392,7 @@ "etc.).\n" msgstr "" "Por regla xeneral, el botón esquierdu del mure esbilla y el derechu ordena a" -" lo esbillao (atropar, construir, acometer, etc.).\n" +" lo esbillao (atropar, construyir, acometer, etc.).\n" #: maps/tutorials/starting_economy_walkthrough.js:40 msgid "" @@ -413,7 +413,7 @@ "1) Hold the left mouse button and drag a selection rectangle that encloses " "the units you want to select.\n" msgstr "" -"1) Premiendo'l botón esquierdu del mure, arrastrar el punteru y facer una " +"1) Primiendo'l botón esquierdu del mure, arrastrar el punteru y facer una " "esbilla que recueya lo que se quier.\n" #: maps/tutorials/starting_economy_walkthrough.js:43 @@ -422,7 +422,7 @@ "holding Shift and clicking each additional unit (or also via the above " "selection rectangle).\n" msgstr "" -"2) Calcar en daqué y llueu, premiendo Mayúscules, calcar en daqué ál (o " +"2) Calcar en daqué y llueu, primiendo Mayúscules, calcar en daqué ál (o " "arrastrar el punteru, como enriba).\n" #: maps/tutorials/starting_economy_walkthrough.js:45 @@ -443,7 +443,7 @@ "berries when you have all the Female Citizens selected." msgstr "" "Puedes calcar nel terrén del mapa pa reafitar la esbilla. En probando caún " -"d'estos métodos, manda toles Cives a pañar les bagues al oriente meridianu " +"d'estos métodos, manda toles Cives a pañar les bagues al meudía y oriente " "del Foru esbillando les Cives y calcando col botón derechu nos arbustos." #: maps/tutorials/starting_economy_walkthrough.js:59 @@ -454,7 +454,7 @@ msgstr "" "Agora vamos llograr madera colos Pédites civiles. Esbilla los Pédites " "civiles ya ordéna-ys cortar madera calcando col botón derechu del mure nel " -"árbole más averáu." +"árbore más averáu." #: maps/tutorials/starting_economy_walkthrough.js:70 msgid "" @@ -515,19 +515,19 @@ "time than training 5 units individually." msgstr "" "Los Mílites civiles corten la madera más rápido que les Cives. Esbilla'l " -"Foru y, premiendo Mayúscules, calca nel segundu iconu, el del Hoplita. (Al " -"calcar premiendo Mayúscules conscríbese un ensame de 5 unidaes. Tamién " +"Foru y, primiendo Mayúscules, calca nel segundu iconu, el del Hoplita. (Al " +"calcar primiendo Mayúscules conscríbese un ensame de 5 unidaes. Tamién " "puedes exercitalos ún a ún, pero asina aforres tiempu)." #: maps/tutorials/starting_economy_walkthrough.js:111 msgid "Do not forget to hold Shift while clicking to train several units." msgstr "" -"Nun se t'escaeza premer Mayúscules al calcar pa producir delles unidaes al " +"Nun se t'escaeza primir Mayúscules al calcar pa producir delles unidaes al " "empar." #: maps/tutorials/starting_economy_walkthrough.js:112 msgid "Hold Shift and click on the Hoplite icon." -msgstr "Premiendo Mayúscules, calca nel iconu «Hoplita ateniense»." +msgstr "Primiendo Mayúscules, calca nel iconu «Hoplita ateniense»." #: maps/tutorials/starting_economy_walkthrough.js:121 #: maps/tutorials/starting_economy_walkthrough.js:180 @@ -562,7 +562,7 @@ "The newly trained units automatically go to the trees and start gathering " "wood.\n" msgstr "" -"Les unidaes nueves van empobinase a los árboles y entamar a cortar madera " +"Les unidaes nueves van empobinase a los árbores y entamar a cortar madera " "automáticamente.\n" #: maps/tutorials/starting_economy_walkthrough.js:133 @@ -579,7 +579,7 @@ "rindimientu. Pa igualo, puedes llevantar al pie de la carbayeda una Bodega, " "un depósitu pa madera, piedra y metal. Pa ello, esbilla los cinco Mílites " "civiles nuevos, busca'l panel de construcción a lo baxero de la pantalla, " -"calca nel iconu «Bodega», avera'l mure tolo posible a los árboles y calca u " +"calca nel iconu «Bodega», avera'l mure tolo posible a los árbores y calca u " "quieras llevantalu.\n" #: maps/tutorials/starting_economy_walkthrough.js:134 @@ -611,18 +611,18 @@ " Citizens." msgstr "" "Vamos exercitar delles Cives pa llograr más comida. Esbilla'l Foru y, " -"premiendo Mayúscules, calca nel iconu «Ateniense» pa exercitar cinco Cives " +"primiendo Mayúscules, calca nel iconu «Ateniense» pa exercitar cinco Cives " "fémines." #: maps/tutorials/starting_economy_walkthrough.js:170 msgid "Do not forget to hold Shift and click to train several units." msgstr "" -"Nun se t'escaeza premer Mayúscules al calcar pa producir una cinquena " +"Nun se t'escaeza primir Mayúscules al calcar pa producir una cinquena " "d'unidaes." #: maps/tutorials/starting_economy_walkthrough.js:171 msgid "Hold shift and click on the Female Citizen icon." -msgstr "Premiendo Mayúscules, calca nel iconu «Ateniense»." +msgstr "Primiendo Mayúscules, calca nel iconu «Ateniense»." #: maps/tutorials/starting_economy_walkthrough.js:181 msgid "" @@ -668,7 +668,7 @@ "Now that the units are ready, let's see how to build several Houses in a " "row." msgstr "" -"Agora que les unidaes tán preparaes, vamos ver cómo construir dos cases " +"Agora que les unidaes tán preparaes, vamos ver cómo construyir dos cases " "darréu." #: maps/tutorials/starting_economy_walkthrough.js:215 @@ -686,10 +686,10 @@ msgstr "" "Escueyi dos Cives nueves y fai que constrúan les Cases na escamplada al " "oriente del Foru. Pa ello, esbilla les Cives, calca nel iconu «Casa» del " -"panel baxeru y, premiendo Mayúscules, calca onde llevantar la primera y " -"llueu la segunda. (Col tecláu Mayúscules premíu, les órdenes enriéstrense; " +"panel baxeru y, primiendo Mayúscules, calca onde llevantar la primera y " +"llueu la segunda. (Col tecláu Mayúscules primíu, les órdenes enriéstrense; " "les unidaes van pasar a la siguiente orde de la riestra en cumpiendo la orde" -" actual). Premi Colar pa desapaecer la previsualización de la Casa y asina " +" actual). Primi Colar pa desapaecer la previsualización de la Casa y asina " "nun llarar el mapa d'elles.\n" #: maps/tutorials/starting_economy_walkthrough.js:216 @@ -698,7 +698,7 @@ "then hold Shift and click on the second one." msgstr "" "Alcuérdate: pa esbillar dos Cives fémines namái, calca na primera y darréu, " -"premiendo Mayúscules, na segunda." +"primiendo Mayúscules, na segunda." #: maps/tutorials/starting_economy_walkthrough.js:249 msgid "" @@ -725,7 +725,7 @@ "Center.\n" msgstr "" "Esbilla les tres Cives que queden (baleres) y ordéna-ys facer un Horriu na " -"escamplada al occidente del Foru.\n" +"escamplada a occidente del Foru.\n" #: maps/tutorials/starting_economy_walkthrough.js:262 msgid "" @@ -734,7 +734,7 @@ "gathering efficiency should we ever decide to hunt them.\n" msgstr "" "Requeremos espaciu abondo pa semar el pan al rodiu del Horriu. Otramiente, " -"nun taría de más criar cabres al occidente pa poder llograr entá más " +"nun taría de más criar cabres a occidente pa poder llograr entá más " "comida.\n" #: maps/tutorials/starting_economy_walkthrough.js:263 @@ -747,9 +747,9 @@ "screen to remove the cavalry unit from the current selection." msgstr "" "Si tentes d'esbillar les tres Cives arrastrando'l punteru, puedes esbillar " -"otres unidaes ensin querer. Pa qu'eso nun asoceda, premi «I» al esbillar; " +"otres unidaes ensin querer. Pa qu'eso nun asoceda, primi «I» al esbillar; " "asina vas recoyer namái les unidaes baleres. Si esbilles una unidá ecuestre " -"ensin querer, premi «Control» y calca nel so iconu a lo baxero de la " +"ensin querer, primi «Control» y calca nel so iconu a lo baxero de la " "pantalla pa quitalu de la esbilla." #: maps/tutorials/starting_economy_walkthrough.js:278 @@ -766,7 +766,7 @@ "nothing found, become idle. Let's wait for them to build the Houses." msgstr "" "Les constructores de les cases, per otru llau, van guetar daqué que " -"construir y, si nun lo atopen, van quedar baleres. Vamos esperar a que " +"construyir y, si nun lo atopen, van quedar baleres. Vamos esperar a que " "peracaben les cases." #: maps/tutorials/starting_economy_walkthrough.js:295 @@ -823,7 +823,7 @@ #: maps/tutorials/starting_economy_walkthrough.js:347 msgid "Click without holding Shift to train a single unit." -msgstr "Calca ensin premer Mayúscules pa exercitar una unidá." +msgstr "Calca ensin primir Mayúscules pa exercitar una unidá." #: maps/tutorials/starting_economy_walkthrough.js:358 msgid "" @@ -929,8 +929,8 @@ msgstr "" "Pa ello, podríemos esbillar tres Mílites civiles y calcar na cantera al " "occidente al Foru (el punteru camuda en poniéndose enriba de la cantera si " -"hai unidaes esbillaes). Sicasí, como cortaben árboles, los mílites perderíen" -" la madera que llevaren al entamar a atropar otru recursu." +"hai unidaes esbillaes). Sicasí, como cortaben árbores, los conscritos " +"perderíen la madera que llevaren al entamar a atropar otru recursu." #: maps/tutorials/starting_economy_walkthrough.js:418 msgid "" @@ -941,9 +941,9 @@ " it.\n" msgstr "" "Poro, hai qu'ordena-ys deponer la madera en Foru a lo llargo del camín. Pa " -"facelo, calcamos premiendo Mayúscules pa enrestrar órdenes: esbilla los " -"mílites y, premiendo Mayúscules, calca col botón derechu del mure en Foru pa" -" deponer la madera y llueu, premiendo Mayúscules, calca col botón derechu " +"facelo, calcamos primiendo Mayúscules pa enrestrar órdenes: esbilla los " +"mílites y, primiendo Mayúscules, calca col botón derechu del mure en Foru pa" +" deponer la madera y llueu, primiendo Mayúscules, calca col botón derechu " "del mure na cantera pa llograr piedra.\n" #: maps/tutorials/starting_economy_walkthrough.js:419 @@ -968,10 +968,10 @@ " the game the most important thing is to gather resources as fast as " "possible so you are able to build enough troops later." msgstr "" -"Nesti percorríu vamos deprender cómo entamar con xeitu. Al aniciu del xuegu," -" lo más importante ye axuntar recursos tan aína como puedas pa que llueu " -"sías a producir mílites abondos." +"Nesti mapa vamos deprender cómo empezar a xugar. Al principiu, lo más " +"importante ye llograr recursos lo más rápido posible pa que más alantre " +"puedas allistar abondos soldaos." #: maps/tutorials/starting_economy_walkthrough.xml:Name:39 msgid "Starting Economy Walkthrough" -msgstr "Percorríu económicu" +msgstr "Tutorial económicu" Index: binaries/data/mods/public/l10n/el.public-gui-ingame.po =================================================================== --- binaries/data/mods/public/l10n/el.public-gui-ingame.po +++ binaries/data/mods/public/l10n/el.public-gui-ingame.po @@ -41,8 +41,8 @@ msgstr "" "Project-Id-Version: 0 A.D.\n" "POT-Creation-Date: 2021-10-29 07:08+0000\n" -"PO-Revision-Date: 2021-11-05 13:20+0000\n" -"Last-Translator: LOUKAS SKOUROLIAKOS\n" +"PO-Revision-Date: 2021-10-29 07:25+0000\n" +"Last-Translator: Transifex Bot <>\n" "Language-Team: Greek (http://www.transifex.com/wildfire-games/0ad/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -184,7 +184,7 @@ #. when not the first item in the queue. #: gui/session/ResearchProgress.js:120 gui/session/selection_panels.js:597 msgid "(This item is paused.)" -msgstr "(Το αντικείμενο είναι σε παύση)" +msgstr "" #: gui/session/chat/ChatAddressees.js:88 msgctxt "chat addressee" @@ -815,19 +815,19 @@ #: gui/session/message_box/QuitConfirmation.js:9 msgid "The game has finished, what do you want to do?" -msgstr "Το παιχνίδι έχει τελειώσει, τι θέλετε να κάνετε?" +msgstr "" #. Translation: Shown in the Dialog that shows up when the game finishes #: gui/session/message_box/QuitConfirmation.js:15 #: gui/session/message_box/QuitConfirmationReplay.js:23 msgid "Stay" -msgstr "Μείνε" +msgstr "" #. Translation: Shown in the Dialog that shows up when the game finishes #: gui/session/message_box/QuitConfirmation.js:19 #: gui/session/message_box/QuitConfirmationReplay.js:27 msgid "Quit and View Summary" -msgstr "Έξοδος και Εμφάνιση Περίληψης" +msgstr "" #: gui/session/message_box/QuitConfirmationDefeat.js:54 msgid "VICTORIOUS!" @@ -866,7 +866,7 @@ #: gui/session/message_box/QuitConfirmationReplay.js:17 msgctxt "replayFinished" msgid "The replay has finished. What do you want to do?" -msgstr "Η επανάληψη έχει ολοκληρωθεί. Τι θέλετε να κάνετε?" +msgstr "" #: gui/session/message_box/ResignConfirmation.js:6 msgid "Are you sure you want to resign?" Index: binaries/data/mods/public/l10n/el.public-gui-other.po =================================================================== --- binaries/data/mods/public/l10n/el.public-gui-other.po +++ binaries/data/mods/public/l10n/el.public-gui-other.po @@ -23,8 +23,8 @@ msgstr "" "Project-Id-Version: 0 A.D.\n" "POT-Creation-Date: 2021-10-29 07:08+0000\n" -"PO-Revision-Date: 2021-11-05 08:48+0000\n" -"Last-Translator: LOUKAS SKOUROLIAKOS\n" +"PO-Revision-Date: 2021-10-29 08:25+0000\n" +"Last-Translator: Transifex Bot <>\n" "Language-Team: Greek (http://www.transifex.com/wildfire-games/0ad/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5694,7 +5694,7 @@ #: gui/replaymenu/replay_menu.xml:(tooltip):98 msgid "File path for the currently selected replay." -msgstr "Διαδρομή φακέλου για την τρέχουσα επανάληψη στιγμιότυπου." +msgstr "" #: gui/replaymenu/replay_menu.xml:(tooltip):241 msgid "Rebuild the replay cache from scratch. Potentially slow!" Index: binaries/data/mods/public/l10n/el.public-tutorials.po =================================================================== --- binaries/data/mods/public/l10n/el.public-tutorials.po +++ binaries/data/mods/public/l10n/el.public-tutorials.po @@ -851,12 +851,6 @@ " go, and when you see a herd of camels, right-click on one of them to start " "hunting for food." msgstr "" -"Οι μονάδες Ιππικού πρέπει να έχουν σφάξει όλα τα κοτόπουλα μέχρι τώρα. " -"Επιλέξτε την μονάδα και εξερευνείστε τη περιοχή δυτικά του Αστικού Κέντρου: " -"εκεί υπάρχει μία λίμνη με καμήλες τριγύρω. Μετακινείστε το Ιππικό σας " -"πατώντας το δεξί κλίκ στο σημείο που θέλετε να μετακινηθούν, και όταν δείτε " -"το κοπάδι απο των καμηλών ,πατήστε το δεξί κλίκ του ποντικιού σας " -",προκειμένου να ξεκινήσετε το κυνήγι για τροφή." #: maps/tutorials/starting_economy_walkthrough.js:317 msgid "" Index: binaries/data/mods/public/simulation/ai/common-api/shared.js =================================================================== --- binaries/data/mods/public/simulation/ai/common-api/shared.js +++ binaries/data/mods/public/simulation/ai/common-api/shared.js @@ -458,4 +458,3 @@ return m; }(API3); - Index: binaries/data/mods/public/simulation/ai/petra/attackManager.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/attackManager.js +++ binaries/data/mods/public/simulation/ai/petra/attackManager.js @@ -161,7 +161,7 @@ if (ent.getMetadata(PlayerID, "plan") !== undefined && ent.getMetadata(PlayerID, "plan") != -1) { let subrole = ent.getMetadata(PlayerID, "subrole"); - if (subrole && (subrole == "completing" || subrole == "walking" || subrole == "attacking")) + if (subrole && (subrole == PETRA.Worker.SUBROLE_COMPLETING || subrole == PETRA.Worker.SUBROLE_WALKING || subrole == PETRA.Worker.SUBROLE_ATTACKING)) continue; } let alreadyBombing = false; @@ -377,7 +377,7 @@ } // Check if we have some unused ranged siege unit which could do something useful while waiting - if (this.Config.difficulty > 1 && gameState.ai.playedTurn % 5 == 0) + if (this.Config.difficulty > PETRA.DIFFICULTY_VERY_EASY && gameState.ai.playedTurn % 5 == 0) this.assignBombers(gameState); }; @@ -718,7 +718,7 @@ if (unit && accessOk && attackPlan.isAvailableUnit(gameState, unit)) { unit.setMetadata(PlayerID, "plan", attackPlan.name); - unit.setMetadata(PlayerID, "role", "attack"); + unit.setMetadata(PlayerID, "role", PETRA.Worker.ROLE_ATTACK); attackPlan.unitCollection.updateEnt(unit); } } @@ -729,7 +729,7 @@ return false; } for (let unit of attackPlan.unitCollection.values()) - unit.setMetadata(PlayerID, "role", "attack"); + unit.setMetadata(PlayerID, "role", PETRA.Worker.ROLE_ATTACK); attackPlan.targetPlayer = target.owner(); attackPlan.targetPos = pos; attackPlan.target = target; Index: binaries/data/mods/public/simulation/ai/petra/attackPlan.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/attackPlan.js +++ binaries/data/mods/public/simulation/ai/petra/attackPlan.js @@ -171,18 +171,18 @@ // Put some randomness on the attack size let variation = randFloat(0.8, 1.2); // and lower priority and smaller sizes for easier difficulty levels - if (this.Config.difficulty < 2) + if (this.Config.difficulty < PETRA.DIFFICULTY_EASY) { priority *= 0.4; variation *= 0.2; } - else if (this.Config.difficulty < 3) + else if (this.Config.difficulty < PETRA.DIFFICULTY_MEDIUM) { priority *= 0.8; variation *= 0.6; } - if (this.Config.difficulty < 2) + if (this.Config.difficulty < PETRA.DIFFICULTY_EASY) { for (const cat in this.unitStat) { @@ -399,7 +399,7 @@ this.siegeState = 2; let targetSize; - if (this.Config.difficulty < 3) + if (this.Config.difficulty < PETRA.DIFFICULTY_MEDIUM) targetSize = this.type == "HugeAttack" ? Math.max(this.Config.difficulty, 1) : Math.max(this.Config.difficulty - 1, 0); else targetSize = this.type == "HugeAttack" ? this.Config.difficulty + 1 : this.Config.difficulty - 1; @@ -562,8 +562,8 @@ ent.setMetadata(PlayerID, "plan", -1); continue; } - ent.setMetadata(PlayerID, "role", "attack"); - ent.setMetadata(PlayerID, "subrole", "completing"); + ent.setMetadata(PlayerID, "role", PETRA.Worker.ROLE_ATTACK); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_COMPLETING); let queued = false; if (ent.resourceCarrying() && ent.resourceCarrying().length) queued = PETRA.returnResources(gameState, ent); @@ -722,7 +722,7 @@ // Finally add also some workers for the higher difficulties, // If Rush, assign all kind of workers, keeping only a minimum number of defenders // Otherwise, assign only some idle workers if too much of them - if (this.Config.difficulty <= 2) + if (this.Config.difficulty <= PETRA.DIFFICULTY_EASY) return added; let num = 0; @@ -745,7 +745,7 @@ } if (num++ < keep || numbase[baseID] < 5) continue; - if (this.type != "Rush" && ent.getMetadata(PlayerID, "subrole") != "idle") + if (this.type != "Rush" && ent.getMetadata(PlayerID, "subrole") != PETRA.Worker.SUBROLE_IDLE) continue; ent.setMetadata(PlayerID, "plan", plan); this.unitCollection.updateEnt(ent); @@ -1232,7 +1232,7 @@ for (let ent of this.unitCollection.values()) { - ent.setMetadata(PlayerID, "subrole", "walking"); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_WALKING); let stance = ent.isPackable() ? "standground" : "aggressive"; if (ent.getStance() != stance) ent.setStance(stance); @@ -1292,7 +1292,7 @@ this.startingAttack = true; this.unitCollection.forEach(ent => { ent.stopMoving(); - ent.setMetadata(PlayerID, "subrole", "attacking"); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_ATTACKING); }); if (this.type == "Rush") // try to find a better target for rush { @@ -2017,7 +2017,7 @@ for (let ent of this.unitCollection.values()) { - if (ent.getMetadata(PlayerID, "role") == "attack") + if (ent.getMetadata(PlayerID, "role") == PETRA.Worker.ROLE_ATTACK) ent.stopMoving(); if (rallyPoint) ent.moveToRange(rallyPoint[0], rallyPoint[1], 0, 15); @@ -2033,13 +2033,13 @@ PETRA.AttackPlan.prototype.removeUnit = function(ent, update) { - if (ent.getMetadata(PlayerID, "role") == "attack") + if (ent.getMetadata(PlayerID, "role") == PETRA.Worker.ROLE_ATTACK) { if (ent.hasClass("CitizenSoldier")) - ent.setMetadata(PlayerID, "role", "worker"); + ent.setMetadata(PlayerID, "role", PETRA.Worker.ROLE_WORKER); else - ent.setMetadata(PlayerID, "role", undefined); - ent.setMetadata(PlayerID, "subrole", undefined); + ent.setMetadata(PlayerID, "role", PETRA.Worker.ROLE_NONE); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_NONE); } ent.setMetadata(PlayerID, "plan", -1); if (update) Index: binaries/data/mods/public/simulation/ai/petra/baseManager.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/baseManager.js +++ binaries/data/mods/public/simulation/ai/petra/baseManager.js @@ -27,7 +27,7 @@ this.constructing = false; // Defenders to train in this cc when its construction is finished - this.neededDefenders = this.Config.difficulty > 2 ? 3 + 2*(this.Config.difficulty - 3) : 0; + this.neededDefenders = this.Config.difficulty > PETRA.DIFFICULTY_EASY ? 3 + 2*(this.Config.difficulty - 3) : 0; // vector for iterating, to check one use the HQ map. this.territoryIndices = []; @@ -44,7 +44,7 @@ this.workerObject = new PETRA.Worker(this); // entitycollections this.units = gameState.getOwnUnits().filter(API3.Filters.byMetadata(PlayerID, "base", this.ID)); - this.workers = this.units.filter(API3.Filters.byMetadata(PlayerID, "role", "worker")); + this.workers = this.units.filter(API3.Filters.byMetadata(PlayerID, "role", PETRA.Worker.ROLE_WORKER)); this.buildings = gameState.getOwnStructures().filter(API3.Filters.byMetadata(PlayerID, "base", this.ID)); this.mobileDropsites = this.units.filter(API3.Filters.isDropsite()); @@ -71,7 +71,7 @@ else this.constructing = false; - if (state != "captured" || this.Config.difficulty < 3) + if (state != "captured" || this.Config.difficulty < PETRA.DIFFICULTY_MEDIUM) this.neededDefenders = 0; else this.neededDefenders = 3 + 2 * (this.Config.difficulty - 3); @@ -518,7 +518,7 @@ for (let ent of roleless) { if (ent.hasClasses(["Worker", "CitizenSoldier", "FishingBoat"])) - ent.setMetadata(PlayerID, "role", "worker"); + ent.setMetadata(PlayerID, "role", PETRA.Worker.ROLE_WORKER); } }; @@ -614,7 +614,7 @@ // Search for idle workers, and tell them to gather resources based on demand if (!idleWorkers) { - let filter = API3.Filters.byMetadata(PlayerID, "subrole", "idle"); + const filter = API3.Filters.byMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_IDLE); idleWorkers = gameState.updatingCollection("idle-workers-base-" + this.ID, filter, this.workers).values(); } @@ -642,7 +642,7 @@ continue; if (needed.type != "food" && this.basesManager.isResourceExhausted(needed.type)) continue; - ent.setMetadata(PlayerID, "subrole", "gatherer"); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_GATHERER); ent.setMetadata(PlayerID, "gather-type", needed.type); this.basesManager.AddTCResGatherer(needed.type); break; @@ -650,9 +650,9 @@ } } else if (PETRA.isFastMoving(ent) && ent.canGather("food") && ent.canAttackClass("Animal")) - ent.setMetadata(PlayerID, "subrole", "hunter"); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_HUNTER); else if (ent.hasClass("FishingBoat")) - ent.setMetadata(PlayerID, "subrole", "fisher"); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_FISHER); } }; @@ -684,13 +684,13 @@ availableWorkers.sort((a, b) => { let vala = 0; let valb = 0; - if (a.getMetadata(PlayerID, "subrole") == "builder") + if (a.getMetadata(PlayerID, "subrole") == PETRA.Worker.SUBROLE_BUILDER) vala = 100; - if (b.getMetadata(PlayerID, "subrole") == "builder") + if (b.getMetadata(PlayerID, "subrole") == PETRA.Worker.SUBROLE_BUILDER) valb = 100; - if (a.getMetadata(PlayerID, "subrole") == "idle") + if (a.getMetadata(PlayerID, "subrole") == PETRA.Worker.SUBROLE_IDLE) vala = -50; - if (b.getMetadata(PlayerID, "subrole") == "idle") + if (b.getMetadata(PlayerID, "subrole") == PETRA.Worker.SUBROLE_IDLE) valb = -50; if (a.getMetadata(PlayerID, "plan") === undefined) vala = -20; @@ -702,7 +702,7 @@ for (let i = 0; i < needed; ++i) { availableWorkers[i].stopMoving(); - availableWorkers[i].setMetadata(PlayerID, "subrole", "idle"); + availableWorkers[i].setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_IDLE); workers.addEnt(availableWorkers[i]); } return; @@ -724,7 +724,7 @@ return; let workers = this.workers.filter(ent => ent.isBuilder()); - let builderWorkers = this.workersBySubrole(gameState, "builder"); + const builderWorkers = this.workersBySubrole(gameState, PETRA.Worker.SUBROLE_BUILDER); let idleBuilderWorkers = builderWorkers.filter(API3.Filters.isIdle()); // if we're constructing and we have the foundations to our base anchor, only try building that. @@ -750,7 +750,7 @@ let baseID = this.ID; fromOtherBase.forEach(worker => { worker.setMetadata(PlayerID, "base", baseID); - worker.setMetadata(PlayerID, "subrole", "builder"); + worker.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_BUILDER); workers.updateEnt(worker); builderWorkers.updateEnt(worker); idleBuilderWorkers.updateEnt(worker); @@ -832,7 +832,7 @@ if (assigned >= targetNB || builderTot >= maxTotalBuilders) continue; let nonBuilderWorkers = workers.filter(function(ent) { - if (ent.getMetadata(PlayerID, "subrole") == "builder") + if (ent.getMetadata(PlayerID, "subrole") == PETRA.Worker.SUBROLE_BUILDER) return false; if (!ent.position()) return false; @@ -860,7 +860,7 @@ ++builderTot; let ent = nonBuilderWorkers[current++]; ent.stopMoving(); - ent.setMetadata(PlayerID, "subrole", "builder"); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_BUILDER); ent.setMetadata(PlayerID, "target-foundation", target.id()); } } @@ -915,7 +915,7 @@ if (assigned >= targetNB || builderTot >= maxTotalBuilders) continue; let nonBuilderWorkers = workers.filter(function(ent) { - if (ent.getMetadata(PlayerID, "subrole") == "builder") + if (ent.getMetadata(PlayerID, "subrole") == PETRA.Worker.SUBROLE_BUILDER) return false; if (!ent.position()) return false; @@ -932,7 +932,7 @@ ++assigned; ++builderTot; ent.stopMoving(); - ent.setMetadata(PlayerID, "subrole", "builder"); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_BUILDER); ent.setMetadata(PlayerID, "target-foundation", target.id()); }); } Index: binaries/data/mods/public/simulation/ai/petra/basesManager.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/basesManager.js +++ binaries/data/mods/public/simulation/ai/petra/basesManager.js @@ -179,7 +179,7 @@ { builders.forEach(worker => { worker.setMetadata(PlayerID, "base", newbase.ID); - worker.setMetadata(PlayerID, "subrole", "builder"); + worker.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_BUILDER); worker.setMetadata(PlayerID, "target-foundation", ent.id()); }); } @@ -193,7 +193,7 @@ { builders.forEach(worker => { worker.setMetadata(PlayerID, "base", newbase.ID); - worker.setMetadata(PlayerID, "subrole", "builder"); + worker.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_BUILDER); worker.setMetadata(PlayerID, "target-foundation", ent.id()); }); } @@ -279,7 +279,7 @@ continue; // Assign it immediately to something useful to do. - if (ent.getMetadata(PlayerID, "role") == "worker") + if (ent.getMetadata(PlayerID, "role") == PETRA.Worker.ROLE_WORKER) { let base; if (ent.getMetadata(PlayerID, "base") === undefined) @@ -595,7 +595,7 @@ if (ent.position() && bestbase.ID !== this.noBase.ID) { bestbase.assignRolelessUnits(gameState, [ent]); - if (ent.getMetadata(PlayerID, "role") === "worker") + if (ent.getMetadata(PlayerID, "role") === PETRA.Worker.ROLE_WORKER) { bestbase.reassignIdleWorkers(gameState, [ent]); bestbase.workerObject.update(gameState, ent); Index: binaries/data/mods/public/simulation/ai/petra/config.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/config.js +++ binaries/data/mods/public/simulation/ai/petra/config.js @@ -1,7 +1,6 @@ PETRA.Config = function(difficulty, behavior) { - // 0 is sandbox, 1 is very easy, 2 is easy, 3 is medium, 4 is hard and 5 is very hard. - this.difficulty = difficulty !== undefined ? difficulty : 3; + this.difficulty = difficulty ?? PETRA.DIFFICULTY_MEDIUM; // for instance "balanced", "aggressive" or "defensive" this.behavior = behavior || "random"; @@ -167,9 +166,16 @@ ]; }; +PETRA.DIFFICULTY_SANDBOX = 0; +PETRA.DIFFICULTY_VERY_EASY = 1; +PETRA.DIFFICULTY_EASY = 2; +PETRA.DIFFICULTY_MEDIUM = 3; +PETRA.DIFFICULTY_HARD = 4; +PETRA.DIFFICULTY_VERY_HARD = 5; + PETRA.Config.prototype.setConfig = function(gameState) { - if (this.difficulty > 0) + if (this.difficulty > PETRA.DIFFICULTY_SANDBOX) { // Setup personality traits according to the user choice: // The parameter used to define the personality is basically the aggressivity or (1-defensiveness) @@ -212,14 +218,14 @@ this.Military.fortressLapseTime = Math.round(this.Military.fortressLapseTime * (1.1 - 0.2 * this.personality.defensive)); this.priorities.defenseBuilding = Math.round(this.priorities.defenseBuilding * (0.9 + 0.2 * this.personality.defensive)); - if (this.difficulty < 2) + if (this.difficulty < PETRA.DIFFICULTY_EASY) { this.popScaling = 0.5; this.Economy.supportRatio = 0.5; this.Economy.provisionFields = 1; this.Military.numSentryTowers = this.personality.defensive > this.personalityCut.strong ? 1 : 0; } - else if (this.difficulty < 3) + else if (this.difficulty < PETRA.DIFFICULTY_MEDIUM) { this.popScaling = 0.7; this.Economy.supportRatio = 0.4; @@ -228,7 +234,7 @@ } else { - if (this.difficulty == 3) + if (this.difficulty == PETRA.DIFFICULTY_MEDIUM) this.Military.numSentryTowers = 1; else this.Military.numSentryTowers = 2; @@ -246,9 +252,9 @@ } let maxPop = gameState.getPopulationMax(); - if (this.difficulty < 2) + if (this.difficulty < PETRA.DIFFICULTY_EASY) this.Economy.targetNumWorkers = Math.max(1, Math.min(40, maxPop)); - else if (this.difficulty < 3) + else if (this.difficulty < PETRA.DIFFICULTY_MEDIUM) this.Economy.targetNumWorkers = Math.max(1, Math.min(60, Math.floor(maxPop/2))); else this.Economy.targetNumWorkers = Math.max(1, Math.min(120, Math.floor(maxPop/3))); @@ -274,7 +280,7 @@ this.Economy.targetNumWorkers = Math.max(this.Economy.targetNumWorkers, this.Economy.popPhase2); this.Economy.workPhase3 = Math.min(this.Economy.workPhase3, this.Economy.targetNumWorkers); this.Economy.workPhase4 = Math.min(this.Economy.workPhase4, this.Economy.targetNumWorkers); - if (this.difficulty < 2) + if (this.difficulty < PETRA.DIFFICULTY_EASY) this.Economy.workPhase3 = Infinity; // prevent the phasing to city phase if (this.debug < 2) Index: binaries/data/mods/public/simulation/ai/petra/defenseArmy.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/defenseArmy.js +++ binaries/data/mods/public/simulation/ai/petra/defenseArmy.js @@ -119,9 +119,9 @@ else ent.setMetadata(PlayerID, "plan", -3); let subrole = ent.getMetadata(PlayerID, "subrole"); - if (subrole === undefined || subrole !== "defender") + if (subrole === PETRA.Worker.SUBROLE_NONE || subrole !== PETRA.Worker.SUBROLE_DEFENDER) ent.setMetadata(PlayerID, "formerSubrole", subrole); - ent.setMetadata(PlayerID, "subrole", "defender"); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_DEFENDER); return true; }; @@ -153,17 +153,17 @@ ent.setMetadata(PlayerID, "plan", undefined); let formerSubrole = ent.getMetadata(PlayerID, "formerSubrole"); - if (formerSubrole !== undefined) + if (formerSubrole !== PETRA.Worker.SUBROLE_NONE) ent.setMetadata(PlayerID, "subrole", formerSubrole); else - ent.setMetadata(PlayerID, "subrole", undefined); - ent.setMetadata(PlayerID, "formerSubrole", undefined); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_NONE); + ent.setMetadata(PlayerID, "formerSubrole", PETRA.Worker.SUBROLE_NONE); - // Remove from tranport plan if not yet on Board + // Remove from transport plan if not yet on Board if (ent.getMetadata(PlayerID, "transport") !== undefined) { let plan = gameState.ai.HQ.navalManager.getPlan(ent.getMetadata(PlayerID, "transport")); - if (plan && plan.state == "boarding" && ent.position()) + if (plan && plan.state == PETRA.TransportPlan.BOARDING && ent.position()) plan.removeUnit(gameState, ent); } Index: binaries/data/mods/public/simulation/ai/petra/defenseManager.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/defenseManager.js +++ binaries/data/mods/public/simulation/ai/petra/defenseManager.js @@ -429,7 +429,8 @@ if (ent.getMetadata(PlayerID, "plan") !== undefined && ent.getMetadata(PlayerID, "plan") != -1) { let subrole = ent.getMetadata(PlayerID, "subrole"); - if (subrole && (subrole == "completing" || subrole == "walking" || subrole == "attacking")) + if (subrole && + (subrole == PETRA.Worker.SUBROLE_COMPLETING || subrole == PETRA.Worker.SUBROLE_WALKING || subrole == PETRA.Worker.SUBROLE_ATTACKING)) return; } potentialDefenders.push(ent.id()); @@ -778,7 +779,8 @@ { let subrole = ent.getMetadata(PlayerID, "subrole"); // When structure decaying (usually because we've just captured it in enemy territory), also allow units from an attack plan. - if (typeGarrison != "decay" && subrole && (subrole == "completing" || subrole == "walking" || subrole == "attacking")) + if (typeGarrison != "decay" && subrole && + (subrole == PETRA.Worker.SUBROLE_COMPLETING || subrole == PETRA.Worker.SUBROLE_WALKING || subrole == PETRA.Worker.SUBROLE_ATTACKING)) return false; } if (PETRA.getLandAccess(gameState, ent) != access) Index: binaries/data/mods/public/simulation/ai/petra/garrisonManager.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/garrisonManager.js +++ binaries/data/mods/public/simulation/ai/petra/garrisonManager.js @@ -244,7 +244,7 @@ ent.setMetadata(PlayerID, "plan", -2); else ent.setMetadata(PlayerID, "plan", -3); - ent.setMetadata(PlayerID, "subrole", "garrisoning"); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_GARRISONING); ent.setMetadata(PlayerID, "garrisonHolder", holder.id()); ent.setMetadata(PlayerID, "garrisonType", type); ent.garrison(holder); @@ -258,7 +258,7 @@ */ PETRA.GarrisonManager.prototype.leaveGarrison = function(ent) { - ent.setMetadata(PlayerID, "subrole", undefined); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_NONE); if (ent.getMetadata(PlayerID, "plan") === -2) ent.setMetadata(PlayerID, "plan", -1); else Index: binaries/data/mods/public/simulation/ai/petra/headquarters.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/headquarters.js +++ binaries/data/mods/public/simulation/ai/petra/headquarters.js @@ -145,19 +145,19 @@ continue; } - ent.setMetadata(PlayerID, "role", undefined); - ent.setMetadata(PlayerID, "subrole", undefined); + ent.setMetadata(PlayerID, "role", PETRA.Worker.ROLE_NONE); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_NONE); ent.setMetadata(PlayerID, "plan", undefined); ent.setMetadata(PlayerID, "PartOfArmy", undefined); if (ent.hasClass("Trader")) { - ent.setMetadata(PlayerID, "role", "trader"); + ent.setMetadata(PlayerID, "role", PETRA.Worker.ROLE_TRADER); ent.setMetadata(PlayerID, "route", undefined); } if (ent.hasClass("Worker")) { - ent.setMetadata(PlayerID, "role", "worker"); - ent.setMetadata(PlayerID, "subrole", "idle"); + ent.setMetadata(PlayerID, "role", PETRA.Worker.ROLE_WORKER); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_IDLE); } if (ent.hasClass("Ship")) PETRA.setSeaAccess(gameState, ent); @@ -233,7 +233,7 @@ } // Then deals with decaying structures: destroy them if being lost to enemy (except in easier difficulties) - if (this.Config.difficulty < 2) + if (this.Config.difficulty < PETRA.DIFFICULTY_EASY) return; for (let entId of this.decayingStructures) { @@ -378,7 +378,7 @@ let numberOfWorkers = 0; // all workers let numberOfSupports = 0; // only support workers (i.e. non fighting) gameState.getOwnUnits().forEach(ent => { - if (ent.getMetadata(PlayerID, "role") == "worker" && ent.getMetadata(PlayerID, "plan") === undefined) + if (ent.getMetadata(PlayerID, "role") == PETRA.Worker.ROLE_WORKER && ent.getMetadata(PlayerID, "plan") === undefined) { ++numberOfWorkers; if (ent.hasClass("Support")) @@ -2273,7 +2273,7 @@ if (gameState.ai.playedTurn % 3 == 0) { this.constructTrainingBuildings(gameState, queues); - if (this.Config.difficulty > 0) + if (this.Config.difficulty > PETRA.DIFFICULTY_SANDBOX) this.buildDefenses(gameState, queues); } @@ -2281,7 +2281,7 @@ this.navalManager.update(gameState, queues, events); - if (this.Config.difficulty > 0 && (this.hasActiveBase() || !this.canBuildUnits)) + if (this.Config.difficulty > PETRA.DIFFICULTY_SANDBOX && (this.hasActiveBase() || !this.canBuildUnits)) this.attackManager.update(gameState, queues, events); this.diplomacyManager.update(gameState, events); Index: binaries/data/mods/public/simulation/ai/petra/navalManager.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/navalManager.js +++ binaries/data/mods/public/simulation/ai/petra/navalManager.js @@ -38,7 +38,7 @@ this.docks = gameState.getOwnStructures().filter(API3.Filters.byClasses(["Dock", "Shipyard"])); this.docks.registerUpdates(); - this.ships = gameState.getOwnUnits().filter(API3.Filters.and(API3.Filters.byClass("Ship"), API3.Filters.not(API3.Filters.byMetadata(PlayerID, "role", "trader")))); + this.ships = gameState.getOwnUnits().filter(API3.Filters.and(API3.Filters.byClass("Ship"), API3.Filters.not(API3.Filters.byMetadata(PlayerID, "role", PETRA.Worker.ROLE_TRADER)))); // note: those two can overlap (some transport ships are warships too and vice-versa). this.transportShips = this.ships.filter(API3.Filters.and(API3.Filters.byCanGarrison(), API3.Filters.not(API3.Filters.byClass("FishingBoat")))); this.warShips = this.ships.filter(API3.Filters.byClass("Warship")); @@ -285,7 +285,7 @@ let shipId = evt.entityObj.id(); if (this.Config.debug > 1) API3.warn("one ship " + shipId + " from plan " + plan.ID + " destroyed during " + plan.state); - if (plan.state == "boarding") + if (plan.state == PETRA.TransportPlan.BOARDING) { // just reset the units onBoard metadata and wait for a new ship to be assigned to this plan plan.units.forEach(ent => { @@ -295,7 +295,7 @@ }); plan.needTransportShips = !plan.transportShips.hasEntities(); } - else if (plan.state == "sailing") + else if (plan.state == PETRA.TransportPlan.SAILING) { let endIndex = plan.endIndex; for (let ent of plan.units.values()) @@ -361,7 +361,7 @@ let plans = []; for (let plan of this.transportPlans) { - if (plan.startIndex != startIndex || plan.endIndex != endIndex || plan.state != "boarding") + if (plan.startIndex != startIndex || plan.endIndex != endIndex || plan.state != PETRA.TransportPlan.BOARDING) continue; // Limit the number of siege units per transport to avoid problems when ungarrisoning if (PETRA.isSiegeUnit(ent) && plan.units.filter(unit => PETRA.isSiegeUnit(unit)).length > 3) @@ -613,7 +613,7 @@ if (!shipPosition) continue; let role = ship.getMetadata(PlayerID, "role"); - if (!role || role != "trader") // already accounted before + if (role == PETRA.Worker.ROLE_NONE || role != PETRA.Worker.ROLE_TRADER) // already accounted before continue; let unitAIState = ship.unitAIState(); @@ -691,7 +691,7 @@ if (blockedIds.indexOf(blockingShip.id()) != -1 || !blockingShip.position()) continue; let role = blockingShip.getMetadata(PlayerID, "role"); - if (!role || role != "trader") // already accounted before + if (role == PETRA.Worker.ROLE_NONE || role != PETRA.Worker.ROLE_TRADER) // already accounted before continue; let distSquare = API3.SquareVectorDistance(shipPosition, blockingShip.position()); let unitAIState = blockingShip.unitAIState(); Index: binaries/data/mods/public/simulation/ai/petra/queueManager.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/queueManager.js +++ binaries/data/mods/public/simulation/ai/petra/queueManager.js @@ -158,7 +158,7 @@ { let numWorkers = 0; gameState.getOwnUnits().forEach(ent => { - if (ent.getMetadata(PlayerID, "role") == "worker" && ent.getMetadata(PlayerID, "plan") === undefined) + if (ent.getMetadata(PlayerID, "role") == PETRA.Worker.ROLE_WORKER && ent.getMetadata(PlayerID, "plan") === undefined) numWorkers++; }); API3.warn("---------- QUEUES ------------ with pop " + gameState.getPopulation() + " and workers " + numWorkers); Index: binaries/data/mods/public/simulation/ai/petra/startingStrategy.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/startingStrategy.js +++ binaries/data/mods/public/simulation/ai/petra/startingStrategy.js @@ -27,7 +27,7 @@ // Sandbox difficulty should not try to expand - this.canExpand = this.Config.difficulty != 0; + this.canExpand = this.Config.difficulty != PETRA.DIFFICULTY_SANDBOX; // If no base yet, check if we can construct one. If not, dispatch our units to possible tasks/attacks this.canBuildUnits = true; if (!gameState.getOwnStructures().filter(API3.Filters.byClass("CivCentre")).hasEntities()) Index: binaries/data/mods/public/simulation/ai/petra/tradeManager.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/tradeManager.js +++ binaries/data/mods/public/simulation/ai/petra/tradeManager.js @@ -13,7 +13,7 @@ PETRA.TradeManager.prototype.init = function(gameState) { - this.traders = gameState.getOwnUnits().filter(API3.Filters.byMetadata(PlayerID, "role", "trader")); + this.traders = gameState.getOwnUnits().filter(API3.Filters.byMetadata(PlayerID, "role", PETRA.Worker.ROLE_TRADER)); this.traders.registerUpdates(); this.minimalGain = gameState.ai.HQ.navalMap ? 3 : 5; }; @@ -25,7 +25,7 @@ PETRA.TradeManager.prototype.assignTrader = function(ent) { - ent.setMetadata(PlayerID, "role", "trader"); + ent.setMetadata(PlayerID, "role", PETRA.Worker.ROLE_TRADER); this.traders.updateEnt(ent); }; @@ -67,7 +67,7 @@ gameState.ai.HQ.navalManager.seaTransportShips[this.tradeRoute.sea].forEach(function(ship) { if (already || !ship.hasClass("Trader")) return; - if (ship.getMetadata(PlayerID, "role") == "switchToTrader") + if (ship.getMetadata(PlayerID, "role") == PETRA.Worker.ROLE_SWITCH_TO_TRADER) { already = true; return; @@ -79,9 +79,9 @@ if (shipToSwitch) { if (shipToSwitch.getMetadata(PlayerID, "transporter") === undefined) - shipToSwitch.setMetadata(PlayerID, "role", "trader"); + shipToSwitch.setMetadata(PlayerID, "role", PETRA.Worker.ROLE_TRADER); else - shipToSwitch.setMetadata(PlayerID, "role", "switchToTrader"); + shipToSwitch.setMetadata(PlayerID, "role", PETRA.Worker.ROLE_SWITCH_TO_TRADER); return; } @@ -645,7 +645,7 @@ if (gameState.ai.HQ.canBarter && Resources.GetBarterableCodes().length) this.performBarter(gameState); - if (this.Config.difficulty <= 1) + if (this.Config.difficulty <= PETRA.DIFFICULTY_VERY_EASY) return; if (this.checkEvents(gameState, events)) // true if one market was built or destroyed Index: binaries/data/mods/public/simulation/ai/petra/transportPlan.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/transportPlan.js +++ binaries/data/mods/public/simulation/ai/petra/transportPlan.js @@ -67,13 +67,22 @@ API3.warn("Starting a new transport plan with ID " + this.ID + " to index " + endIndex + " with units length " + units.length); - this.state = "boarding"; + this.state = PETRA.TransportPlan.BOARDING; this.boardingPos = {}; this.needTransportShips = ship === undefined; this.nTry = {}; return true; }; +/** + * We're trying to board units onto our ships. + */ +PETRA.TransportPlan.BOARDING = "boarding"; +/** + * We're moving ships and eventually unload units. + */ +PETRA.TransportPlan.SAILING = "sailing"; + PETRA.TransportPlan.prototype.init = function(gameState) { this.units = gameState.getOwnUnits().filter(API3.Filters.byMetadata(PlayerID, "transport", this.ID)); @@ -117,7 +126,7 @@ ent.setMetadata(PlayerID, "onBoard", ship.id()); if (this.debug > 1) { - if (ent.getMetadata(PlayerID, "role") == "attack") + if (ent.getMetadata(PlayerID, "role") == PETRA.Worker.ROLE_ATTACK) Engine.PostCommand(PlayerID, { "type": "set-shading-color", "entities": [ent.id()], "rgb": [2, 0, 0] }); else Engine.PostCommand(PlayerID, { "type": "set-shading-color", "entities": [ent.id()], "rgb": [0, 2, 0] }); @@ -223,8 +232,8 @@ ship.setStance(defaultStance); ship.setMetadata(PlayerID, "transporter", undefined); - if (ship.getMetadata(PlayerID, "role") == "switchToTrader") - ship.setMetadata(PlayerID, "role", "trader"); + if (ship.getMetadata(PlayerID, "role") == PETRA.Worker.ROLE_SWITCH_TO_TRADER) + ship.setMetadata(PlayerID, "role", PETRA.Worker.ROLE_TRADER); }; PETRA.TransportPlan.prototype.releaseAll = function() @@ -273,17 +282,13 @@ /** - * try to move on. There are two states: - * - "boarding" means we're trying to board units onto our ships - * - "sailing" means we're moving ships and eventually unload units - * - then the plan is cleared + * Try to move on and then clear the plan. */ - PETRA.TransportPlan.prototype.update = function(gameState) { - if (this.state == "boarding") + if (this.state == PETRA.TransportPlan.BOARDING) this.onBoarding(gameState); - else if (this.state == "sailing") + else if (this.state == PETRA.TransportPlan.SAILING) this.onSailing(gameState); return this.units.length; @@ -422,7 +427,7 @@ this.boardingPos[ship.id()] = this.getBoardingPos(gameState, ship, this.endIndex, this.sea, this.endPos, true); ship.move(this.boardingPos[ship.id()][0], this.boardingPos[ship.id()][1]); } - this.state = "sailing"; + this.state = PETRA.TransportPlan.SAILING; this.nTry = {}; this.unloaded = []; this.recovered = []; Index: binaries/data/mods/public/simulation/ai/petra/victoryManager.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/victoryManager.js +++ binaries/data/mods/public/simulation/ai/petra/victoryManager.js @@ -78,7 +78,7 @@ for (let worker of builders.values()) { worker.setMetadata(PlayerID, "base", base.ID); - worker.setMetadata(PlayerID, "subrole", "builder"); + worker.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_BUILDER); worker.setMetadata(PlayerID, "target-foundation", ent.id()); } } @@ -141,7 +141,7 @@ for (let entId of evt.entities) { let ent = gameState.getEntityById(entId); - if (ent && ent.isOwn(PlayerID) && ent.getMetadata(PlayerID, "role") == "criticalEntHealer") + if (ent && ent.isOwn(PlayerID) && ent.getMetadata(PlayerID, "role") == PETRA.Worker.ROLE_CRITICAL_ENT_HEALER) this.assignGuardToCriticalEnt(gameState, ent); } @@ -253,8 +253,8 @@ continue; // If this ent travelled to a criticalEnt's accessValue, try again to assign as a guard - if ((ent.getMetadata(PlayerID, "role") == "criticalEntHealer" || - ent.getMetadata(PlayerID, "role") == "criticalEntGuard") && !this.guardEnts.get(evt.entity)) + if ((ent.getMetadata(PlayerID, "role") == PETRA.Worker.ROLE_CRITICAL_ENT_HEALER || + ent.getMetadata(PlayerID, "role") == PETRA.Worker.ROLE_CRITICAL_ENT_GUARD) && !this.guardEnts.get(evt.entity)) { this.assignGuardToCriticalEnt(gameState, ent, ent.getMetadata(PlayerID, "guardedEnt")); continue; @@ -317,7 +317,7 @@ else { guardEnt.setMetadata(PlayerID, "plan", -1); - guardEnt.setMetadata(PlayerID, "role", undefined); + guardEnt.setMetadata(PlayerID, "role", PETRA.Worker.ROLE_NONE); this.guardEnts.delete(guardId); } @@ -363,12 +363,12 @@ { let guardEnt = gameState.getEntityById(guardId); if (!guardEnt || !guardEnt.hasClass("CitizenSoldier") || - guardEnt.getMetadata(PlayerID, "role") != "criticalEntGuard") + guardEnt.getMetadata(PlayerID, "role") != PETRA.Worker.ROLE_CRITICAL_ENT_GUARD) continue; guardEnt.removeGuard(); guardEnt.setMetadata(PlayerID, "plan", -1); - guardEnt.setMetadata(PlayerID, "role", undefined); + guardEnt.setMetadata(PlayerID, "role", PETRA.Worker.ROLE_NONE); this.guardEnts.delete(guardId); --data.guardsAssigned; @@ -451,7 +451,7 @@ return false; guardEnt.setMetadata(PlayerID, "plan", -2); - guardEnt.setMetadata(PlayerID, "role", "criticalEntGuard"); + guardEnt.setMetadata(PlayerID, "role", PETRA.Worker.ROLE_CRITICAL_ENT_GUARD); return true; }; @@ -547,7 +547,7 @@ { let queued = PETRA.returnResources(gameState, guardEnt); guardEnt.guard(criticalEnt, queued); - let guardRole = guardEnt.getMetadata(PlayerID, "role") == "criticalEntHealer" ? "healer" : "guard"; + const guardRole = guardEnt.getMetadata(PlayerID, "role") == PETRA.Worker.ROLE_CRITICAL_ENT_HEALER ? "healer" : "guard"; this.criticalEnts.get(criticalEntId).guards.set(guardEnt.id(), guardRole); // Switch this guard ent to the criticalEnt's base Index: binaries/data/mods/public/simulation/ai/petra/worker.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/worker.js +++ binaries/data/mods/public/simulation/ai/petra/worker.js @@ -1,3 +1,22 @@ +PETRA.Worker.ROLE_NONE = undefined; +PETRA.Worker.ROLE_ATTACK = "attack"; +PETRA.Worker.ROLE_TRADER = "trader"; +PETRA.Worker.ROLE_SWITCH_TO_TRADER = "switchToTrader"; +PETRA.Worker.ROLE_WORKER = "worker"; +PETRA.Worker.ROLE_CRITICAL_ENT_GUARD = "criticalEntGuard"; +PETRA.Worker.ROLE_CRITICAL_ENT_HEALER = "criticalEntHealer"; +PETRA.Worker.SUBROLE_NONE = undefined; +PETRA.Worker.SUBROLE_DEFENDER = "defender"; +PETRA.Worker.SUBROLE_IDLE = "idle"; +PETRA.Worker.SUBROLE_BUILDER = "builder"; +PETRA.Worker.SUBROLE_COMPLETING = "completing"; +PETRA.Worker.SUBROLE_WALKING = "walking"; +PETRA.Worker.SUBROLE_ATTACKING = "attacking"; +PETRA.Worker.SUBROLE_GATHERER = "gatherer"; +PETRA.Worker.SUBROLE_HUNTER = "hunter"; +PETRA.Worker.SUBROLE_FISHER = "fisher"; +PETRA.Worker.SUBROLE_GARRISONING = "garrisoning"; + /** * This class makes a worker do as instructed by the economy manager */ @@ -19,18 +38,18 @@ if (ent.getMetadata(PlayerID, "transport") !== undefined) { // Except if builder with their foundation destroyed, in which case cancel the transport if not yet on board - if (subrole == "builder" && ent.getMetadata(PlayerID, "target-foundation") !== undefined) + if (subrole == PETRA.Worker.SUBROLE_BUILDER && ent.getMetadata(PlayerID, "target-foundation") !== undefined) { let plan = gameState.ai.HQ.navalManager.getPlan(ent.getMetadata(PlayerID, "transport")); let target = gameState.getEntityById(ent.getMetadata(PlayerID, "target-foundation")); - if (!target && plan && plan.state == "boarding" && ent.position()) + if (!target && plan && plan.state == PETRA.TransportPlan.BOARDING && ent.position()) plan.removeUnit(gameState, ent); } // and gatherer if there are no more dropsite accessible in the base the ent is going to - if (subrole == "gatherer" || subrole == "hunter") + if (subrole == PETRA.Worker.SUBROLE_GATHERER || subrole == PETRA.Worker.SUBROLE_HUNTER) { let plan = gameState.ai.HQ.navalManager.getPlan(ent.getMetadata(PlayerID, "transport")); - if (plan.state == "boarding" && ent.position()) + if (plan.state == PETRA.TransportPlan.BOARDING && ent.position()) { let hasDropsite = false; let gatherType = ent.getMetadata(PlayerID, "gather-type") || "food"; @@ -72,9 +91,9 @@ else this.baseAccess = this.base.accessIndex; - if (!subrole) // subrole may-be undefined after a transport, garrisoning, army, ... + if (subrole == PETRA.Worker.SUBROLE_NONE) // subrole may-be undefined after a transport, garrisoning, army, ... { - ent.setMetadata(PlayerID, "subrole", "idle"); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_IDLE); this.base.reassignIdleWorkers(gameState, [ent]); this.update(gameState, ent); return; @@ -83,7 +102,7 @@ this.ent = ent; let unitAIState = ent.unitAIState(); - if ((subrole == "hunter" || subrole == "gatherer") && + if ((subrole == PETRA.Worker.SUBROLE_HUNTER || subrole == PETRA.Worker.SUBROLE_GATHERER) && (unitAIState == "INDIVIDUAL.GATHER.GATHERING" || unitAIState == "INDIVIDUAL.GATHER.APPROACHING" || unitAIState == "INDIVIDUAL.COMBAT.APPROACHING")) { @@ -156,7 +175,7 @@ // Also, if we are attacking, do not capture if (unitAIStateOrder == "COMBAT") { - if (subrole == "fisher") + if (subrole == PETRA.Worker.SUBROLE_FISHER) this.startFishing(gameState); else if (unitAIState == "INDIVIDUAL.COMBAT.APPROACHING" && ent.unitAIOrderData().length && !ent.getMetadata(PlayerID, "PartOfArmy")) @@ -193,7 +212,7 @@ // If we're gathering, we'll check that we haven't run idle. // And we'll also check that we're gathering a resource we want to gather. - if (subrole == "gatherer") + if (subrole == PETRA.Worker.SUBROLE_GATHERER) { if (ent.isIdle()) { @@ -290,7 +309,7 @@ } } } - else if (subrole == "builder") + else if (subrole == PETRA.Worker.SUBROLE_BUILDER) { if (unitAIStateOrder == "REPAIR") { @@ -307,7 +326,7 @@ return; } ent.setMetadata(PlayerID, "target-foundation", undefined); - ent.setMetadata(PlayerID, "subrole", "idle"); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_IDLE); ent.stopMoving(); if (this.baseID != gameState.ai.HQ.basesManager.baselessBase().ID) { @@ -328,7 +347,7 @@ let target = gameState.getEntityById(ent.getMetadata(PlayerID, "target-foundation")); if (!target || target.foundationProgress() === undefined && target.needsRepair() === false) { - ent.setMetadata(PlayerID, "subrole", "idle"); + ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_IDLE); ent.setMetadata(PlayerID, "target-foundation", undefined); if (this.baseID != gameState.ai.HQ.basesManager.baselessBase().ID) { @@ -348,7 +367,7 @@ gameState.ai.HQ.navalManager.requireTransport(gameState, ent, this.entAccess, goalAccess, target.position()); } } - else if (subrole == "hunter") + else if (subrole == PETRA.Worker.SUBROLE_HUNTER) { let lastHuntSearch = ent.getMetadata(PlayerID, "lastHuntSearch"); if (ent.isIdle() && (!lastHuntSearch || gameState.ai.elapsedTime - lastHuntSearch > 20)) @@ -395,7 +414,7 @@ } } } - else if (subrole == "fisher") + else if (subrole == PETRA.Worker.SUBROLE_FISHER) { if (ent.isIdle()) this.startFishing(gameState); @@ -412,13 +431,13 @@ { switch (subrole) { - case "gatherer": + case PETRA.Worker.SUBROLE_GATHERER: return this.startGathering(gameState); - case "hunter": + case PETRA.Worker.SUBROLE_HUNTER: return this.startHunting(gameState); - case "fisher": + case PETRA.Worker.SUBROLE_FISHER: return this.startFishing(gameState); - case "builder": + case PETRA.Worker.SUBROLE_BUILDER: return this.startBuilding(gameState); default: return false; @@ -587,7 +606,7 @@ if (foundation.getMetadata(PlayerID, "base") != this.baseID) this.ent.setMetadata(PlayerID, "base", foundation.getMetadata(PlayerID, "base")); this.ent.setMetadata(PlayerID, "target-foundation", foundation.id()); - this.ent.setMetadata(PlayerID, "subrole", "builder"); + this.ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_BUILDER); this.ent.repair(foundation); return true; } @@ -657,7 +676,7 @@ if (foundation.getMetadata(PlayerID, "base") != this.baseID) this.ent.setMetadata(PlayerID, "base", foundation.getMetadata(PlayerID, "base")); this.ent.setMetadata(PlayerID, "target-foundation", foundation.id()); - this.ent.setMetadata(PlayerID, "subrole", "builder"); + this.ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_BUILDER); return true; } } @@ -720,7 +739,7 @@ gameState.ai.HQ.lastFailedGather[resource] = gameState.ai.elapsedTime; if (gameState.ai.Config.debug > 2) API3.warn(" >>>>> worker with gather-type " + resource + " with nothing to gather "); - this.ent.setMetadata(PlayerID, "subrole", "idle"); + this.ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_IDLE); return false; }; @@ -925,8 +944,8 @@ this.ent.setMetadata(PlayerID, "target-foundation", undefined); return true; } - if (this.ent.getMetadata(PlayerID, "subrole") == "fisher") - this.ent.setMetadata(PlayerID, "subrole", "idle"); + if (this.ent.getMetadata(PlayerID, "subrole") == PETRA.Worker.SUBROLE_FISHER) + this.ent.setMetadata(PlayerID, "subrole", PETRA.Worker.SUBROLE_IDLE); return false; }; @@ -1006,7 +1025,7 @@ return; if (!forced && gameState.ai.elapsedTime < (ent.getMetadata(PlayerID, "nextMoveToGatherer") || 5)) return; - let gatherers = this.base.workersBySubrole(gameState, "gatherer"); + const gatherers = this.base.workersBySubrole(gameState, PETRA.Worker.SUBROLE_GATHERER); let dist = Math.min(); let destination; let access = PETRA.getLandAccess(gameState, ent); Index: binaries/data/mods/public/simulation/components/Trigger.js =================================================================== --- binaries/data/mods/public/simulation/components/Trigger.js +++ binaries/data/mods/public/simulation/components/Trigger.js @@ -192,7 +192,7 @@ } const cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); triggerData.timer = cmpTimer.SetInterval(this.entity, IID_Trigger, "DoAction", - triggerData.delay || 0, triggerData.interval, { "action": name }); + triggerData.delay || 0, triggerData.interval, { "name": name }); } else if (event == "OnRange") { @@ -343,7 +343,7 @@ */ Trigger.prototype.CallTrigger = function(event, name, eventData, evenIfDisabled = true) { - if (!this.triggers[event]?.[name]) + if (!this?.[event]?.[name]) { warn(`Trigger.js: called a trigger '${name}' for event '${event}' that wasn't found`); return;