diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000000..97b842b1013ae --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +yairm210@hotmail.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/android/Images.Icons/NotificationIcons/DollarSign.png b/android/Images.Icons/NotificationIcons/DollarSign.png index e4b12b601e40f..2ddda05404456 100644 Binary files a/android/Images.Icons/NotificationIcons/DollarSign.png and b/android/Images.Icons/NotificationIcons/DollarSign.png differ diff --git a/android/Images.Icons/NotificationIcons/RobotArm.png b/android/Images.Icons/NotificationIcons/RobotArm.png index edb9fa50bc826..debbbb6884a81 100644 Binary files a/android/Images.Icons/NotificationIcons/RobotArm.png and b/android/Images.Icons/NotificationIcons/RobotArm.png differ diff --git a/android/Images.Icons/NotificationIcons/RobotHeadRect.png b/android/Images.Icons/NotificationIcons/RobotHeadRect.png index 850779a2476ba..3e98ed1d2207e 100644 Binary files a/android/Images.Icons/NotificationIcons/RobotHeadRect.png and b/android/Images.Icons/NotificationIcons/RobotHeadRect.png differ diff --git a/android/Images.Icons/NotificationIcons/RobotHeadSquare.png b/android/Images.Icons/NotificationIcons/RobotHeadSquare.png index 97e56885a4f4b..9d9ab47b4c712 100644 Binary files a/android/Images.Icons/NotificationIcons/RobotHeadSquare.png and b/android/Images.Icons/NotificationIcons/RobotHeadSquare.png differ diff --git a/android/assets/Icons.atlas b/android/assets/Icons.atlas index 448feea83f33b..451a6412e75ad 100644 --- a/android/assets/Icons.atlas +++ b/android/assets/Icons.atlas @@ -55,105 +55,105 @@ CityStateIcons/Religious index: -1 EmojiIcons/Automate rotate: false - xy: 1987, 1766 + xy: 883, 907 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/Culture rotate: false - xy: 1987, 1592 + xy: 1987, 1708 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/Death rotate: false - xy: 1987, 1534 + xy: 1987, 1650 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/Faith rotate: false - xy: 1987, 1476 + xy: 1987, 1592 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/Food rotate: false - xy: 1987, 1418 + xy: 1987, 1534 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/Gold rotate: false - xy: 1190, 779 + xy: 1987, 1418 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/Great Artist rotate: false - xy: 1248, 792 + xy: 974, 980 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/Great Engineer rotate: false - xy: 1231, 1334 + xy: 1032, 995 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/Great General rotate: false - xy: 1289, 1334 + xy: 1090, 995 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/Great Merchant rotate: false - xy: 1347, 1334 + xy: 1148, 995 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/Great Scientist rotate: false - xy: 1405, 1334 + xy: 941, 907 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/Happiness rotate: false - xy: 1463, 1334 + xy: 941, 849 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/Production rotate: false - xy: 1224, 1218 + xy: 1115, 937 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/Science rotate: false - xy: 1340, 1276 + xy: 1173, 937 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/Turn rotate: false - xy: 1224, 1102 + xy: 1173, 879 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -398,14 +398,14 @@ ImprovementIcons/Road index: -1 ImprovementIcons/Terrace farm rotate: false - xy: 559, 882 + xy: 328, 362 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Trading post rotate: false - xy: 667, 822 + xy: 328, 146 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -496,28 +496,28 @@ StatIcons/Science index: -1 NotificationIcons/RobotArm rotate: false - xy: 1207, 850 - size: 87, 87 - orig: 87, 87 + xy: 900, 1038 + size: 100, 100 + orig: 100, 100 offset: 0, 0 index: -1 NotificationIcons/RobotHeadRect rotate: false - xy: 900, 1038 + xy: 1015, 1377 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NotificationIcons/RobotHeadSquare rotate: false - xy: 1015, 1377 + xy: 1123, 1377 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NotificationIcons/ServerRack rotate: false - xy: 1555, 1392 + xy: 1663, 1392 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -566,7 +566,7 @@ StatIcons/Movement index: -1 OtherIcons/BackArrow rotate: false - xy: 1987, 1708 + xy: 883, 849 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -636,7 +636,7 @@ OtherIcons/Cities index: -1 OtherIcons/CityState rotate: false - xy: 1987, 1650 + xy: 1987, 1766 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -734,7 +734,7 @@ OtherIcons/Fire index: -1 OtherIcons/ForwardArrow rotate: false - xy: 1987, 1360 + xy: 1987, 1476 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -762,7 +762,7 @@ OtherIcons/HexagonOutline index: -1 OtherIcons/Improvements rotate: false - xy: 1521, 1334 + xy: 883, 791 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -811,7 +811,7 @@ NotificationIcons/Working index: -1 OtherIcons/LockSmall rotate: false - xy: 1637, 1334 + xy: 1987, 1360 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -853,7 +853,7 @@ OtherIcons/NationSwap index: -1 OtherIcons/Nations rotate: false - xy: 1927, 1334 + xy: 1057, 937 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -881,7 +881,7 @@ OtherIcons/Options index: -1 OtherIcons/Pause rotate: false - xy: 1224, 1276 + xy: 1057, 879 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -1000,77 +1000,77 @@ OtherIcons/Undo index: -1 OtherIcons/Scenarios rotate: false - xy: 1231, 1392 + xy: 1339, 1392 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Search rotate: false - xy: 1339, 1392 + xy: 1447, 1392 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/SecretOptions rotate: false - xy: 1447, 1392 + xy: 1555, 1392 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Settings rotate: false - xy: 1663, 1392 + xy: 1771, 1392 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Shield rotate: false - xy: 1879, 1392 + xy: 1008, 1269 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Sleep rotate: false - xy: 1116, 1269 + xy: 1008, 1053 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Speaker rotate: false - xy: 1008, 1053 + xy: 1116, 1161 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Spy rotate: false - xy: 343, 1004 + xy: 335, 896 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Star rotate: false - xy: 335, 902 + xy: 328, 794 size: 100, 94 orig: 100, 94 offset: 0, 0 index: -1 OtherIcons/Swap rotate: false - xy: 451, 912 + xy: 328, 470 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Timer rotate: false - xy: 667, 930 + xy: 328, 254 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -1084,35 +1084,35 @@ OtherIcons/Triangle index: -1 OtherIcons/Turn right rotate: false - xy: 775, 822 + xy: 451, 1020 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Tyrannosaurus rotate: false - xy: 883, 930 + xy: 559, 990 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/WLTKD rotate: false - xy: 1099, 764 + xy: 883, 965 size: 83, 65 orig: 83, 65 offset: 0, 0 index: -1 OtherIcons/Wait rotate: false - xy: 991, 930 + xy: 559, 882 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Wonders rotate: false - xy: 1207, 945 + xy: 775, 822 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -1287,84 +1287,84 @@ ResourceIcons/Porcelain index: -1 ResourceIcons/Salt rotate: false - xy: 1123, 1377 + xy: 1231, 1392 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Sheep rotate: false - xy: 1771, 1392 + xy: 1879, 1392 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Silk rotate: false - xy: 1008, 1269 + xy: 1008, 1161 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Silver rotate: false - xy: 1008, 1161 + xy: 1116, 1269 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Spices rotate: false - xy: 1116, 1053 + xy: 343, 1004 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Stone rotate: false - xy: 451, 1020 + xy: 328, 686 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Sugar rotate: false - xy: 559, 990 + xy: 328, 578 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Truffles rotate: false - xy: 775, 930 + xy: 328, 38 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Uranium rotate: false - xy: 883, 822 + xy: 451, 912 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Whales rotate: false - xy: 991, 822 + xy: 667, 930 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Wheat rotate: false - xy: 1099, 945 + xy: 667, 822 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Wine rotate: false - xy: 1099, 837 + xy: 775, 930 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -1413,7 +1413,7 @@ StatIcons/Happiness index: -1 StatIcons/InterceptRange rotate: false - xy: 1579, 1334 + xy: 941, 791 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -1441,14 +1441,14 @@ TileIcons/Worked index: -1 StatIcons/Range rotate: false - xy: 1282, 1276 + xy: 1057, 821 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/RangedStrength rotate: false - xy: 1224, 1160 + xy: 1115, 879 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -1469,14 +1469,14 @@ StatIcons/Resistance index: -1 StatIcons/Specialist rotate: false - xy: 1116, 1161 + xy: 1116, 1053 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/Strength rotate: false - xy: 1282, 1218 + xy: 1115, 821 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -1511,28 +1511,28 @@ TileIcons/Locked index: -1 TileIcons/MapOverlayToggleMovement rotate: false - xy: 1695, 1334 + xy: 1206, 995 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 TileIcons/MapOverlayToggleResources rotate: false - xy: 1753, 1334 + xy: 999, 922 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 TileIcons/MapOverlayToggleWorkedTiles rotate: false - xy: 1811, 1334 + xy: 999, 864 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 TileIcons/MapOverlayToggleYields rotate: false - xy: 1869, 1334 + xy: 999, 806 size: 50, 50 orig: 50, 50 offset: 0, 0 diff --git a/android/assets/Icons.png b/android/assets/Icons.png index 7f7cdc309c0e3..f0acb1d27e71c 100644 Binary files a/android/assets/Icons.png and b/android/assets/Icons.png differ diff --git a/android/assets/jsons/Civ V - Gods & Kings/Nations.json b/android/assets/jsons/Civ V - Gods & Kings/Nations.json index 809197bd943b2..a2348180a555f 100644 --- a/android/assets/jsons/Civ V - Gods & Kings/Nations.json +++ b/android/assets/jsons/Civ V - Gods & Kings/Nations.json @@ -835,7 +835,7 @@ "favoredReligion": "Christianity", "uniqueName": "Dutch East India Company", "uniques": ["Retain [50]% of the happiness from a luxury after the last copy has been traded away"], - "cities": ["Amsterdam", "Rotterdam", "Utrecht", "Groningen", "Breda", "Nijmegen", "Den Haag", "Haarlem", "Arnhem", "Zutphen", "Maastricht", "Tilburg", "Eindhoven", "Dordrecht", "Leiden", "'s Hertogenbosch", "Almere", "Alkmaar", "Brielle", "Vlissingen", "Apeldoorn", "Enschede", "Amersfoort", "Zwolle", "Venlo", "Uden", "Grave", "Delft", "Gouda", "Nieuwstadt", "Weesp", "Coevorden", "Kerkrade"], + "cities": ["Amsterdam", "Rotterdam", "Utrecht", "Groningen", "Breda", "Nijmegen", "The Hague", "Haarlem", "Arnhem", "Zutphen", "Maastricht", "Tilburg", "Eindhoven", "Dordrecht", "Leiden", "'s Hertogenbosch", "Almere", "Alkmaar", "Brielle", "Vlissingen", "Apeldoorn", "Enschede", "Amersfoort", "Zwolle", "Venlo", "Uden", "Grave", "Delft", "Gouda", "Nieuwstadt", "Weesp", "Coevorden", "Kerkrade"], "spyNames": ["Joost", "Hendrika", "Marten", "Anke", "Guus", "Mr. X", "Dr. Grijs", "Willem", "Thijs", "Neef"] }, diff --git a/android/assets/jsons/translations/Afrikaans.properties b/android/assets/jsons/translations/Afrikaans.properties index 9c88b04e409a5..07bdf3b7b9833 100644 --- a/android/assets/jsons/translations/Afrikaans.properties +++ b/android/assets/jsons/translations/Afrikaans.properties @@ -10679,7 +10679,7 @@ Breda = # Requires translation! Nijmegen = # Requires translation! -Den Haag = +The Hague = # Requires translation! Haarlem = # Requires translation! diff --git a/android/assets/jsons/translations/Bangla.properties b/android/assets/jsons/translations/Bangla.properties index b93a86b8cbce4..2400006eebf1d 100644 --- a/android/assets/jsons/translations/Bangla.properties +++ b/android/assets/jsons/translations/Bangla.properties @@ -9923,7 +9923,7 @@ Breda = # Requires translation! Nijmegen = # Requires translation! -Den Haag = +The Hague = # Requires translation! Haarlem = # Requires translation! diff --git a/android/assets/jsons/translations/Belarusian.properties b/android/assets/jsons/translations/Belarusian.properties index 33578ebd5057f..714db3d354c5f 100644 --- a/android/assets/jsons/translations/Belarusian.properties +++ b/android/assets/jsons/translations/Belarusian.properties @@ -10364,7 +10364,7 @@ Breda = # Requires translation! Nijmegen = # Requires translation! -Den Haag = +The Hague = # Requires translation! Haarlem = # Requires translation! diff --git a/android/assets/jsons/translations/Bosnian.properties b/android/assets/jsons/translations/Bosnian.properties index e84d791157532..0313aea1536d7 100644 --- a/android/assets/jsons/translations/Bosnian.properties +++ b/android/assets/jsons/translations/Bosnian.properties @@ -10939,7 +10939,7 @@ Breda = # Requires translation! Nijmegen = # Requires translation! -Den Haag = +The Hague = # Requires translation! Haarlem = # Requires translation! diff --git a/android/assets/jsons/translations/Brazilian_Portuguese.properties b/android/assets/jsons/translations/Brazilian_Portuguese.properties index ca856996aff04..8b4371e399fcf 100644 --- a/android/assets/jsons/translations/Brazilian_Portuguese.properties +++ b/android/assets/jsons/translations/Brazilian_Portuguese.properties @@ -6155,7 +6155,7 @@ Utrecht = Utrecht Groningen = Groningen Breda = Breda Nijmegen = Nijmegen -Den Haag = Den Haag +The Hague = Den Haag Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen diff --git a/android/assets/jsons/translations/Bulgarian.properties b/android/assets/jsons/translations/Bulgarian.properties index d6b469ebf70bd..c79eb87a10ee3 100644 --- a/android/assets/jsons/translations/Bulgarian.properties +++ b/android/assets/jsons/translations/Bulgarian.properties @@ -8427,7 +8427,7 @@ Breda = # Requires translation! Nijmegen = # Requires translation! -Den Haag = +The Hague = # Requires translation! Haarlem = # Requires translation! diff --git a/android/assets/jsons/translations/Catalan.properties b/android/assets/jsons/translations/Catalan.properties index 169d1a02c1b1b..0dd171bf3b720 100644 --- a/android/assets/jsons/translations/Catalan.properties +++ b/android/assets/jsons/translations/Catalan.properties @@ -214,16 +214,14 @@ Current leader(s): [leaders], you: [yourScore] = Líder(s) actual(s): [leaders], Demands = Demandes # Will be deprecated in a few versions Please don't settle new cities near us. = No fundeu més ciutats prop de les nostres fronteres. - # Requires translation! -Don't settle new cities near us. = +Don't settle new cities near us. = No fundeu ciutats a prop nostre. Very well, we shall look for new lands to settle. = Molt bé, buscarem altres terres per expandir-nos. We shall do as we please. = Farem el que vulguem. We noticed your new city near our borders, despite your promise. This will have....implications. = Hem vist que heu construït una altra ciutat prop de la nostra frontera, tot i el vostre compromís que no ho faríeu. Això tindrà... conseqüències. # Will be deprecated in a few versions Please don't spread your religion to us. = No difongueu la vostra religió al nostre territori. - # Requires translation! -Don't spread religion in our cities. = +Don't spread religion in our cities. = No difongueu la vostra religió a les nostres ciutats. Very well, we shall spread our faith elsewhere. = Molt bé. La difondrem en algun altre lloc. We noticed you have continued spreading your faith, despite your promise. This will have...consequences. = Hem vist com heu continuat difonent la vostra religió, tot i la vostra promesa. Això tindrà conseqüències. @@ -585,7 +583,7 @@ This map has errors: = Aquest mapa té errors: The incompatible elements have been removed. = s’ha tret els elements incompatibles. Current map: World Wrap = Mapa actual: Mapa envoltant Overlay image = Imatge superposada -Click to choose a file = Feu cloc per a escollir un fitxer. +Click to choose a file = Selecciona un fitxer Choose an image = Escolliu una imatge Overlay opacity: = Opacitat de la imatge superposada Invalid overlay image = Imatge superposada no vàlida @@ -1846,11 +1844,10 @@ Our spy [spyName] failed to stage a coup in [cityStateName] and was killed! = El Do you want to stage a coup in [civName] with a [percent]% chance of success? = Voleu fer un cop d’estat contra [civName] amb un [percent] % de probabilitat d’èxit? # Spy fleeing city -After the city of [cityName] was destroyed, your spy [spyName] has fled back to our hideout. = Després que [cityName] fou destruïda, [spyName], un espia que treballava a les vostres ordres, ha fugit i ha tornat al nostre amagatall. -After the city of [cityName] was conquered, your spy [spyName] has fled back to our hideout. = Després que [cityName] fou conquerida, [spyName], un espia que treballava a les vostres ordres, ha fugit i ha tornat al nostre amagatall. - # Requires translation! -After the city of [cityName] was taken over, your spy [spyName] has fled back to our hideout. = -Due to the chaos ensuing in [cityName], your spy [spyName] has fled back to our hideout. = Degut al caos que hi ha a [cityName], [spyName] ‒un espia que treballa per a vós‒ ha hagut de fugir i ha tornat al nostre amagatall. +After the city of [cityName] was destroyed, your spy [spyName] has fled back to our hideout. = Després que [cityName] fou destruïda, [spyName], un espia que treballava a les vostres ordres, ha fugit i ha tornat al seu amagatall. +After the city of [cityName] was conquered, your spy [spyName] has fled back to our hideout. = Després que [cityName] fou conquerida, [spyName], un espia que treballava a les vostres ordres, ha fugit i ha tornat al seu amagatall. +After the city of [cityName] was taken over, your spy [spyName] has fled back to our hideout. = Després que [cityName] caigués, [spyName], un espia vostre, ha fugit fins al seu amagatall. +Due to the chaos ensuing in [cityName], your spy [spyName] has fled back to our hideout. = Degut al caos que hi ha a [cityName], [spyName] ‒un espia que treballa per a vós‒ ha hagut de fugir i ha tornat al seu amagatall. # Promotions @@ -5743,8 +5740,7 @@ Recycling Center = Centre de reciclatge Great Firewall = Gran Tallafocs - # Requires translation! -'Distrust and caution are the parents of security.' - Benjamin Franklin = +'Distrust and caution are the parents of security.' - Benjamin Franklin = «La precaució i la desconfiança són els pares de la seguretat.» - Benjamin Franklin CN Tower = Torre CN 'Nothing travels faster than light with the possible exception of bad news, which obeys its own special rules.' - Douglas Adams = «No hi ha res que viatgi més ràpid que la llum amb l’única excepció de les males notícies, que obeeixen unes regles especials.» - Douglas Adams @@ -6153,7 +6149,7 @@ Utrecht = Utrecht Groningen = Groningen Breda = Breda Nijmegen = Nijmegen -Den Haag = Den Haag +The Hague = Den Haag Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen @@ -7121,18 +7117,15 @@ The arrow keys allow navigation as well - left/right for categories, up/down for UI Tips = Consells d’ús de la interfície World screen = Vista del món Skip all units to end a turn quickly = Salta totes les unitats i acaba el torn de pressa - # Requires translation! -Right-click or long press the "Next unit" button to open a popup menu which allows to end a turn without having to cycle through all units. If some units are automated, a dedicated button is available to move them before ending the turn. = +Right-click or long press the "Next unit" button to open a popup menu which allows to end a turn without having to cycle through all units. If some units are automated, a dedicated button is available to move them before ending the turn. = Feu clic amb el botó dret o manteniu premut el botó de «Propera unitat» per a obrir un menú emergent que permet acabar el torn sense haver de passar per totes les unitats. Si algunes unitats estan automatitzades, hi haurà un botó especial per a moure-les abans d’acabar el torn. Toggle notification list display = Mostra/Amaga la llista de notificacions On the World screen, swipe the notification list to the right to temporarily hide it. Click the "Bell" button to display them again. = A la vista del món, llisqueu la llista de notificacions a la dreta per a amagar-la temporalment. Si feu clic al botó amb forma de campana, es tornarà a mostrar la llista. - # Requires translation! -The default state for the notification list can be set in Options > Display > UI - Notifications on world screen. = +The default state for the notification list can be set in Options > Display > UI - Notifications on world screen. = L’estat per defecte de la llista de notificació es pot establir a Opcions → Vídeo → Interfície gràfica ‒ Notificacions a la vista del món. Entering a City Screen quickly = Com entrar a la vista de ciutat de pressa # Requires translation! You can Right-click or long press a city button on the World screen. The result is the same as tapping it twice - once to select and move the button, again to trigger a reaction: show the City Screen (if the city is yours to inspect), or offer the foreign city info popup. = Upgrade multiple units of the same type = Com millorar diverses unitats del mateix tipus - # Requires translation! -On the World screen, select an unit that can be upgraded, then right-click or long press the "Upgrade" button to open a popup menu allowing to upgrade all units of this type at once. = +On the World screen, select an unit that can be upgraded, then right-click or long press the "Upgrade" button to open a popup menu allowing to upgrade all units of this type at once. = A la vista del món, seleccioneu una unitat que es pugui millorar i feu clic amb el botó dret o mantingueu premut el botó de «Millora» per a obrir un menú emergent que permet millorar totes les unitats d’aquest tipus a la vegada. # Requires translation! In the Units overview, the same upgrade menu is available by clicking the unit icon in the "Upgrade" column. When an unit is upgradeable, the icon is lit if conditions are met (enough gold and/or resources), otherwise it is dimmed. = Additional controls for the construction queue = Controls addicionals de la cua de construcció @@ -7140,16 +7133,13 @@ Additional controls for the construction queue = Controls addicionals de la cua Right-click or long press a construction item to open a popup menu with additional controls, allowing to manage production of the same item in all cities, by issuing the commands from the same City Screen. = # Requires translation! The "Disable" option moves an item to a separated "Disabled" tab, preventing its automatic queueing by the "Auto-assign city production" option. To move a disabled item back to its initial place, enter again the popup menu, and choose "Enable". = - # Requires translation! -Disabled items are set globally and persistent: they are not reset in a new game, or by restarting Unciv. = +Disabled items are set globally and persistent: they are not reset in a new game, or by restarting Unciv. = Els elements desactivats es poden establir de manera global i persistent: no es restableixen si es comença una partida nova ni quan es reinicia l’Unciv. Show Great Person Points breakdown = Mostra un resum dels punts de Gran Personatge In the right sidepanel, click a Great People row to display the details of Great Person Points (GPP) accumulated each turn by the current city, for this type of Great People. = Al panell de la dreta, feu clic a una fila de gran personatge per a mostrar els detalls del punts de gran personatge (PGP) que s’acumulen cada torn a la ciutat actual per a aquest tipus de gran personatge. - # Requires translation! -Click any of the Great People icons to display all GPP accumulated each turn by the current city, for all types of Great People. = +Click any of the Great People icons to display all GPP accumulated each turn by the current city, for all types of Great People. = Feu clic a qualsevol icona de gran personatge per a mostrar tots els punts de gran personatge que s’acumulen a cada torn a la ciutat acutal. Es mostraran els punts de tots els tipus de gran personatge. Tech screen = Vista de tecnologies Queue multiple technologies in different branches = Posa a la cua diverses tecnologies de branques diferents - # Requires translation! -On the Tech screen, right-click or long press a technology to automatically queue it, even if this tech is in another branch than the item currently researched. Prerequisite techs to research will also be automatically queued. = +On the Tech screen, right-click or long press a technology to automatically queue it, even if this tech is in another branch than the item currently researched. Prerequisite techs to research will also be automatically queued. = A la vista de tecnologies, feu clic amb el botó dret o mantingueu premut el botó d’alguna tecnologia per a afegir-la a la cua, encara que sigui d’una tecnologia d’una branca diferent a la de la tecnologia que es recerqui en aquell moment. Les tecnologies requerides també s’afegiran automàticament a la cua. Right-click or long press multiple techs to append them to the research queue, whatever their branch is. = Feu clic amb el botó dret o feu un toc llarg a diverses tecnologies per a afegir-les a la cua de recerca, sense importar en quina branca estiguin. Overview screens = Vistes generals Reveal known resources on world screen = Mostra els recursos coneguts a la vista del món @@ -7158,8 +7148,7 @@ In the Resources overview, click on a resource icon to center the world screen o Alternatively, click on the "Unimproved" number to center the world screen only on owned (by you or your allied City-states) tiles where the resource is not improved. = If more than one tile is available, click repeatedly on the notification to cycle through all of them. = Si hi ha més d’una casella disponible, feu clic diverses vegades a la notificació per a passar per totes elles. Show diagram line colors = Mostra els colors de les línies del diagrama - # Requires translation! -In Politics overview > Show diagram, you can click anywhere inside the diagram to display a table listing all relationship line colors and their meaning. = +In Politics overview > Show diagram, you can click anywhere inside the diagram to display a table listing all relationship line colors and their meaning. = A Política → Mostra diagrama, podeu fer clic a qualsevol lloc de dins del diagrama per a mostrar una taula amb línies que mostren quin tipus de relació hi ha entre les civilitzacions. Miscellaneous = Miscel·lània External links = Enllaços externs External links support right-click or long press to copy the link to the clipboard instead of launching the browser. = Els enllaços externs suporten clics amb el botó dret o tocs llargs per a copiar l’enllaç al porta-retalls en lloc de seguir l’enllaç amb un navegador. diff --git a/android/assets/jsons/translations/Croatian.properties b/android/assets/jsons/translations/Croatian.properties index 3d3d0377763a4..305f2929cd5e6 100644 --- a/android/assets/jsons/translations/Croatian.properties +++ b/android/assets/jsons/translations/Croatian.properties @@ -46,13 +46,13 @@ Civ V - Gods & Kings = Civ V - Bogovi i Kraljevi Move a unit!\nClick on a unit > Click on a destination > Click the arrow popup = Pokrenite jedinicu!\nKliknite na jedinicu > Kliknite na odredište > Kliknite na iskočnu strelicu Found a city!\nSelect the Settler (flag unit) > Click on 'Found city' (bottom-left corner) = Osnujte grad!\nOdaberite Naseljenika (jedinica sa zastavom) > Kliknite na 'Osnuj grad' (donji lijevi ugao) -Enter the city screen!\nClick the city button twice = Uđite u zaslon grada!\nDva puta kliknite na dugme grada -Pick a technology to research!\nClick on the tech button (greenish, top left) > \n Select technology > Click 'Research' (bottom right) = Odaberite tehnologiju za istraživanje!\nKliknite na dugme za tehnologije (zelenkasto, gore lijevo) > \n Odaberite tehnologiju > kliknite 'Istraži' (dolje desno) +Enter the city screen!\nClick the city button twice = Uđite u zaslon grada!\nDva puta kliknite na gumb grada +Pick a technology to research!\nClick on the tech button (greenish, top left) > \n Select technology > Click 'Research' (bottom right) = Odaberite tehnologiju za istraživanje!\nKliknite na gumb za tehnologije (zelenkasto, gore lijevo) > \n Odaberite tehnologiju > kliknite 'Istraži' (dolje desno) Pick a construction!\nEnter city screen > Click on a unit or building (bottom left side) > \n Click 'add to queue' = Odaberite izgradnju!\nUđite u zaslon grada > Kliknite na jedinicu ili zgradu (donja lijeva strana) > \n Kliknite 'dodaj u red čekanja' Pass a turn!\nCycle through units with 'Next unit' > Click 'Next turn' = Propustite potez!\nKružite kroz jedinice pomoću 'Sljedeća jedinica' > Kliknite 'Sljedeći potez' Reassign worked tiles!\nEnter city screen > Click the assigned (green) tile to unassign > \n Click an unassigned tile to assign population = Ponovno dodijelite obrađivana polja!\nUđite u zaslon grada > Kliknite dodijeljeno (zeleno) polje za poništavanje dodjele > \n Kliknite na nedodijeljeno polje za dodjelu stanovnika Meet another civilization!\nExplore the map until you encounter another civilization! = Sretnite drugu civilizaciju!\nIstražujte kartu dok ne naiđeš na drugu civilizaciju! -Open the options table!\nClick the menu button (top left) > Click 'Options' = Otvorite tablicu opcija!\nKliknite dugme izbornika (gore lijevo) > Klikni 'Opcije' +Open the options table!\nClick the menu button (top left) > Click 'Options' = Otvorite tablicu opcija!\nKliknite gumb izbornika (gore lijevo) > Klikni 'Opcije' Construct an improvement!\nConstruct a Worker unit > Move to a Plains or Grassland tile > \n Click 'Construct improvement' (above the unit table, bottom left)\n > Choose the farm > \n Leave the worker there until it's finished = Izgradite unaprjeđenje!\nIzgradite jedinicu Radnika > Pomaknite ga na polje Ravnica ili Travnjak > \n Kliknite 'Izgradi unaprjeđenje' (iznad tablice jedinica, dolje lijevo)\n > Odaberite farmu > \n Ostavite radnika tamo dok ne završi Create a trade route!\nConstruct roads between your capital and another city\nOr, automate your worker and let him get to that eventually = Stvorite trgovačku rutu!\nIzgradite ceste između svoje prijestolnice i drugog grada\nIli, automatizirajte svog radnika i pustite ga da eventualno dođe do toga Conquer a city!\nBring an enemy city down to low health > \nEnter the city with a melee unit = Osvojite grad!\nSpustite neprijateljski grad na nisko zdravlje > \nUđite u grad s jedinicom za blisku borbu @@ -61,19 +61,19 @@ See your stats breakdown!\nEnter the Overview screen (top right corner) >\nClick # Crash screen -An unrecoverable error has occurred in Unciv: = Došlo je do nepopravljive pogreške u Unciv: +An unrecoverable error has occurred in Unciv: = Došlo je do nepopravljive pogreške u Unciv-u: If this keeps happening, you can try disabling mods. = Ako se to nastavi događati, možete pokušati onemogućiti modove. You can also report this on the issue tracker. = Ovo također možete prijaviti na alatu za praćenje problema. Copy = Kopiraj Error report copied. = Izvješće o pogrešci kopirano. -Open Issue Tracker = Otvori Praćenje problema +Open Issue Tracker = Otvori Praćenje Problema Please copy the error report first. = Molim prvo kopirajte izvješće o pogrešci. Close Unciv = Zatvori Unciv # Buildings Unsellable = Ne može se prodati -Not displayed as an available construction unless [building] is built = Ne prikazuje se kao dostupna izgradnja osim ako [building] nije izgrađena +Not displayed as an available construction unless [building] is built = Ne prikazuje se kao dostupna izgradnja osim ako [building] nije izgrađeno Not displayed as an available construction without [resource] = Ne prikazuje se kao dostupna izgradnja bez [resource] Cannot be hurried = Ne može se požuriti @@ -97,16 +97,16 @@ Requires [buildingName] to be built in the city = Zahtijeva da [buildingName] bu Requires [buildingName] to be built in all cities = Zahtijeva da [buildingName] bude izgrađeno u svim gradovima Provides a free [buildingName] in the city = Pruža besplatno [buildingName] u gradu Requires worked [resource] near city = Zahtijeva obrađivani [resource] u blizini grada -Requires at least one of the following resources worked near the city: = Zahtijeva barem jedan od sljedećih resursa koji se obrađuju u blizini grada: +Requires at least one of the following resources worked near the city: = Zahtijeva barem jedan od sljedećih obrađivanih resursa u blizini grada: Wonder is being built elsewhere = Čudo se gradi negdje drugdje National Wonder is being built elsewhere = Nacionalno Čudo se gradi negdje drugdje Requires a [buildingName] in all [cityFilter] cities = Zahtijeva [buildingName] u svim [cityFilter] gradovima Requires a [buildingName] in at least [amount] of [cityFilter] cities = Zahtijeva [buildingName] u najmanje [amount] od [cityFilter] gradova -[buildingName] required: = [buildingName] potrebno: +[buildingName] required: = Potrebno [buildingName]: Requires a [buildingName] in this city = Zahtijeva [buildingName] u ovom gradu Cannot be built with [buildingName] = Ne može se graditi s [buildingName] Consumes [amount] [resource] = Troši [amount] [resource] -Need [amount] more [resource] = Potrebno [amount] više [resource] +Need [amount] more [resource] = Treba [amount] više [resource] [amount] available = [amount] dostupno Required tech: [requiredTech] = Potrebna tehnologija: [requiredTech] Requires [PolicyOrNationalWonder] = Zahtijeva [PolicyOrNationalWonder] @@ -154,7 +154,7 @@ Sounds good! = Zvuči dobro! Not this time. = Ne ovaj put. Excellent! = Izvrsno! How about something else... = Može nešto drugo... -A pleasure to meet you. = Zadovoljstvo mi je upoznati vas. +A pleasure to meet you. = Zadovoljstvo mi je upoznati te. Our relationship = Naš odnos We have encountered the City-State of [name]! = Susreli smo se s Gradom-Državom [name]! Declare Friendship ([numberOfTurns] turns) = Objavi Prijateljstvo ([numberOfTurns] poteza) @@ -189,7 +189,7 @@ They promised not to settle near us ([count] turns remaining) = Obećali su da s We promised not to spread religion to them ([count] turns remaining) = Obećali smo da im nećemo širiti religiju (preostalo [count] poteza) They promised not to spread religion to us ([count] turns remaining) = Obećali su da nam da neće širiti religiju (preostalo [count] poteza) -[civName] is upset that you demanded tribute from [cityState], whom they have pledged to protect! = [civName] je uznemirena što ste tražili danak od [cityState], koga su oni obećali štititi! +[civName] is upset that you demanded tribute from [cityState], whom they have pledged to protect! = [civName] je uznemirena što ste zahtijevali danak od [cityState], koga su oni obećali štititi! [civName] is upset that you attacked [cityState], whom they have pledged to protect! = [civName] je uznemirena što ste napali [cityState], koga su oni obećali štititi! [civName] is upset that you attacked [cityState], whom they are allied with! = [civName] je uznemirena što ste napali [cityState], s kojim su u savezu! [civName] is outraged that you destroyed [cityState], whom they had pledged to protect! = [civName] je ogorčena što ste uništili [cityState], koga su oni obećali štititi! @@ -268,7 +268,7 @@ City-States grow wary of your aggression. The resting point for Influence has de [cityState] is being attacked by [civName]! Kill [amount] of the attacker's military units and they will be immensely grateful. = [cityState] je napadnut od [civName]! Ubij [amount] vojnih jedinica napadača i oni će ti biti neizmjerno zahvalni. [cityState] is deeply grateful for your assistance in the war against [civName]! = [cityState] je duboko zahvalan za tvoju pomoć u ratu protiv [civName]! [cityState] no longer needs your assistance against [civName]. = [cityState] više ne treba tvoju pomoć protiv [civName]. -[cityState] cancelled the quests they had given you because you demanded tribute from them. = [cityState] je otkazao misije koje su vam dali jer ste od njih tražili danak. +[cityState] cancelled the quests they had given you because you demanded tribute from them. = [cityState] je otkazao misije koje su vam dali jer ste od njih zahtijevali danak. War against [civName] = Rat protiv [civName] We need you to help us defend against [civName]. Killing [amount] of their military units would slow their offensive. = Trebamo te da nam pomogneš u obrani od [civName]. Ubijanje [amount] njihovih vojnih jedinica bi usporilo njihovu ofenzivu. Currently you have killed [amount] of their military units. = Trenutačno ste ubili [amount] njihovih vojnih jedinica. @@ -294,7 +294,7 @@ When Friends: = Kada ste Prijatelji: When Allies: = Kada ste Saveznici: The unique luxury is one of: = Unikatni luksuz je jedno od: Demand Tribute = Zahtijevaj Danak -Tribute Willingness = Spremnost na Danak +Tribute Willingness = Voljnost na Danak At least 0 to take gold, at least 30 and size 4 city for worker = Najmanje 0 za uzimanje zlata, najmanje 30 i grad veličine 4 za radnika Take [amount] gold (-15 Influence) = Uzmi [amount] zlata (-15 Utjecaja) Take worker (-50 Influence) = Uzmi radnika (-50 Utjecaja) @@ -371,10 +371,10 @@ Available nations = Dostupne nacije Banned nations = Zabranjeni narodi Are you sure you want to reset all game options to defaults? = Jeste li sigurni da želite resetirati sve opcije igre na zadano? Start game! = Pokreni igru! -Map Options = Opcije Mape +Map Options = Opcije Karte Game Options = Opcije Igre Civilizations = Civilizacije -Map Type = Tip Mape +Map Type = Tip Karte Map file = Datoteka karte Max Turns = Maksimalno poteza Could not load map! = Nije moguće učitati kartu! @@ -383,7 +383,7 @@ Random Generated = Nasumično Generirana Which options should be available to the random selection? = Koje bi opcije trebale biti dostupne nasumičnom odabiru? Existing = Postojeće Custom = Prilagođeno -Map Generation Type = Vrste Generiranja Mape +Map Generation Type = Vrsta Generiranja Karte Enabled Map Generation Types = Omogućene Vrste Generiranja Karte # Map types @@ -419,14 +419,14 @@ Domination = Dominacijska Cultural = Kulturna Diplomatic = Diplomatska Time = Vremenska -Your previous options needed to be reset to defaults. = Vaše prethodne opcije trebalo je resetirati na zadane. +Your previous options needed to be reset to defaults. = Vaše prethodne opcije bilo je potrebno resetirati na zadane. # Used for random nation indicator in empire selector and unknown nation icons in various overview screens. # Should be a single character, or at least visually square. ? = ? -Map Shape = Oblik Mape -Enabled Map Shapes = Omogućeni Oblici Mapa +Map Shape = Oblik Karte +Enabled Map Shapes = Omogućeni Oblici Karte Hexagonal = Heksagonalna Flat Earth Hexagonal = Heksagonalna Ravna Zemlja Rectangular = Pravokutna @@ -521,7 +521,7 @@ Base Ruleset = Osnovni skup pravila [amount] Beliefs = [amount] Vjerovanja World Wrap = Okret oko Svijeta -World wrap maps are very memory intensive - creating large world wrap maps on Android can lead to crashes! = Mape s okretom oko svijeta su vrlo intenzivne na memoriju - stvaranje velikih karti s okretom oko svijeta na Androidu može dovesti do rušenja! +World wrap maps are very memory intensive - creating large world wrap maps on Android can lead to crashes! = Karte s okretom oko svijeta su vrlo intenzivne na memoriju - stvaranje velikih karti s okretom oko svijeta na Androidu može dovesti do rušenja! Anything above 80 by 50 may work very slowly on Android! = Sve iznad 80 x 50 može raditi vrlo sporo na Androidu! Anything above 40 may work very slowly on Android! = Sve iznad 40 može raditi vrlo sporo na Androidu! @@ -548,7 +548,7 @@ Exit map editor = Izađi iz uređivača karte Change map ruleset = Promjeni skup pravila karte Change the map to use the ruleset selected on this page = Promijenite kartu da biste koristili skup pravila odabran na ovoj stranici Revert to map ruleset = Vrati na skup pravila karte -Reset the controls to reflect the current map ruleset = Resetiraj kontrole da odražavaju trenutačni skup pravila karte +Reset the controls to reflect the current map ruleset = Resetirajte kontrole da odražavaju trenutačni skup pravila karte Features = Značajke Starting locations = Početne lokacije Tile Matching Criteria = Kriteriji Podudaranja Polja @@ -557,7 +557,7 @@ Except improvements = Osim unaprjeđenja Base and terrain features = Osnovna i terenska obilježja Base terrain only = Samo osnovni teren Land or water only = Samo kopno ili voda -Import a Wesnoth map = Uvezite kartu Wesnotha +Import a Wesnoth map = Uvezi Wesnoth kartu ## Labels/messages Brush ([size]): = Četka ([size]): @@ -577,7 +577,7 @@ Area: [amount] tiles, [amount2]% water, [amount3]% impassable, [amount4] contine Do you want to leave without saving the recent changes? = Želite li napustiti bez spremanja nedavnih promjena? Leave = Napusti Do you want to load another map without saving the recent changes? = Želite li učitati drugu kartu bez spremanja nedavnih promjena? -River generation failed! = Generiranje rijeka nije uspjela! +River generation failed! = Generiranje rijeka nije uspjelo! Please don't use step 'Landmass' with map type 'Empty', create a new empty map instead. = Molim nemojte koristiti korak 'Kopnena masa' s vrstom karte 'Prazno', umjesto toga izradite novu praznu kartu. This map has errors: = Ova karta ima greške: The incompatible elements have been removed. = Nekompatibilni elementi su uklonjeni. @@ -589,10 +589,10 @@ Overlay opacity: = Neprozirnost sloja: Invalid overlay image = Nevaljana slika sloja World wrap is incompatible with an overlay and was deactivated. = Okret oko svijeta nije kompatibilan s preklapanjem i deaktiviran je. An overlay image is incompatible with world wrap and was deactivated. = Slika preklapanja nije kompatibilna s okretom oko svijeta i deaktivirana je. -Choose a Wesnoth map file = Odaberite datoteku karte Wesnotha +Choose a Wesnoth map file = Odaberite datoteku Wesnoth karte That map is invalid! = Ta je karta nevaljana! ("[code]" does not conform to TerrainCodesWML) = ("[code]" nije u skladu s TerrainCodesWML) -Use for new game "Select players" button: = Za novu igru koristite dugme "Odaberi igrače": +Use for new game "Select players" button: = Za novu igru koristite gumb "Odaberi igrače": Enter a description for the users of this map = Unesite opis za korisnike ove karte ## Map/Tool names @@ -657,7 +657,7 @@ Player ID is already in your friends list! = ID igrača je već na vašoj listi You have to write a name for your friend! = Morate napisati ime za svog prijatelja! You have to write an ID for your friend! = Morate napisati ID za svog prijatelja! You cannot add your own player ID in your friend list! = Ne možete dodati vlastiti ID igrača na svoju listu prijatelja! -To add a friend, ask him to send you his player ID.\nClick the 'Add friend' button.\nInsert his player ID and a name for him.\nThen Click the 'Add friend' button again.\n\nAfter that you will see him in your friends list.\n\nA new button will appear when creating a new\nmultiplayer game, which allows you to select your friend. = Da biste dodali prijatelja, zamolite ga da vam pošalje svoj ID igrača.\nKliknite dugme 'Dodaj prijatelja'.\nUnesite njegov ID igrača i njegovo ime za njega.\nZatim ponovno kliknite dugme 'Dodaj prijatelja'.\n\nNakon toga vidjet ćete ga na svom popisu prijatelja.\n\nNovo dugme će se pojaviti kada stvorite novu\nigru više igrača, što vam omogućuje da odaberete svog prijatelja. +To add a friend, ask him to send you his player ID.\nClick the 'Add friend' button.\nInsert his player ID and a name for him.\nThen Click the 'Add friend' button again.\n\nAfter that you will see him in your friends list.\n\nA new button will appear when creating a new\nmultiplayer game, which allows you to select your friend. = Da biste dodali prijatelja, zamolite ga da vam pošalje svoj ID igrača.\nKliknite gumb 'Dodaj prijatelja'.\nUnesite njegov ID igrača i njegovo ime za njega.\nZatim ponovno kliknite gumb 'Dodaj prijatelja'.\n\nNakon toga vidjet ćete ga na svom popisu prijatelja.\n\nNovi gumb će se pojaviti kada stvorite novu\nigru više igrača, što vam omogućuje da odaberete svog prijatelja. Please input Player ID! = Molim unesite ID igrača! The number of players will be adjusted = Broj igrača će biti prilagođeno These [numberOfPlayers] players will be adjusted = Ovih [numberOfPlayers] igrača će biti prilagođeni @@ -665,10 +665,10 @@ These [numberOfPlayers] players will be adjusted = Ovih [numberOfPlayers] igrač Set current user = Postavi trenutačnog korisnika Player ID from clipboard = ID igrača iz međuspremnika Player ID from friends list = ID igrača s liste prijatelja -To create a multiplayer game, check the 'multiplayer' toggle in the New Game screen, and for each human player insert that player's user ID. = Da biste kreirali igru više igrača, označite prekidač 'igra više igrača' na zaslonu Nova Igra i za svakog ljudskog igrača umetnite korisnički ID tog igrača. +To create a multiplayer game, check the 'multiplayer' toggle in the New Game screen, and for each human player insert that player's user ID. = Da biste stvorili igru više igrača, označite prekidač 'igra više igrača' na zaslonu Nova Igra i za svakog ljudskog igrača umetnite korisnički ID tog igrača. You can assign your own user ID there easily, and other players can copy their user IDs here and send them to you for you to include them in the game. = Tamo možete lako dodijeliti svoj korisnički ID, a drugi igrači mogu ovdje kopirati svoje korisničke ID-ove i poslati ih vama kako biste ih uključili u igru. Once you've created your game, the Game ID gets automatically copied to your clipboard so you can send it to the other players. = Nakon što stvorite svoju igru, ID Igre automatski se kopira u vaš međuspremnik kako biste ga mogli poslati drugim igračima. -Players can enter your game by copying the game ID to the clipboard, and clicking on the 'Add multiplayer game' button = Igrači mogu ući u vašu igru kopiranjem ID-a igre u međuspremnik i klikom na dugme "Dodaj igru više igrača" +Players can enter your game by copying the game ID to the clipboard, and clicking on the 'Add multiplayer game' button = Igrači mogu ući u vašu igru kopiranjem ID-a igre u međuspremnik i klikom na gumb "Dodaj igru više igrača" The symbol of your nation will appear next to the game when it's your turn = Simbol vaše nacije pojavit će se pored igre kada ste na potezu Back = Nazad Rename = Preimenuj @@ -809,7 +809,7 @@ Hidden = Skriveno Visible = Vidljivo Permanent = Trajno -Minimap size = Veličina mini mape +Minimap size = Veličina mini karte # This is the leftmost Minimap size slider position off = isključeno @@ -818,7 +818,7 @@ Reset tutorials = Resetiraj poduke Do you want to reset completed tutorials? = Želite li resetirati dovršene poduke? Reset = Resetiraj -Show zoom buttons in world screen = Pokaži dugmad za zumiranje na zaslonu svijeta +Show zoom buttons in world screen = Pokaži gumbe za zumiranje na zaslonu svijeta Experimental Demographics scoreboard = Eksperimentalna Demografska tablica rezultata Never close popups by clicking outside = Nikada ne zatvaraj skočne prozore klikom izvana @@ -929,14 +929,14 @@ Debug = Otklanjanje pogrešaka Show = Pokaži Hide = Sakrij HIGHLY EXPERIMENTAL - YOU HAVE BEEN WARNED! = VRLO EKSPERIMENTALNO - UPOZORENI STE! -You need to restart the game for this change to take effect. = Morate ponovno pokrenuti igru kako bi ova promjena stupila na snagu. +You need to restart the game for this change to take effect. = Trebate ponovno pokrenuti igru kako bi ova promjena stupila na snagu. # AutomationTab Automation = Automatizacija # AutoPlay AutoPlay = Automatska Igra -Show AutoPlay button = Pokaži dugme Automatske Igre +Show AutoPlay button = Pokaži gumb Automatske Igre Multi-turn AutoPlay amount = Količina više-potezne Automatske Igre AutoPlay until victory = Automatski Igraj do pobjede @@ -953,7 +953,7 @@ We gained [amount] Science from Research Agreement = Dobili smo [amount] Znanost [construction] has become obsolete and was removed from the queue in [cityName]! = [construction] je zastarjelo i uklonjeno je iz reda čekanja u [cityName]! [construction] has become obsolete and was removed from the queue in [amount] cities! = [construction] je zastarjelo i uklonjeno je iz reda čekanja u [amount] gradova! [cityName] changed production from [oldUnit] to [newUnit] = [cityName] je promijenio proizvodnju iz [oldUnit] u [newUnit] -[amount] cities changed production from [oldUnit] to [newUnit] = [amount] gradovi su promijenili proizvodnju iz [oldUnit] u [newUnit] +[amount] cities changed production from [oldUnit] to [newUnit] = [amount] gradova je promijenilo proizvodnju iz [oldUnit] u [newUnit] Excess production for [wonder] converted to [goldAmount] gold = Višak proizvodnje za [wonder] pretvoren je u [goldAmount] zlata You have entered a Golden Age! = Ušli ste u Zlatno Doba! [resourceName] revealed near [cityName] = [resourceName] otkriveno u blizini [cityName] @@ -1055,13 +1055,13 @@ You and [name] are no longer allies! = Vi i [name] više niste saveznici! [cityName] has been connected to your capital! = [cityName] je spojen s tvojom prijestolnicom! [cityName] has been disconnected from your capital! = [cityName] je odspojen od tvoje prijestolnice! Connect road completed = Spajanje ceste je završeno -[civName] has accepted your trade request = [civName] je prihvatila tvoj zahtjev za trgovinu -[civName] has made a counteroffer to your trade request = [civName] je napravila protuponudu na tvoj zahtjev za trgovinu -[civName] has denied your trade request = [civName] je odbila tvoj zahtjev za trgovinu +[civName] has accepted your trade request = [civName] je prihvatila tvoju trgovinsku zamolbu +[civName] has made a counteroffer to your trade request = [civName] je napravila protuponudu na tvoju trgovinsku zamolbu +[civName] has denied your trade request = [civName] je odbila tvoju trgovinsku zamolbu [tradeOffer] from [otherCivName] has ended = [tradeOffer] od [otherCivName] je završilo [tradeOffer] to [otherCivName] has ended = [tradeOffer] prema [otherCivName] je završilo -[tradeOffer] from [otherCivName] will end in [amount] turns = [tradeOffer] od [otherCivName] završiti će za [amount] poteza -[tradeOffer] from [otherCivName] will end next turn = [tradeOffer] od [otherCivName] završiti će u sljedećem potezu +[tradeOffer] from [otherCivName] will end in [amount] turns = [tradeOffer] od [otherCivName] će završiti za [amount] poteza +[tradeOffer] from [otherCivName] will end next turn = [tradeOffer] od [otherCivName] će završiti u sljedećem potezu One of our trades with [nation] has ended = Jedna od naših trgovina s [nation] je završila One of our trades with [nation] has been cut short = Jedna od naših trgovina s [nation] je uskraćena [nation] agreed to stop settling cities near us! = [nation] se složila prestati naseljavati gradove u našoj blizini! @@ -1091,8 +1091,8 @@ The resistance in [cityName] has ended! = Otpor u [cityName] je prestao! [cityName] demands [resource]! = [cityName] zahtijeva [resource]! Because they have [resource], the citizens of [cityName] are celebrating We Love The King Day! = Budući da imaju [resource], građani [cityName] slave Volimo Kralja! We Love The King Day in [cityName] has ended. = Volimo Kralja u [cityName] je završilo. -Our [name] took [tileDamage] tile damage and was destroyed = Naš [name] pretrpio je [tileDamage] štete od polja i bio je uništen -Our [name] took [tileDamage] tile damage = Naš [name] pretrpio je [tileDamage] štete od polja +Our [name] took [tileDamage] tile damage and was destroyed = Naš [name] primio je [tileDamage] štete od polja i bio je uništen +Our [name] took [tileDamage] tile damage = Naš [name] primio je [tileDamage] štete od polja [civName] has adopted the [policyName] policy = [civName] je usvojila politiku [policyName] An unknown civilization has adopted the [policyName] policy = Nepoznata civilizacija usvojila je politiku [policyName] You gained [Stats] as your religion was spread to [cityName] = Dobili ste [Stats] jer se vaša religija proširila na [cityName] @@ -1372,10 +1372,10 @@ Wonder = Čuda National Wonder = Nacionalno Čudo National Wonders = Nacionalna Čuda Wonders enabled = Omogućena čuda -Tile improvements enabled = Omogućena unaprjeđenja za polja +Tile improvements enabled = Omogućena unaprjeđenja polja Reveals [resource] on the map = Otkriva [resource] na karti XP for new units = Iskustvo za nove jedinice -provide = Pružaj +provide = pružaj provides = Pruža City strength = Snaga grada City health = Životni bodovi grada @@ -1518,7 +1518,7 @@ Denounced [otherCiv] = Osudio [otherCiv] Allied with [civName] = U savezu s [civName] Civilization Info = Informacije o Civilizaciji Relations = Odnosi -Trade request = Zahtjev za trgovinu +Trade request = Trgovinska zamolba Garrisoned by unit = S jedinicom u garnizonu Status\n(puppet, resistance or being razed) = Status\n(marioneta, otpor ili uništenje) @@ -1577,7 +1577,7 @@ Replay = Ponovno reproduciraj What would you like to do with the city of [cityName]? = Što želiš učiniti s gradom [cityName]? Annex = Pripoji Annexed cities become part of your regular empire. = Pripojeni gradovi postaju dio tvojeg redovnog carstva. -Their citizens generate 2x the unhappiness, unless you build a courthouse. = Njihovi građani stvaraju 2x više nezadovoljstva, osim ako ne izgradiš sudnicu. +Their citizens generate 2x the unhappiness, unless you build a courthouse. = Njihovi građani generiraju 2x više nezadovoljstva, osim ako ne izgradiš sudnicu. Your civilization may not annex this city. = Tvoja civilizacija ne može pripojiti ovaj grad. Puppet = Marioneta Puppeted cities do not increase your tech or policy cost. = Marionete ne povećavaju tvoju cijenu tehnologije ili politike. @@ -1718,7 +1718,7 @@ Peace deal duration: [amount] turns⏳ = Trajanje mirovnog sporazuma: [amount] t Start year: [comment] = Početna godina: [comment] Pillaging this improvement yields [stats] = Pljačkanje ovog unaprjeđenja donosi [stats] Pillaging this improvement yields approximately [stats] = Pljačkanje ovog unaprjeđenja donosi približno [stats] -Needs removal of terrain features to be built = Potrebno uklanjanje značajki terena za izgradnju +Needs removal of terrain features to be built = Treba uklanjanje značajki terena za izgradnju Air Intercept Range: [amount] = Zračni Domet Presretanja: [amount] Unit type = Tip jedinice Units: = Jedinice: @@ -1880,7 +1880,7 @@ Invalid ID! = Nevaljani ID! # Multiplayer options tab -Enable multiplayer status button in singleplayer games = Omogući dugme statusa igre više igrača u igrama jednog igrača +Enable multiplayer status button in singleplayer games = Omogući gumb statusa igre više igrača u igrama jednog igrača Update status of currently played game every: = Ažuriraj status trenutačno igrane igre svakih: In-game, update status of all games every: = U igri, ažuriraj status svih igara svakih: Server address = Adresa poslužitelja @@ -2308,7 +2308,7 @@ once = jednom [amount] additional time(s) = Još [amount] puta after which this unit is consumed = nakon čega je ova jedinica potrošena Grants [stats] to the first civilization to discover it = Daje [stats] prvoj civilizaciji koja ga otkrije -Units ending their turn on this terrain take [amount] damage = Jedinice koje završe svoj potez na ovom terenu pretrpe [amount] štete +Units ending their turn on this terrain take [amount] damage = Jedinice koje završe svoj potez na ovom terenu primaju [amount] štete Grants [promotion] ([comment]) to adjacent [mapUnitFilter] units for the rest of the game = Dodjeljuje [promotion] ([comment]) susjednim [mapUnitFilter] jedinicama do kraja igre [amount] Strength for cities built on this terrain = [amount] Snage za gradove izgrađene na ovom terenu Provides a one-time Production bonus to the closest city when cut down = Pruža jednokratni bonus Proizvodnje najbližem gradu kada se odsječe @@ -2337,7 +2337,7 @@ Removes removable features when built = Uklanja uklonjive značajke kada je izgr Gives a defensive bonus of [relativeAmount]% = Daje obrambeni bonus od [relativeAmount]% Costs [amount] [stat] per turn when in your territory = Stoji [amount] [stat] po potezu kada je na vašem području Costs [amount] [stat] per turn = Stoji [amount] [stat] po potezu -Adjacent enemy units ending their turn take [amount] damage = Susjedne neprijateljske jedinice koje završe svoj potez pretrpe [amount] štete +Adjacent enemy units ending their turn take [amount] damage = Susjedne neprijateljske jedinice koje završe svoj potez primaju [amount] štete Great Improvement = Veliko Unaprjeđenje Provides a random bonus when entered = Pruža nasumični bonus kada se uđe Unpillagable = Ne može se opljačkati @@ -2718,7 +2718,7 @@ Target Unit = Ciljna jedinica Our influence with City-States has started dropping faster! = Naš utjecaj u Gradovima-Državama počeo je brže padati! all healing effects doubled = svi učinci liječenja udvostručeni The Spaceship = Svemirski Brod -Units ending their turn on [Mountain] tiles take [50] damage = Jedinice koje završe potez na poljima [Mountain] pretrpe [50] štete +Units ending their turn on [Mountain] tiles take [50] damage = Jedinice koje završe potez na poljima [Mountain] primaju [50] štete Maya Long Count calendar cycle = Majanski Kalendarski Ciklus Dugog Brojanja Meet another civilization = Upoznaj drugu civilizaciju Triggerable = Može se okinuti @@ -2781,7 +2781,7 @@ You have stolen our lands! = Ukrali ste naše zemlje! You destroyed City-States that were under our protection! = Uništili ste Gradove-Države koje su bile pod našom zaštitom! You attacked City-States that were under our protection! = Napali ste Gradove-Države koje su bile pod našom zaštitom! You attacked our allied City-States! = Napali ste naše savezničke Gradove-Države! -You demanded tribute from City-States that were under our protection! = Tražili ste danak od Gradova-Država koji su bili pod našom zaštitom! +You demanded tribute from City-States that were under our protection! = Zahtijevali ste danak od Gradova-Država koji su bili pod našom zaštitom! You sided with a City-State over us = Stavili ste se na stranu Grada-Države umjesto nas You spied on us! = Špijunirali ste nas! You took the alliance we had with a City-State = Uzeli ste savez koji smo imali s Gradom-Državom @@ -3186,77 +3186,51 @@ May the gods bless you, great Nebuchadnezzar, ruler of ancient Babylon! Built 50 Great Nebuchadnezzar, Babylon's glory still lives through you and your people. Will you create a spark to enlighten the world again? Will your new empire shine through the ages of history? = Veliki Nabukodonozore, slava Babilona još uvijek živi kroz tebe i tvoj narod. Hoćeš li stvoriti iskru da ponovno prosvijetliš svijet? Hoće li tvoje novo carstvo sjati kroz stoljeća povijesti? Babylon = Babilon Akkad = Akad - # Requires translation! -Dur-Kurigalzu = +Dur-Kurigalzu = Dur-Kurigalzu Nippur = Nipur Borsippa = Borsipa Sippar = Sipar Opis = Opis Mari = Mari - # Requires translation! -Shushan = - # Requires translation! -Eshnunna = - # Requires translation! -Ellasar = - # Requires translation! -Erech = - # Requires translation! -Kutha = - # Requires translation! -Sirpurla = - # Requires translation! -Neribtum = - # Requires translation! -Ashur = +Shushan = Šušan +Eshnunna = Ešnuna +Ellasar = Elasar +Erech = Erek +Kutha = Kuta +Sirpurla = Sirpurla +Neribtum = Neribtum +Ashur = Ašur Ninveh = Niniva Nimrud = Nimrud Arbela = Arbil - # Requires translation! -Nuzi = +Nuzi = Nuzi Arrapkha = Arafa - # Requires translation! -Tutub = - # Requires translation! -Shaduppum = - # Requires translation! -Rapiqum = - # Requires translation! -Mashkan Shapir = - # Requires translation! -Tuttul = - # Requires translation! -Ramad = - # Requires translation! -Ana = - # Requires translation! -Haradum = +Tutub = Tutub +Shaduppum = Šadupum +Rapiqum = Rapiku +Mashkan Shapir = Maškan-Šapir +Tuttul = Tutul +Ramad = Ramad +Ana = Ana +Haradum = Haradum Agrab = Agraba - # Requires translation! -Uqair = - # Requires translation! -Gubba = - # Requires translation! -Hafriyat = +Uqair = Ogair +Gubba = Guba +Hafriyat = Hafrijat Nagar = Nagara - # Requires translation! -Shubat Enlil = - # Requires translation! -Urhai = -Urkesh = Urkesh - # Requires translation! -Awan = - # Requires translation! -Riblah = - # Requires translation! -Tayma = +Shubat Enlil = Šubat-Enlil +Urhai = Urhai +Urkesh = Urkeš +Awan = Avan +Riblah = Ribla +Tayma = Tajma Alexander = Aleksandar -You are in my way, you must be destroyed. = Na putu si mi, moraš biti uništen. +You are in my way, you must be destroyed. = Na putu si mi, moraš biti uništen(a). As a matter of fact I too grow weary of peace. = Zapravo, i ja sam umoran od mira. -You have somehow become my undoing! What kind of beast are you? = Nekako si postao moja propast! Kakva si ti zvijer? -Hello stranger! I am Alexandros, son of kings and grandson of the gods! = Pozdrav stranče! Ja sam Aleksandar, sin kraljeva i unuk bogova! -My friend, does this seem reasonable to you? = Prijatelju moj, čini li ti se ovo razumnim? +You have somehow become my undoing! What kind of beast are you? = Nekako si postao(la) moja propast! Kakva si ti zvijer? +Hello stranger! I am Alexandros, son of kings and grandson of the gods! = Pozdrav stranče(kinjo)! Ja sam Aleksandar, sin kraljeva i unuk bogova! +My friend, does this seem reasonable to you? = Prijatelju(ice) moj(a), čini li ti se ovo razumnim? Greetings! = Pozdrav. What? = Što? Hellenic League = Helenska Liga @@ -3269,17 +3243,14 @@ Argos = Arg Knossos = Knos Mycenae = Mikena Pharsalos = Farsala - # Requires translation! -Ephesus = - # Requires translation! -Halicarnassus = +Ephesus = Efez +Halicarnassus = Halikarnas Rhodes = Rodos Eretria = Eretrija Pergamon = Pergam Miletos = Milet Megara = Megara - # Requires translation! -Phocaea = +Phocaea = Fokeja Sicyon = Sicyon Tiryns = Tirint Samos = Sam @@ -3287,8 +3258,7 @@ Mytilene = Mitilene Chios = Hios Paros = Par Elis = Elida - # Requires translation! -Syracuse = +Syracuse = Sirakuza Herakleia = Heraclea Gortyn = Gortynia Chalkis = Halkida @@ -3306,16 +3276,15 @@ Amphipolis = Amfipol Patras = Patras Lamia = Lamia Nafplion = Nauplion - # Requires translation! -Apolyton = +Apolyton = Apolyton Greece = Grčka Wu Zetian = Wu Zetian You won't ever be able to bother me again. Go meet Yama. = Više me nikada nećeš moći gnjaviti. Idi upoznaj Yamu. Fool! I will disembowel you all! = Budala! Sve ću vas raskopati! -You have proven to be a cunning and competent adversary. I congratulate you on your victory. = Dokazao si se kao lukav i kompetentan protivnik. Čestitam ti na pobjedi. +You have proven to be a cunning and competent adversary. I congratulate you on your victory. = Dokazao(la) si se kao lukav i kompetentan protivnik. Čestitam ti na pobjedi. Greetings, I am Empress Wu Zetian. China desires peace and development. You leave us alone, we'll leave you alone. = Pozdrav, ja sam Carica Wu Zetian. Kina želi mir i razvoj. Ostavi nas na miru, mi ćemo tebe ostaviti na miru. -My friend, do you think you can accept this request? = Prijatelju moj, misliš li da možeš prihvatiti ovaj zahtjev? +My friend, do you think you can accept this request? = Prijatelju(ice) moj(a), misliš li da možeš prihvatiti ovu zamolbu? How are you today? = Kako si danas? Oh. It's you? = Oh. To si ti? Art of War = Umijeće Ratovanja @@ -3358,18 +3327,16 @@ Xinyu = Xinyu Xinzheng = Xinzheng Handan = Handan Dunhuang = Dunhuang - # Requires translation! -Gaoyu = +Gaoyu = Gaoyu Nantong = Nantong Weifang = Weifang - # Requires translation! -Xikang = +Xikang = Xikang China = Kina Ramesses II = Ramzes II -You are but a pest on this Earth, prepare to be eliminated! = Ti si samo štetočina na ovoj Zemlji, pripremi se da budeš eliminiran! -You are a fool who evokes pity. You have brought my hostility upon yourself and your repulsive civilization! = Ti si budala koja izaziva sažaljenje. Navukao si moje neprijateljstvo na sebe i svoju odvratnu civilizaciju! -Strike me down and my soul will torment yours forever, you have won nothing. = Udari me i moja će duša zauvijek mučiti tvoju, ništa nisi osvojio. +You are but a pest on this Earth, prepare to be eliminated! = Ti si samo štetočina na ovoj Zemlji, pripremi se da budeš eliminiran(a)! +You are a fool who evokes pity. You have brought my hostility upon yourself and your repulsive civilization! = Ti si budala koja izaziva sažaljenje. Navukao(la) si moje neprijateljstvo na sebe i svoju odvratnu civilizaciju! +Strike me down and my soul will torment yours forever, you have won nothing. = Udari me i moja će duša zauvijek mučiti tvoju, ništa nisi osvojio(la). Greetings, I am Ramesses the god. I am the living embodiment of Egypt, mother and father of all civilizations. = Pozdrav, ja sam bog Ramzes. Ja sam živo utjelovljenje Egipta, majka i otac svih civilizacija. Generous Egypt makes you this offer. = Velikodušni Egipat nudi ti ovu ponudu. Good day. = Dobar dan. @@ -3379,78 +3346,60 @@ O great Ramesses, Pharaoh of Egypt, bright as the Sun and mighty as the Nile! Lo Mighty and eternal Ramesses, Egypt lasted for millenia, whereas other civilisations disappeared into dust after a few centuries. Amun-Ra blesses you again to lead Egypt and its people on the path of light. Will your new empire shine through the ages of history? = Moćni i vječni Ramzese, Egipat je trajao tisućljećima, dok su druge civilizacije nestajale u prahu nakon nekoliko stoljeća. Amon-Ra te ponovno blagoslivlja da vodiš Egipat i njegov narod na putu svjetlosti. Hoće li tvoje novo carstvo sjati kroz stoljeća povijesti? Thebes = Teba Memphis = Memfis -Heliopolis = Heliopolis +Heliopolis = Heliopol Elephantine = Elefantina Alexandria = Aleksandrija - # Requires translation! -Pi-Ramesses = +Pi-Ramesses = Ramses Giza = Giza Byblos = Biblos Akhetaten = Eknaton - # Requires translation! -Hieraconpolis = +Hieraconpolis = Hierakonpol Abydos = Abid Asyut = Asjut - # Requires translation! -Avaris = -Lisht = Al List +Avaris = Avaris +Lisht = El-Lisht Buto = Buto Edfu = Edfu - # Requires translation! -Pithom = - # Requires translation! -Busiris = -Kahun = Al Lahun - # Requires translation! -Athribis = - # Requires translation! -Mendes = - # Requires translation! -Elashmunein = +Pithom = Pitom +Busiris = Busirid +Kahun = El-Lahun +Athribis = Athribis +Mendes = Mendes +Elashmunein = El-Ashmunein Tanis = Tanis Bubastis = Bubastis - # Requires translation! -Oryx = - # Requires translation! -Sebennytus = +Oryx = Oryx +Sebennytus = Sebenit Akhmin = Akhmim Karnak = Karnak Luxor = Luksor - # Requires translation! -El Kab = +El Kab = El-Kab Armant = Armant - # Requires translation! -Balat = -Ellahun = Al Lahun - # Requires translation! -Hawara = +Balat = Balat +Ellahun = El-Lahun +Hawara = Havara Dashur = Dahšur Damanhur = Damanhur Abusir = Abusir -Herakleopolis = Herakleopolis - # Requires translation! -Akoris = +Herakleopolis = Herakleopol +Akoris = Hakor Benihasan = Beni Hassan -Badari = Al Badari -Hermopolis = Hermopolis - # Requires translation! -Amrah = - # Requires translation! -Koptos = +Badari = El-Badari +Hermopolis = Hermopol +Amrah = El-Amra +Koptos = Koptos Ombos = Ombos Naqada = Nakada - # Requires translation! -Semna = - # Requires translation! -Soleb = +Semna = Semna +Soleb = Soleb Egypt = Egipat Elizabeth = Elizabeta By the grace of God, your days are numbered. = Božjom milošću, tvoji su dani odbrojani. We shall never surrender. = Nikada se nećemo predati. -You have triumphed over us. The day is yours. = Trijumfirao si nad nama. Dan je tvoj. +You have triumphed over us. The day is yours. = Trijumfirao(la) si nad nama. Dan je tvoj. We are pleased to meet you. = Drago nam je što smo se upoznali. -Would you be interested in a trade agreement with England? = Dali bi bio zainteresiran za trgovinski sporazum s Engleskom? +Would you be interested in a trade agreement with England? = Dali bi bio(la) zainteresiran(a) za trgovinski sporazum s Engleskom? Hello, again. = Pozdrav, još jednom. Oh, it's you! = Oh, to si ti! Sun Never Sets = Sunce Nikad ne Zalazi @@ -3498,9 +3447,9 @@ England = Engleska Napoleon = Napoleon You're disturbing us, prepare for war. = Smetaš nam, pripremi se za rat. -You've fallen into my trap. I'll bury you. = Upao si u moju zamku. Pokopat ću te. +You've fallen into my trap. I'll bury you. = Upao(la) si u moju zamku. Pokopat ću te. I congratulate you for your victory. = Čestitam ti na tvojoj pobjedi. -Welcome. I'm Napoleon, of France; the smartest military man in world history. = Dobrodošao. Ja sam Napoleon, od Francuske; najpametniji vojnik u svjetskoj povijesti. +Welcome. I'm Napoleon, of France; the smartest military man in world history. = Dobrodošao(la). Ja sam Napoleon, od Francuske; najpametniji vojnik u svjetskoj povijesti. France offers you this exceptional proposition. = Francuska ti nudi ovu izuzetnu ponudu. Hello. = Pozdrav. It's you. = To si ti. @@ -3548,10 +3497,10 @@ Calais = Calais France = Francuska Catherine = Katarina -You've behaved yourself very badly, you know it. Now it's payback time. = Ponašao si se jako loše, znaš to. Sada je vrijeme osvete. -You've mistaken my passion for a weakness, you'll regret about this. = Zamijenio si moju strast za slabost, požalit ćeš zbog ovoga. +You've behaved yourself very badly, you know it. Now it's payback time. = Ponašao(la) si se jako loše, znaš to. Sada je vrijeme osvete. +You've mistaken my passion for a weakness, you'll regret about this. = Zamijenio(la) si moju strast za slabost, požalit ćeš zbog ovoga. We were defeated, so this makes me your prisoner. I suppose there are worse fates. = Bili smo poraženi, pa me ovo čini tvojim zarobljenikom. Valjda ima i gorih sudbina. -I greet you, stranger! If you are as intelligent and tactful as you are attractive, we'll get along just fine. = Pozdravljam te, stranče! Ako si jednako inteligentan i taktičan koliko si i privlačan, dobro ćemo se slagati. +I greet you, stranger! If you are as intelligent and tactful as you are attractive, we'll get along just fine. = Pozdravljam te, stranče(kinjo)! Ako si jednako inteligentan(na) i taktičan(na) koliko si i privlačan(na), dobro ćemo se slagati. How would you like it if I propose this kind of exchange? = Kako bi ti se svidjelo da predložim ovu vrstu razmjene? Hello! = Pozdrav! What do you need?! = Što ti treba?! @@ -3604,7 +3553,7 @@ So brave, yet so stupid! If only you had a brain similar to your courage. = Tako The gods have deprived Rome of their favour. We have been defeated. = Bogovi su lišili Rim svoje naklonosti. Poraženi smo. I greet you. I am Augustus, Imperator and Pontifex Maximus of Rome. If you are a friend of Rome, you are welcome. = Pozdravljam te. Ja sam August, car i Pontifex Maksimus Rima. Ako si prijatelj(ica) Rima, dobrodošao(la) si. I offer this, for your consideration. = Nudim ovo, tebi na razmatranje. -Hail. = Živio. +Hail. = Živio(la). What do you want? = Što hoćeš? The Glory of Rome = Slava Rima Ave Caesar Augustus, Emperor of Rome and Dominus of the Roman Empire! Your empire was the most powerful and feared of all in Western civilization. The Roman people crafted so brilliantly its culture, law, art, and warfare, that no one could contest the supremacy of Rome. Force and Honor led to glorious conquests, a domination of all the lands from Spain in the west to Syria in the east, even reaching the remote barbarian lands of England and Germany. Roman art and architecture have been praised for millenia and have been envied by all lesser civilizations who have followed. = Ave Cezare Auguste, Care Rima i Dominuse Rimskog Carstva! Tvoje carstvo bilo je najmoćnije i najstrašnije od svih u zapadnoj civilizaciji. Rimski je narod tako briljantno stvorio svoju kulturu, pravo, umjetnost i ratovanje, da nitko nije mogao osporiti nadmoć Rima. Sila i čast doveli su do veličanstvenih osvajanja, dominacije nad svim zemljama od Španjolske na zapadu do Sirije na istoku, čak i do udaljenih barbarskih zemalja Engleske i Njemačke. Rimska umjetnost i arhitektura bile su hvaljene tisućljećima i zavidjele su im sve niže civilizacije koje su slijedile. @@ -3614,14 +3563,14 @@ Antium = Anzio Cumae = Kuma Neapolis = Napulj Ravenna = Ravena -Arretium = Arezzo +Arretium = Aretij Mediolanum = Milan Arpinum = Arpino Circei = Circea Setia = Sezze Satricum = Satricum Ardea = Ardea -Ostia = Ostia +Ostia = Ostija Velitrae = Velletri Viroconium = Viroconium Tarentum = Taranto @@ -3652,13 +3601,13 @@ Adria = Adria Harun al-Rashid = Harun al-Rašid The world will be more beautiful without you. Prepare for war. = Svijet će biti ljepši bez tebe. Pripremi se za rat. Fool! You will soon regret dearly! I swear it! = Budala! Uskoro ćeš jako požaliti! Kunem se! -You have won, congratulations. My palace is now in your possession, and I beg that you care well for the peacock. = Pobijedio(la) si, čestitamo. Moja je palača sada u tvojem posjedu, i molim te da se dobro brini za pauna. -Welcome foreigner, I am Harun Al-Rashid, Caliph of the Arabs. Come and tell me about your empire. = Dobrodošao stranče, ja sam Harun Al-Rashid, Kalif Arapa. Dođi i pričaj mi o svom carstvu. +You have won, congratulations. My palace is now in your possession, and I beg that you care well for the peacock. = Pobijedio(la) si, čestitamo. Moja je palača sada u tvojem posjedu, i molim te da se dobro brineš za pauna. + # Requires translation! +Welcome foreigner, I am Harun Al-Rashid, Caliph of the Arabs. Come and tell me about your empire. = Come forth, let's do business. = Dođi, idemo poslovati. Peace be upon you. = Neka je mir tebi. Trade Caravans = Trgovačke Karavane - # Requires translation! -Blessings of the Great God be upon you, O great caliph Harun al-Rashid, leader of the mighty Arabian people! The Muslim Empire, the Caliphate, born from chaos after the death of the prophet Muhammad in 632 AD, intended to apply the rule of God to all Earth. And by the will of God, the caliphate reached its full power, ruling Spain, North Africa, the Middle East, Anatolia, the Balkans and Persia, to even surpass the Great Roman Empire. The arts and sciences were a holy gift of Arabia during the Middle Ages, as the infidel lands of Europe delved deep into ignorance and chaos. Lasting for six hundred years, the Caliphate finally fell before the Mongols, the plague of the civilized world. = +Blessings of the Great God be upon you, O great caliph Harun al-Rashid, leader of the mighty Arabian people! The Muslim Empire, the Caliphate, born from chaos after the death of the prophet Muhammad in 632 AD, intended to apply the rule of God to all Earth. And by the will of God, the caliphate reached its full power, ruling Spain, North Africa, the Middle East, Anatolia, the Balkans and Persia, to even surpass the Great Roman Empire. The arts and sciences were a holy gift of Arabia during the Middle Ages, as the infidel lands of Europe delved deep into ignorance and chaos. Lasting for six hundred years, the Caliphate finally fell before the Mongols, the plague of the civilized world. = Blagoslovi Velikog Boga neka su nad tobom, O veliki kalife Harune al-Rašide, vođo moćnog Arapskog naroda! Muslimansko carstvo, Kalifat, rođeno iz kaosa nakon smrti proroka Muhameda 632. godine po. Kr., namjeravalo je primijeniti Božju vladavinu na cijelu Zemlju. I voljom Božjom, kalifat je dostigao svoju punu moć, zavladavši Španjolskom, Sjevernom Afrikom, Bliskim Istokom, Anatolijom, Balkanom i Perzijom, da bi čak i nadmašio Veliko Rimsko Carstvo. Umjetnosti i znanosti bile su sveti dar Arabije tijekom Srednjeg Vijeka, dok su nevjerničke zemlje Europe tonule duboko u neznanje i kaos. Trajući šest stotina godina, Kalifat je konačno pao pred Mongolima, kugom civiliziranog svijeta. Great Caliph Harun al Rashid, all Arabian people long for greatness! Arabia must be once again the land of arts and knowledge, which under the radiant law of God, will fear no enemy! Will your new empire shine through the ages of history? = Veliki Kalife Harun al Rashid, svi Arapski ljudi žude za veličinom! Arabija mora ponovo biti zemlja umjetnosti i znanja, koja se pod blistavim Božjim zakonom neće bojati neprijatelja! Hoće li tvoje novo carstvo sjati kroz stoljeća povijesti? Mecca = Meka Medina = Medina @@ -3667,16 +3616,13 @@ Baghdad = Bagdad Najran = Najran Kufah = Kufa Basra = Basra - # Requires translation! -Khurasan = +Khurasan = Khurasan Anjar = Andžar Fustat = Fustat Aden = Aden - # Requires translation! -Yamama = +Yamama = El-Yamama Muscat = Muskat - # Requires translation! -Mansura = +Mansura = Mansura Bukhara = Buhara Fez = Fes Shiraz = Širaz @@ -3684,8 +3630,7 @@ Merw = Merv Balkh = Balkh Mosul = Mosul Aydab = Aydabul - # Requires translation! -Bayt = +Bayt = Bayt Suhar = Sohar Taif = Taif Hama = Hama @@ -3701,7 +3646,7 @@ Arabia = Arabija George Washington = George Washington Your wanton aggression leaves us no choice. Prepare for war! = Tvoja bezobzirna agresija ne ostavlja nam izbora. Pripremi se za rat! -You have mistaken our love of peace for weakness. You shall regret this! = Zamijenili ste našu ljubav prema miru kao slabost. Požalit ćeš zbog ovoga! +You have mistaken our love of peace for weakness. You shall regret this! = Zamijenio(la) si našu ljubav prema miru kao slabost. Požalit ćeš zbog ovoga! The day...is yours. I hope you will be merciful in your triumph. = Dan... je tvoj. Nadam se da ćeš biti milostiv(a) u svom trijumfu. The people of the United States of America welcome you. = Narod Sjedinjenih Američkih Država želi ti dobrodošlicu. Is the following trade of interest to you? = Zanima li te sljedeća trgovina? @@ -3789,16 +3734,12 @@ Hakodate = Hakodate Ise = Ise Toyama = Toyama Fukushima = Fukušima - # Requires translation! -Suo = +Suo = Suō Bizen = Bizen Echizen = Echizen - # Requires translation! -Izumi = - # Requires translation! -Omi = - # Requires translation! -Echigo = +Izumi = Izumi +Omi = Ōmi +Echigo = Echigo Kozuke = Kozuke Sado = Sado Kobe = Kobe @@ -3823,7 +3764,7 @@ I have just received a report that large numbers of my troops have crossed your My attempts to avoid violence have failed. An eye for an eye only makes the world blind. = Moji pokušaji da izbjegnem nasilje nisu uspjeli. Oko za oko samo čini svijet slijepim. You can chain me, you can torture me, you can even destroy this body, but you will never imprison my mind. = Možeš me okovati, možeš me mučiti, možeš čak uništiti ovo tijelo, ali nikada nećeš zatvoriti moj um. Hello, I am Mohandas Gandhi. My people call me Bapu, but please, call me friend. = Pozdrav, ja sam Mohandas Gandhi. Moji ljudi me zovu Bapu, ali molim te, zovi me prijatelju. -My friend, are you interested in this arrangement? = Prijatelju moj, jesi li zainteresiran za ovaj aranžman? +My friend, are you interested in this arrangement? = Prijatelju(ice) moj(a), jesi li zainteresiran(a) za ovaj aranžman? I wish you peace. = Želim ti mir. Population Growth = Rast Stanovništva Wise Mahatma Gandhi, great leader of India, we honor you! India is one of the oldest countries in the world with 10,000 years of history, built on spirit and religion, as three of the world's great religions - Hinduism, Buddhism and Jainism - appeared on this sacred land. Every aspect of India society reveres art, music and color, showing great wealth but also grinding poverty. For centuries, India was torn between local kingdoms fighting each other but also repelling invaders. In the 12th century AD, Muslim Turks tried to conquer India, then the Mongols took their place. In the early 17th century, India, still fragmented, was colonized by the English and their diplomacy and technological superiority. After two centuries of British dominion, Indian nationalism woke up, and you, Great Mahatma, have led a peaceful and victorious rebellion never seen anywhere in history! = Mudri Mahatma Gandhi, veliki vođo Indije, poštujemo te! Indija je jedna od najstarijih zemalja na svijetu s 10.000 godina dugom poviješću, izgrađenom na duhu i vjeri, jer su se na ovoj svetoj zemlji pojavile tri velike svjetske religije - Hinduizam, Budizam i Džainizam. Svaki aspekt Indijskog društva štuje umjetnost, glazbu i boje, pokazujući veliko bogatstvo, ali i krajnje siromaštvo. Indija je stoljećima bila razapeta između lokalnih kraljevstava koja su se međusobno borila, ali i odbijala osvajače. U 12. stoljeću po. Kr. muslimanski Turci su pokušali osvojiti Indiju, a zatim su Mongoli zauzeli njihovo mjesto. Početkom 17. stoljeća Indiju, još uvijek rascjepkanu, koloniziraju Englezi i njihova diplomacija i tehnološka nadmoć. Nakon dva stoljeća britanske dominacije, probudio se Indijski nacionalizam, a ti, Veliki Mahatma, poveo si mirnu i pobjedonosnu pobunu kakva nije viđena nigdje u povijesti! @@ -3843,8 +3784,7 @@ Ahmedabad = Ahmedabad Kolhapur = Kolhapur Prayaga = Prayagraj Ayodhya = Ayodhya - # Requires translation! -Indraprastha = +Indraprastha = Indraprastha Mathura = Mathura Ujjain = Ujjain Gulbarga = Kalaburagi @@ -3863,7 +3803,7 @@ Karachi = Karachi India = Indija Otto von Bismarck = Otto von Bismarck -I cannot wait until ye grow even mightier. Therefore, prepare for war! = Ne mogu čekati dok ne postaneš još jači. Stoga, pripremi se za rat! +I cannot wait until ye grow even mightier. Therefore, prepare for war! = Ne mogu čekati dok ne postaneš još jači(a). Stoga, pripremi se za rat! Corrupted villain! We will bring you into the ground! = Pokvareni zlikovac! Srušit ćemo te u zemlju! Germany has been destroyed. I weep for the future generations. = Njemačka je uništena. Plačem za budućim generacijama. Guten Tag. In the name of the great German people, I bid you welcome. = Guten Tag. U ime velikog Njemačkog naroda, želim ti dobrodošlicu. @@ -3934,7 +3874,7 @@ Suleiman I = Sulejman I Your continued insolence and failure to recognize our preeminence leads us to war. = Tvoja stalna drskost i nepriznavanje naše nadmoći vodi nas u rat. Good. The world shall witness the incontestable might of my armies and the glory of the Empire. = Dobro. Svijet će svjedočiti neosporivoj moći moje vojske i slavi Carstva. Ruin! Ruin! Istanbul becomes Iram of the Pillars, remembered only by the melancholy poets. = Propast! Propast! Istanbul postaje Iram stupova, kojeg se sjećaju samo melankolični pjesnici. -From the magnificence of Topkapi, the Ottoman nation greets you, stranger! I'm Suleiman, Kayser-I Rum, and I bestow upon you my welcome! = S veličanstvenosti Topkapija pozdravlja te, stranče, Otomanski narod! Ja sam Sulejman, Kayser-I Rum, i želim ti dobrodošlicu! +From the magnificence of Topkapi, the Ottoman nation greets you, stranger! I'm Suleiman, Kayser-I Rum, and I bestow upon you my welcome! = S veličanstvenosti Topkapija pozdravlja te, stranče(kinjo), Otomanski narod! Ja sam Sulejman, Kayser-I Rum, i želim ti dobrodošlicu! Let us do business! Would you be interested? = Pusti nas da poslujemo! Dali bi te zanimalo? Barbary Corsairs = Berberski Gusari O Great Sultan Suleiman, may the God bless you! You are revered for your power, wealth and generosity, and you truly deserves to be called the 'Magnificent'! The Ottoman Empire was born in Bithynia, starting as a small country in Eastern Anatolia in 12th century, then expanded to west into Anatolia. Over the next century, your people vanquished the empire of Byzantium, annexing Turkey and the Balkans, and smartly assimilating all wonders and knowledge of the Byzantine civilization. In the mid 15th century, the Ottomans added Constantinople to their empire, establishing a strategic link between Europe and the Middle East. The Empire would continue to expand for centuries reaching North Africa, Middle East and Eastern Europe at its height, but brutally disappeared in the chaos of the first world war, in early 20th century. = O Veliki Sultane Sulejmane, neka te Bog blagoslovi! Cijenjen si zbog svoje moći, bogatstva i velikodušnosti i doista zaslužuješ da te zovu 'Veličanstveni'! Osmansko Carstvo je rođeno u Bitiniji, počevši kao mala država u Istočnoj Anatoliji u 12. stoljeću, a zatim se proširilo na zapad u Anatoliju. Tijekom sljedećeg stoljeća, tvoj je narod pobijedio Bizantsko carstvo, pripojivši Tursku i Balkan, i pametno asimilirajući sva čuda i znanja Bizantske civilizacije. Sredinom 15. stoljeća, Osmanlije su svom carstvu dodale Konstantinopol, uspostavljajući stratešku vezu između Europe i Bliskog istoka. Carstvo će se nastaviti širiti stoljećima dosegnuvši Sjevernu Afriku, Bliski istok i Istočnu Europu na svom vrhuncu, ali je brutalno nestalo u kaosu Prvog svjetskog rata, početkom 20. stoljeća. @@ -3978,9 +3918,9 @@ The Ottomans = Osmanlije Sejong = Sejong Jip-hyun-jun (Hall of Worthies) will no longer tolerate your irksome behavior. We will liberate the citizens under your oppression even with force, and enlighten them! = Jip-hyun-jun (Dvorana Vrijednih) više neće tolerirati tvoje dosadno ponašanje. Mi ćemo čak i silom osloboditi građane pod tvojim ugnjetavanjem i prosvijetliti ih! -Foolish, miserable wretch! You will be crushed by this country's magnificent scientific power! = Glupi, jadni nitkove! Bit ćeš slomljeni(a) veličanstvenom znanstvenom snagom ove zemlje! +Foolish, miserable wretch! You will be crushed by this country's magnificent scientific power! = Glupi, jadni nitkove! Bit ćeš slomljen(a) veličanstvenom znanstvenom snagom ove zemlje! Now the question is who will protect my people. A dark age has come. = Sada je pitanje tko će zaštititi moj narod. Došlo je mračno doba. -Welcome to the palace of Choson, stranger. I am the learned King Sejong, who looks after his great people. = Dobrodošao(la) u palaču Choson, stranče. Ja sam učeni Kralj Sejong, koji se brine za svoj veliki narod. +Welcome to the palace of Choson, stranger. I am the learned King Sejong, who looks after his great people. = Dobrodošao(la) u palaču Choson, stranče(kinjo). Ja sam učeni Kralj Sejong, koji se brine za svoj veliki narod. We have many things to discuss and have much to benefit from each other. = Imamo mnogo stvari za raspravu i imamo mnogo koristi jedni od drugih. Oh, it's you = Oh, to si ti Scholars of the Jade Hall = Učenjaci Dvorane od Žada @@ -4000,225 +3940,149 @@ Wonju = Wonju Ulsan = Ulsan Changwon = Kangwon Andong = Andong - # Requires translation! -Gongju = +Gongju = Gongju Haeju = Haeju Cheongju = Cheongju Mokpo = Mokpo - # Requires translation! -Dongducheon = +Dongducheon = Dongducheon Geoje = Geoje Suncheon = Suncheon Jinju = Jinju - # Requires translation! -Sangju = +Sangju = Sangju Rason = Rason Gyeongju = Gyeongju - # Requires translation! -Chungju = - # Requires translation! -Sacheon = - # Requires translation! -Gimje = - # Requires translation! -Anju = +Chungju = Chungju +Sacheon = Sacheon +Gimje = Gimje +Anju = Anju Korea = Koreja Hiawatha = Hiawatha You are a plague upon Mother Earth! Prepare for battle! = Ti si kuga nad Majkom Zemljom! Pripremi se za bitku! You evil creature! My braves will slaughter you! = Ti zlo stvorenje! Moji hrabri će te zaklati! You have defeated us... but our spirits will never be vanquished! We shall return! = Pobijedio(la) si nas... ali naš duh nikada neće biti pobijeđen! Vratit ćemo se! -Greetings, stranger. I am Hiawatha, speaker for the Iroquois. We seek peace with all, but we do not shrink from war. = Pozdrav, stranče. Ja sam Hiawatha, govornik za Irokeze. Tražimo mir s tobom, ali ne prezamo od rata. -Does this trade work for you, my friend? = Dali ti je u redu ova trgovina, prijatelju moj? +Greetings, stranger. I am Hiawatha, speaker for the Iroquois. We seek peace with all, but we do not shrink from war. = Pozdrav, stranče(kinjo). Ja sam Hiawatha, govornik za Irokeze. Tražimo mir s tobom, ali ne prezamo od rata. +Does this trade work for you, my friend? = Dali ti je u redu ova trgovina, prijatelju(ice) moj(a)? The Great Warpath = Veliki Ratni Put Greetings, noble Hiawatha, leader of the mighty Iroquois nations! Your people lived near the great and holy lake Ontario since the ancient ages, on a land that will be later known as New York city. Long ago, the five peoples of Seneca, Onondaga, Mohawks, Cayugas and Oneida became one nation, the Haudenosaunee, the Iroquois. Although not having a written language, the wise Iroquois created the Great Law of Peace, which can be considered the first established constitution. For decades, your people fought powerful enemies, such as the Huron, and then the French and English colonists. With less warriors and inferior weaponry, the Iroquois still survived and walk on the path of peace and harmony, until their way of living faded away under the crush of the newborn United States nation. = Pozdrav, plemeniti Hiawatha, vođo moćnih Irokeških naroda! Tvoj narod živio je u blizini velikog i svetog jezera Ontario od davnih vremena, na zemlji koja će kasnije biti poznata kao grad New York. Prije mnogo vremena, pet naroda Seneca, Onondaga, Mohawks, Cayugas i Oneida postali su jedna nacija, Haudenosaunee, Irokezi. Iako nisu imali pisani jezik, mudri Irokezi stvorili su Veliki Zakon Mira, koji se može smatrati prvim uspostavljenim ustavom. Desetljećima se tvoj narod borio protiv moćnih neprijatelja, poput Hurona, a potom i Francuskih i Engleskih kolonizatora. S manje ratnika i slabijim oružjem, Irokezi su ipak preživjeli i hodali stazom mira i sklada, sve dok njihov način života nije izblijedio pod pritiskom novorođene nacije Sjedinjenih Država. Great Sachem Hiawatha, do you hear the complaints of your people? Can you light the path leading to the ancient Iroquois union? Will your new empire shine through the ages of history? = Veliki Sachem Hiawatha, čuješ li pritužbe svojih ljudi? Možeš li osvijetliti put koji vodi do drevne unije Irokeza? Hoće li tvoje novo carstvo sjati kroz stoljeća povijesti? - # Requires translation! -Onondaga = - # Requires translation! -Osininka = - # Requires translation! -Grand River = - # Requires translation! -Akwesasme = - # Requires translation! -Buffalo Creek = - # Requires translation! -Brantford = - # Requires translation! -Montreal = - # Requires translation! -Genesse River = - # Requires translation! -Canandaigua Lake = - # Requires translation! -Lake Simcoe = - # Requires translation! -Salamanca = - # Requires translation! -Gowanda = - # Requires translation! -Cuba = - # Requires translation! -Akron = - # Requires translation! -Kanesatake = - # Requires translation! -Ganienkeh = - # Requires translation! -Cayuga Castle = - # Requires translation! -Chondote = - # Requires translation! -Canajoharie = - # Requires translation! -Nedrow = - # Requires translation! -Oneida Lake = - # Requires translation! -Kanonwalohale = - # Requires translation! -Green Bay = - # Requires translation! -Southwold = - # Requires translation! -Mohawk Valley = - # Requires translation! -Schoharie = - # Requires translation! -Bay of Quinte = - # Requires translation! -Kanawale = - # Requires translation! -Kanatsiokareke = - # Requires translation! -Tyendinaga = - # Requires translation! -Hahta = +Onondaga = Onondaga +Osininka = Osininka +Grand River = Grand River +Akwesasme = Akwesasne +Buffalo Creek = Buffalo Creek +Brantford = Brantford +Montreal = Montréal +Genesse River = Genesee River +Canandaigua Lake = Canandaigua Lake +Lake Simcoe = Simcoe +Salamanca = Salamanca +Gowanda = Gowanda +Cuba = Cuba +Akron = Akron +Kanesatake = Kanesatake +Ganienkeh = Ganienkeh +Cayuga Castle = Cayuga Castle +Chondote = Chondote +Canajoharie = Canajoharie +Nedrow = Nedrow +Oneida Lake = Oneida Lake +Kanonwalohale = Kanonwalohale +Green Bay = Green Bay +Southwold = Southwold +Mohawk Valley = Mohawk Valley +Schoharie = Schoharie +Bay of Quinte = Bay of Quinte +Kanawale = Kanawale +Kanatsiokareke = Kanatsiokareke +Tyendinaga = Tyendinaga +Hahta = Hahta Iroquois = Irokezi Darius I = Darije I Your continue existence is an embarrassment to all leaders everywhere! You must be destroyed! = Tvoj nastavak postojanja je sramota za sve vođe posvuda! Moraš biti uništen(a)! -Curse you! You are beneath me, son of a donkey driver! I will crush you! = Prokleti te! Niži si od mene, sine jahača magarca! Zdrobit ću te! -You mongrel! Cursed be you! The world will long lament your heinous crime! = Ti mješanče! Proklet bio! Svijet će dugo oplakivati tvoj gnusni zločin! +Curse you! You are beneath me, son of a donkey driver! I will crush you! = Prokleti te! Niži(a) si od mene, sine jahača magarca! Zdrobit ću te! +You mongrel! Cursed be you! The world will long lament your heinous crime! = Ti mješanče(kinjo)! Proklet(a) bio(la)! Svijet će dugo oplakivati tvoj gnusni zločin! Peace be on you! I am Darius, the great and outstanding king of kings of great Persia... but I suppose you knew that. = Mir tebi! Ja sam Darije, veliki i izvanredni kralj kraljeva velike Perzije... ali pretpostavljam da si to znao(la). In my endless magnanimity, I am making you this offer. You agree, of course? = U svojoj beskrajnoj velikodušnosti, nudim ti ovu ponudu. Slažeš se, naravno? Good day to you! = Dobar ti dan! Ahh... you... = Ahh... ti... Achaemenid Legacy = Ahemenidsko Nasljeđe Great King Darius of Persia, the heaven casts its light upon you! Persian people are strong and wise, as their leader. In old ages, the great Persian king Cyrus fought back the mighty Median empire and finally destroyed the Medes in 550 BC. Cunning diplomacy and military achievements helped then to conquer the wealthy Lydia and the powerful Babylon, Cyrus' son conquering the eternal Egypt some years later. At the height of its power, the Persian Empire reached the shores of Macedonia, at the very door of the upstart Greek city-states. Persia would have prospered for centuries if Alexander of Macedon hadn't brutally destroyed the great empire in one violent strike. = Veliki Kralju Darije od Perzije, nebo baca svoju svjetlost na tebe! Perzijski narod je jak i mudar, kao i njihov vođa. U starim godinama, veliki perzijski kralj Kir borio se protiv moćnog Medijskog carstva i konačno uništio Medijce 550. godine pr. Kr. Lukava diplomacija i vojna postignuća pomogli su tada osvojiti bogatu Lidiju i moćni Babilon, Kirov sin koji je nekoliko godina kasnije osvojio vječni Egipat. Na vrhuncu svoje moći, Perzijsko Carstvo je stiglo do obala Makedonije, pred samim vratima novopečenih Grčkih gradova-država. Perzija bi stoljećima napredovala da Aleksandar Makedonski nije brutalno uništio veliko carstvo u jednom nasilnom napadu. -King Darius, the people of Persia await, longing for its past glory and power! Persia of the Immortals must reborn, to punish its foes and rebuild the gleaming Persepolis! Will your new empire shine through the ages of history? = Kralju Darije, ljudi Perzije čekaju, žudeći za prošlom slavom i moći! Perzija besmrtnika mora se ponovno roditi, kazniti svoje neprijatelje i ponovno izgraditi blistavi Persepolis! Hoće li tvoje novo carstvo sjati kroz stoljeća povijesti? -Persepolis = Perzepolis +King Darius, the people of Persia await, longing for its past glory and power! Persia of the Immortals must reborn, to punish its foes and rebuild the gleaming Persepolis! Will your new empire shine through the ages of history? = Kralju Darije, ljudi Perzije čekaju, žudeći za prošlom slavom i moći! Perzija besmrtnika mora se ponovno roditi, kazniti svoje neprijatelje i ponovno izgraditi blistavi Perzepol! Hoće li tvoje novo carstvo sjati kroz stoljeća povijesti? +Persepolis = Perzepol Parsagadae = Pasargada Susa = Suza Ecbatana = Ekbatana Tarsus = Tarsus Gordium = Gordion - # Requires translation! -Bactra = - # Requires translation! -Sardis = +Bactra = Baktra +Sardis = Sard Ergili = Ergili - # Requires translation! -Dariushkabir = +Dariushkabir = Dariuškabir Ghulaman = Ghulaman Zohak = Zohak Istakhr = Istahr - # Requires translation! -Jinjan = +Jinjan = Jinjan Borazjan = Borazjan Herat = Herat - # Requires translation! -Dakyanus = +Dakyanus = Dakyanus Bampur = Bampur - # Requires translation! -Turengtepe = - # Requires translation! -Rey = - # Requires translation! -Thuspa = +Turengtepe = Tureng Tepe +Rey = Raj +Thuspa = Tuspa Hasanlu = Hasanlu - # Requires translation! -Gabae = - # Requires translation! -Merv = +Gabae = Gábai +Merv = Merv Behistun = Bisotun Kandahar = Kandahar Altintepe = Altintepe Bunyan = Bünyan Charsadda = Chārsadda - # Requires translation! -Uratyube = +Uratyube = Ura-Tjube Dura Europos = Dura-Europus Aleppo = Alep Qatna = Qatnabad Kabul = Kabul - # Requires translation! -Capisa = - # Requires translation! -Kyreskhata = - # Requires translation! -Marakanda = +Capisa = Kapisa +Kyreskhata = Kyreskhata +Marakanda = Marakanda Peshawar = Pešavar Van = Van - # Requires translation! -Pteira = - # Requires translation! -Arshada = - # Requires translation! -Artakaona = - # Requires translation! -Aspabota = - # Requires translation! -Autiyara = - # Requires translation! -Bagastana = - # Requires translation! -Baxtri = - # Requires translation! -Darmasa = - # Requires translation! -Daphnai = - # Requires translation! -Drapsaka = - # Requires translation! -Eion = - # Requires translation! -Gandutava = - # Requires translation! -Gaugamela = - # Requires translation! -Harmozeia = - # Requires translation! -Ekatompylos = - # Requires translation! -Izata = - # Requires translation! -Kampada = +Pteira = Pteira +Arshada = Aršada +Artakaona = Artakaona +Aspabota = Aspabota +Autiyara = Autiyāra +Bagastana = Behistun +Baxtri = Bāxtri +Darmasa = Darmasa +Daphnai = Daphnai +Drapsaka = Drapsáka +Eion = Eion +Gandutava = Gandutava +Gaugamela = Gaugamela +Harmozeia = Harmozeja +Ekatompylos = Hecatompylos +Izata = Izata +Kampada = Kampada Kapisa = Kapisa - # Requires translation! -Karmana = - # Requires translation! -Kounaxa = - # Requires translation! -Kuganaka = - # Requires translation! -Nautaka = - # Requires translation! -Paishiyauvada = - # Requires translation! -Patigrbana = - # Requires translation! -Phrada = +Karmana = Karmana +Kounaxa = Kunaksa +Kuganaka = Kuganaka +Nautaka = Nautaka +Paishiyauvada = Paishiyauvada +Patigrbana = Patigrbana +Phrada = Prada Persia = Perzija Kamehameha I = Kamehameha I The ancient fire flashing across the sky is what proclaimed that this day would come, though I had foolishly hoped for a different outcome. = Drevna vatra koja bljeska preko neba je ono što je najavilo da će ovaj dan doći, iako sam se glupo nadao drugačijem ishodu. It is obvious now that I misjudged you and your true intentions. = Sada je očito da sam krivo procijenio tebe i tvoje prave namjere. The hard-shelled crab yields, and the lion lies down to sleep. Kanaloa comes for me now. = Rak s tvrdim oklopom se preda, a lav legne spavati. Kanaloa sada dolazi po mene. -Aloha! Greetings and blessings upon you, friend. I am Kamehameha, Great King of this strand of islands. = Aloha! Pozdrav i blagoslov na tebe, prijatelju. Ja sam Kamehameha, Veliki Kralj ovog niza otoka. +Aloha! Greetings and blessings upon you, friend. I am Kamehameha, Great King of this strand of islands. = Aloha! Pozdrav i blagoslov na tebe, prijatelju(ice). Ja sam Kamehameha, Veliki Kralj ovog niza otoka. Come, let our people feast together! = Dođi, neka naši narodi zajedno guštaju! -Welcome, friend! = Dobro došao, prijatelju! +Welcome, friend! = Dobro došao(la), prijatelju(ice)! Wayfinding = Pronalaženje Puta Aloha to Kamehameha the Great, who the heavens allowed to unite your people! O great King, under your reign, the Big Island of Hawai'i became one in 1791 AD, and many other islands joined your vision of union in 1810. As the first King of Hawai'i, law and taxation systems were stabilized, and you promoted the Kanawai Mamalahoe, an edict to protect civilian people in times of war. Unification and sovereignty of all the islands continued thanks to your fair laws and deeds, even after you joined your ancestors in paradise in 1819. = Aloha Kamehamehi Velikom, kome su nebesa dopustila da ujedini tvoj narod! O veliki kralju, pod tvojom vladavinom, Veliki Otok Hawai'i postao je jedan 1791. godine po. Kr., a mnogi drugi otoci pridružili su se tvojoj viziji unije 1810. godine. Kao prvi Kralj Hawai'i, zakon i porezni sustavi su se stabilizirali, i promovirao si Kanawai Mamalahoe, edikt za zaštitu civila u vrijeme rata. Ujedinjenje i suverenitet svih otoka nastavljeno je zahvaljujući tvojim poštenim zakonima i djelima, čak i nakon što si se pridružio svojim precima u raju 1819. godine. Wise and benevolent King, will you unite your people once again by wearing the bright mantle of the Lion of the Pacific? Will your new empire shine through the ages of history? = Mudri i dobronamjerni Kralju, hoćeš li ponovno ujediniti svoj narod noseći svijetli plašt Lava s Pacifika? Hoće li tvoje novo carstvo sjati kroz stoljeća povijesti? @@ -4227,12 +4091,10 @@ Samoa = Samoa Tonga = Tonga Nuku Hiva = Nuku Hiva Raiatea = Raiatea - # Requires translation! -Aotearoa = +Aotearoa = Aotearoa Tahiti = Tahiti Hilo = Hilo - # Requires translation! -Te Wai Pounamu = +Te Wai Pounamu = Južni otok Rapa Nui = Uskršnji otok Tuamotu = Tuamotu Rarotonga = Rarotonga @@ -4247,24 +4109,20 @@ Rekohu = Rekohu Rakahanga = Rakahanga Bora Bora = Bora-Bora Kailua = Kailua - # Requires translation! -Uvea = +Uvea = Uvea Futuna = Futuna Rotuma = Rotuma Tokelau = Tokelau Lahaina = Lahaina - # Requires translation! -Bellona = - # Requires translation! -Mungava = +Bellona = Bellona +Mungava = Mungava Tikopia = Tikopia Emae = Emae Kapingamarangi = Kapingamarangi Takuu = Takuu Nukuoro = Nukuoro Sikaiana = Sikaiana - # Requires translation! -Anuta = +Anuta = Anuta Nuguria = Nuguria Pileni = Pileni Nukumanu = Nukumanu @@ -4275,24 +4133,21 @@ You lowly, arrogant fool! I will make you regret of your insolence! = Ti niska, You scoundrel! I shall prepare to fend you off! = Huljo jedna! Pripremit ću se odbiti te! Although I lost, my honor shall endure. I wish you good luck. = Iako sam izgubio, moja će čast opstati. Želim ti puno sreće. I, Pho Kun Ramkhamhaeng, King of Siam, consider it a great honor that you have walked to visit my country of Siam. = Ja, Pho Kun Ramkhamhaeng, Kralj Sijama, smatram velikom čašću što si došetao(la) posjetili moju zemlju Sijam. -Greetings. I believe this is a fair proposal for both parties. What do you think? = Pozdrav. Vjerujem da je ovo pošten prijedlog za obje strane. Što ti misliš -Welcome. = Dobrodošao +Greetings. I believe this is a fair proposal for both parties. What do you think? = Pozdrav. Vjerujem da je ovo pošten prijedlog za obje strane. Što ti misliš? +Welcome. = Dobrodošao(la) Father Governs Children = Otac Upravlja Djecom O Great King Ramkhamhaeng, the Siamese people obey you with respect and fear! The beautiful and mysterious land of Siam is an ancient country in the heart of Southeast Asia, which was besieged by many foes, plagued by bloody war and great poverty, but eventually the smart and loyal Siamese people have endured and triumphed. Siam was a part of the Khmer Empire until the 13th century AD, before its brave people took arms and led a revolution to form the small Sukhothai kingdom. After many battles and diplomacy prowess, this tiny kingdom became a mighty empire, which would dominate South East Asia for more than a century. = O Veliki Kralju Ramkhamhaeng, Sijamski narod ti se pokorava s poštovanjem i strahom! Prekrasna i tajanstvena zemlja Siam je drevna zemlja u srcu Jugoistočne Azije, koju su opsjedali mnogi neprijatelji, prožeta krvavim ratom i velikim siromaštvom, ali na kraju su pametni i odani sijamski ljudi izdržali i pobijedili. Sijam je bio dio Kmerskog Carstva do 13. stoljeća po. Kr., prije nego što su se njegovi hrabri ljudi naoružali i poveli revoluciju da formiraju malo kraljevstvo Sukhothai. Nakon mnogih bitaka i diplomacije, ovo maleno kraljevstvo postalo je moćno carstvo, koje će dominirati Jugoistočnom Azijom više od jednog stoljeća. Wise and powerful King Ramkhamhaeng, your people want to revive these days of glory! Can you make a new dawn break on Siam? Will your new empire shine through the ages of history? = Mudri i moćni Kralju Ramkhamhaeng, tvoj narod želi oživjeti ove dane slave! Možeš li napraviti novu zoru na Sijamu? Hoće li tvoje tvoje novo carstvo sjati kroz stoljeća povijesti? Sukhothai = Sukhothai Si Satchanalai = Si Satchanalai - # Requires translation! -Muang Saluang = +Muang Saluang = Muang Saluang Lampang = Lampang Phitsanulok = Phitsanulok Kamphaeng Pet = Kamfaeng Fet - # Requires translation! -Nakhom Chum = +Nakhom Chum = Nakhom Chum Vientiane = Vientiane Nakhon Si Thammarat = Nakhon Si Thammarat - # Requires translation! -Martaban = +Martaban = Martaban Nakhon Sawan = Nakhon Sawan Chainat = Chai Nat Luang Prabang = Luang Prabang @@ -4302,20 +4157,15 @@ Phrae = Phrae Nan = Nan Tak = Tak Suphanburi = Suphan Buri - # Requires translation! -Hongsawadee = - # Requires translation! -Thawaii = +Hongsawadee = Hongsawadee +Thawaii = Thavaji Ayutthaya = Ayutthaya Taphan Hin = Taphan Hin Uthai Thani = Uthai Thani - # Requires translation! -Lap Buri = - # Requires translation! -Ratchasima = +Lap Buri = Lap Buri +Ratchasima = Ratchasima Ban Phai = Ban Phai - # Requires translation! -Loci = +Loci = Loci Khon Kaen = Khon Kaen Surin = Surin Siam = Sijam @@ -4373,7 +4223,7 @@ Spain = Španjolska Askia = Askia You are an abomination to heaven and earth, the chief of ignorant savages! You must be destroyed! = Ti si grozota do neba i zemlje, poglavico neukih divljaka! Moraš biti uništen(a)! -Fool! You have doomed your people to fire and destruction! = Budala! Osudio si svoj narod na vatru i uništenje! +Fool! You have doomed your people to fire and destruction! = Budala! Osudio(la) si svoj narod na vatru i uništenje! We have been consumed by the fires of hatred and rage. Enjoy your victory in this world - you shall pay a heavy price in the next! = Bili smo proždrijeti požarima mržnje i bijesa. Uživaj u svojoj pobjedi u ovom svijetu - platit ćeš visoku cijenu u sljedećem! I am Askia of the Songhai. We are a fair people - but those who cross us will find only destruction. You would do well to avoid repeating the mistakes others have made in the past. = Ja sam Askia od Songaja. Mi smo pošten narod - ali oni koji nas prijeđu čekaju samo uništenje. Dobro bi bilo da izbjegavaš ponavljanje grešaka koje su drugi činili u prošlosti. Can I interest you in this deal? = Mogu li te zainteresirati za ovu nagodbu? @@ -4384,48 +4234,38 @@ Gao = Gao Tombouctu = Timbuktu Jenne = Djenné Taghaza = Taghaza - # Requires translation! -Tondibi = +Tondibi = Tondibi Kumbi Saleh = Koumbi Saleh - # Requires translation! -Kukia = - # Requires translation! -Walata = +Kukia = Kukia +Walata = Walata Tegdaoust = Tegdaoust Argungu = Argungu Gwandu = Gwanda Kebbi = Kebbi Boussa = Bussa - # Requires translation! -Motpi = +Motpi = Motpi Bamako = Bamako Wa = Wa - # Requires translation! -Kayes = +Kayes = Kayes Awdaghost = Aoudaghost Ouadane = Ouadane Dakar = Dakar - # Requires translation! -Tadmekket = - # Requires translation! -Tekedda = +Tadmekket = Tadmekket +Tekedda = Tekedda Kano = Kano Agadez = Agadez Niamey = Niamey - # Requires translation! -Torodi = - # Requires translation! -Ouatagouna = +Torodi = Torodi +Ouatagouna = Ouatagouna Dori = Dori - # Requires translation! -Bamba = +Bamba = Bamba Segou = Ségou Songhai = Songaj Genghis Khan = Džingis-Kan You stand in the way of my armies. Let us solve this like warriors! = Stojiš na putu mojim vojskama. Riješimo ovo kao ratnici! No more words. Today, Mongolia charges toward your defeat. = Nema više riječi. Danas, Mongolija naplaćuje tvoj poraz. -You have hobbled the Mongolian clans. My respect for you nearly matches the loathing. I am waiting for my execution. = Narušio si mongolske klanove. Moje poštovanje prema tebi gotovo je jednako preziru. Čekam svoje smaknuće. +You have hobbled the Mongolian clans. My respect for you nearly matches the loathing. I am waiting for my execution. = Narušio(la) si mongolske klanove. Moje poštovanje prema tebi gotovo je jednako preziru. Čekam svoje smaknuće. I am Temuujin, conqueror of cities and countries. Before me lie future Mongolian lands. Behind me is the only cavalry that matters. = Ja sam Temuujin, osvajač gradova i zemalja. Preda mnom leže buduće mongolske zemlje. Iza mene je jedina konjica koja je važna. I am not always this generous, but we hope you take this rare opportunity we give you. = Nisam uvijek tako velikodušan, ali nadamo se da ćeš iskoristiti ovu rijetku priliku koju vam pružamo. So what now? = Pa što sada? @@ -4433,24 +4273,17 @@ Mongol Terror = Mongolski Teror O great Temuujin, immortal leader of the mighty Mongol Empire! Your name alone was enough to make cities crumble, and the sound of the mighty Mongol cavalry to make your enemies flee! O Great Khan! Once Northern Asia united into a mighty people, producing one of the greatest armies the world has ever known, your skillful mounted archers conquered in only a few years, most of China, Eastern Asia, and even reached the gates of Europe at the West. With cunning diplomacy and brilliant warfare, you swept your enemies one after another, creating the greatest empire ever seen, reducing Roman or Greek conquests to minor achievements. = O veliki Temuujine, besmrtni vođo moćnog Mongolskog Carstva! Samo tvoje ime bilo je dovoljno da se gradovi ruše, a zvuk moćne Mongolske konjice da natjera tvoje neprijatelje u bijeg! O Veliki Kane! Nakon što se Sjeverna Azija ujedinila u moćni narod, stvarajući jednu od najvećih vojski koju je svijet ikada vidio, tvoji vješti strijelci na konjima osvojili su u samo nekoliko godina veći dio Kine, Istočnu Aziju i čak stigli do vrata Europe na Zapadu. Lukavom diplomacijom i briljantnim ratovanjem, pomeli ste svoje neprijatelje jednog za drugim, stvarajući najveće carstvo ikada viđeno, svodeći rimska i Grčka osvajanja na niža postignuća. Divine Temuujin, battles and conquests run through the veins of the Mongols. Are you ready to shatter the will of your enemies? Will your cavalry ride in the steppes once again and strike as lightning and thunder? Will your new empire shine through the ages of history? = Božanski Temuujin, bitke i osvajanja teku venama Mongola. Jesi li spreman slomiti volju svojih neprijatelja? Hoće li tvoja konjica još jednom jahati stepama i udarati poput munje i groma? Hoće li tvoje novo carstvo sjati kroz stoljeća povijesti? Karakorum = Kharkhorin - # Requires translation! -Beshbalik = - # Requires translation! -Turfan = - # Requires translation! -Hsia = - # Requires translation! -Old Sarai = - # Requires translation! -New Sarai = +Beshbalik = Beshbalik +Turfan = Turpan +Hsia = Hsia +Old Sarai = Stari Saraj +New Sarai = Novi Saraj Tabriz = Tabriz - # Requires translation! -Tiflis = +Tiflis = Tiflis Otrar = Otrar Sanchu = Sanchu Kazan = Kazanj - # Requires translation! -Almarikh = +Almarikh = Almarikh Ulaanbaatar = Ulan Bator Hovd = Khovd Darhan = Darkhan @@ -4458,12 +4291,10 @@ Dalandzadgad = Dalanzadgad Mandalgovi = Mandalgovi Choybalsan = Choibalsan Erdenet = Erdenet - # Requires translation! -Tsetserieg = +Tsetserieg = Tsetserleg Baruun-Urt = Baruun-Urt Ereen = Ereen - # Requires translation! -Batshireet = +Batshireet = Batširet Choyr = Choir Ulaangom = Ulaangom Tosontsengel = Tosontsengel @@ -4472,8 +4303,7 @@ Uliastay = Uliastai Bayanhongor = Bayankhongor Har-Ayrag = Har-Ayrag Nalayh = Nalaikh - # Requires translation! -Tes = +Tes = Tes Mongolia = Mongolija Montezuma I = Montezuma I @@ -4482,86 +4312,51 @@ Excellent! Let the blood flow in raging torrents! = izvrsno! Neka krv teče u bi Monster! Who are you to destroy my greatness? = Čudovište! Tko si ti da uništavaš moju veličinu? What do I see before me? Another beating heart for my sacrificial fire. = Što vidim pred sobom? Još jedno srce koje kuca za moju žrtvenu vatru. Accept this agreement or suffer the consequences. = Prihvati ovaj sporazum ili snosi posljedice. -Welcome, friend. = Dobro došao, prijatelju. +Welcome, friend. = Dobro došao, prijatelju(ice). Sacrificial Captives = Žrtveni Zarobljenici O divine Montezuma, your people welcome you! May your magnificence inspire all living things! The mighty Aztecs were nomads until the 12th century, when they choose to settle in the mesa central, which would later be called Mexico. Wars were frequent with other tribes to control the rich land surrounding the sacred lakes of Texcoco, Xaltocan and Zampango. In some 200 years, double-sided alliances and martial prowess made of the Aztecs the dominant power in the Central American basin, forming a mighty empire stretching from sea to sea. Alas, the empire fell under the assault of foreign devils - the Spaniards and many curses they brought with them! Wars between tribes and weaponry of doom used by the invaders made the great Aztec civilization crumble in only a few decades. = O božanski Montezuma, tvoj narod te pozdravlja! Neka tvoja veličanstvenost nadahne sva živa bića! Moćni Asteci bili su nomadi do 12. stoljeća, kada su se odlučili nastaniti u središnjoj mezi, koja će se kasnije nazvati Meksikom. Česti su bili ratovi s drugim plemenima za kontrolu bogate zemlje koja okružuje sveta jezera Texcoco, Xaltocan i Zampango. U nekih 200 godina, dvostrani savezi i ratna snaga učinili su Asteke dominantnom silom u Srednjoameričkom bazenu, formirajući moćno carstvo koje se proteže od mora do mora. Jao, carstvo je palo pod napadom stranih đavola - Španjolaca i mnogih prokletstava koja su sa sobom donijeli! Ratovi između plemena i oružje propasti koje su koristili osvajači učinili su da se velika Astečka civilizacija raspadne u samo nekoliko desetljeća. O mighty King Montezuma, do you hear the call of your people seeking for revenge? Will you lead them to victory under the light of the Five Suns? Will your new empire shine through the ages of history? = O moćni Kralju Montezuma, čuješ li poziv svog naroda koji traži osvetu? Hoćeš li ih povesti do pobjede pod svjetlom Pet Sunaca? Hoće li tvoje novo carstvo sjati kroz stoljeća povijesti? - # Requires translation! -Tenochtitlan = - # Requires translation! -Teotihuacan = - # Requires translation! -Tlatelolco = - # Requires translation! -Texcoco = - # Requires translation! -Tlaxcala = - # Requires translation! -Calixtlahuaca = - # Requires translation! -Xochicalco = - # Requires translation! -Tlacopan = - # Requires translation! -Atzcapotzalco = - # Requires translation! -Tzintzuntzan = - # Requires translation! -Malinalco = - # Requires translation! -Tamuin = - # Requires translation! -Teayo = - # Requires translation! -Cempoala = - # Requires translation! -Chalco = - # Requires translation! -Tlalmanalco = - # Requires translation! -Ixtapaluca = - # Requires translation! -Huexotla = - # Requires translation! -Tepexpan = - # Requires translation! -Tepetlaoxtoc = - # Requires translation! -Chiconautla = - # Requires translation! -Zitlaltepec = - # Requires translation! -Coyotepec = - # Requires translation! -Tequixquiac = - # Requires translation! -Jilotzingo = - # Requires translation! -Tlapanaloya = - # Requires translation! -Tultitan = - # Requires translation! -Ecatepec = - # Requires translation! -Coatepec = - # Requires translation! -Chalchiuites = - # Requires translation! -Chiauhita = - # Requires translation! -Chapultepec = - # Requires translation! -Itzapalapa = - # Requires translation! -Ayotzinco = - # Requires translation! -Iztapam = +Tenochtitlan = Tenochtitlán +Teotihuacan = Teotihuacán +Tlatelolco = Tlatelolco +Texcoco = Texcoco +Tlaxcala = Tlaxcala +Calixtlahuaca = Kalistlavaka +Xochicalco = Xochicalco +Tlacopan = Tlacopan +Atzcapotzalco = Azcapotzalco +Tzintzuntzan = Tzintzuntzan +Malinalco = Malinalco +Tamuin = Tamuín +Teayo = Teayo +Cempoala = Cempoala +Chalco = Chalco +Tlalmanalco = Tlalmanalco +Ixtapaluca = Ixtapaluca +Huexotla = Huexotla +Tepexpan = Tepexpan +Tepetlaoxtoc = El Tepetloxto +Chiconautla = Chiconautla +Zitlaltepec = Zitlaltépec +Coyotepec = Coyotepec +Tequixquiac = Tequixquiac +Jilotzingo = Jilotzingo +Tlapanaloya = Tlapanaloya +Tultitan = Tultitán +Ecatepec = Ecatepec +Coatepec = Ecatepec +Chalchiuites = Chalchiuites +Chiauhita = Chiauhita +Chapultepec = Chapultepec +Itzapalapa = Iztapalapa +Ayotzinco = Ayotzinapa +Iztapam = Iztapamoto Aztecs = Asteci Pachacuti = Pachacuti Resistance is futile! You cannot hope to stand against the mighty Incan empire. If you will not surrender immediately, then prepare for war! = Otpor je uzaludan! Ne možeš se nadati da ćeš se suprotstaviti moćnom carstvu Inka. Ako se nećeš odmah predati, onda se pripremi za rat! Declare war on me?!? You can't, because I declare war on you first! = Objaviti mi rat?!? Ne možeš, jer ja tebi prvi objavljujem rat! -How did you darken the sun? I ruled with diligence and mercy—see that you do so as well. = Kako si zamračio sunce? Vladao sam marljivo i milosrdno - pobrini se da i ti tako učiniš. +How did you darken the sun? I ruled with diligence and mercy—see that you do so as well. = Kako si zamračio(la) sunce? Vladao sam marljivo i milosrdno - pobrini se da i ti tako učiniš. How are you? You stand before Pachacuti Inca Yupanqui. = Kako si? Stojiš ispred Pachacuti Inka Yupanqui. The Incan people offer this fair trade. = Narod Inke nudi ovu poštenu trgovinu. How are you doing? = Kako si? @@ -4569,76 +4364,41 @@ What do you want now? = Što sad želiš? Great Andean Road = Velika Andska Cesta King Pachacuti Sapa Inca, maker of the world and ruler of Tawantinsuyu and the Inca people, your loyal subjects greet you! In the beginning, the small state of Cusco already showed the Incans were promised for greatness. They won many wars against powerful enemies, relentlessly crushing any army that dared oppose them, and forged a mighty empire stretching from Ecuador to Chile, the greatest ever seen in pre-Columbian America. Not just undaunted soldiers, Inca people were accomplished builders and artists, their magnificient and unequalled culture still fascinating the world today. = Kralj Pachacuti Sapa Inka, tvorac svijeta i vladar Tawantinsuyua i naroda Inka, pozdravljaju te tvoji vjerni podanici! U početku je mala država Cusco već pokazala da su Inke obećane za veličinu. Pobijedili su u mnogim ratovima protiv moćnih neprijatelja, nemilosrdno slamajući svaku vojsku koja im se usudila suprotstaviti, i stvorili su moćno carstvo koje se protezalo od Ekvadora do Čilea, najveće ikada viđeno u pretkolumbovskoj Americi. Ne samo neustrašivi vojnici, ljudi Inka bili su vrsni graditelji i umjetnici, njihova veličanstvena i nenadmašna kultura i danas fascinira svijet. O Emperor Pachacuti, honor your name of 'Earth Shaker'! Will you once again summon the power of the earth to unite all Incan people under the protection of Sapa Inca, the Son of the Sun? Will your new empire shine through the ages of history? = O Care Pachacuti, poštuj svoje ime 'Zemljotresac'! Hoćeš li još jednom prizvati snagu zemlje da ujediniš sve ljude Inka pod zaštitom Sapa Inca, Sina Sunca? Hoće li tvoje novo carstvo sjati kroz stoljeća povijesti? - # Requires translation! -Cuzco = - # Requires translation! -Tiwanaku = - # Requires translation! -Machu = - # Requires translation! -Ollantaytambo = - # Requires translation! -Corihuayrachina = - # Requires translation! -Huamanga = - # Requires translation! -Rumicucho = - # Requires translation! -Vilcabamba = - # Requires translation! -Vitcos = - # Requires translation! -Andahuaylas = - # Requires translation! -Ica = - # Requires translation! -Arequipa = - # Requires translation! -Nasca = - # Requires translation! -Atico = - # Requires translation! -Juli = - # Requires translation! -Chuito = - # Requires translation! -Chuquiapo = - # Requires translation! -Huanuco Pampa = - # Requires translation! -Tamboccocha = - # Requires translation! -Huaras = - # Requires translation! -Riobamba = - # Requires translation! -Caxamalca = - # Requires translation! -Sausa = - # Requires translation! -Tambo Colorado = - # Requires translation! -Huaca = - # Requires translation! -Tumbes = - # Requires translation! -Chan Chan = - # Requires translation! -Sipan = - # Requires translation! -Pachacamac = - # Requires translation! -Llactapata = - # Requires translation! -Pisac = - # Requires translation! -Kuelap = - # Requires translation! -Pajaten = - # Requires translation! -Chucuito = - # Requires translation! -Choquequirao = +Cuzco = Cusco +Tiwanaku = Tiahuanaco +Machu = Machu +Ollantaytambo = Ollantaytambo +Corihuayrachina = Quriwayrachina +Huamanga = Ayacucho +Rumicucho = Rumicucho +Vilcabamba = Vilcabamba +Vitcos = Vitcos +Andahuaylas = Andahuaylas +Ica = Ica +Arequipa = Arequipa +Nasca = Nazca +Atico = Atico +Juli = Juli +Chuito = Chuit +Chuquiapo = Chuquiapo +Huanuco Pampa = Huánuco Pampa +Tamboccocha = Tamboccocha +Huaras = Huaraz +Riobamba = Riobamba +Caxamalca = Caxamalca +Sausa = Sausa +Tambo Colorado = Tambo Colorado +Huaca = Huacachina +Tumbes = Tumbes +Chan Chan = Chan Chan +Sipan = Sipán +Pachacamac = Pachacamac +Llactapata = Llaqtapata +Pisac = Písac +Kuelap = Kuelap +Pajaten = Pajaten +Chucuito = Chucuito +Choquequirao = Choquequirao Inca = Inka Harald Bluetooth = Harald Modrozubi @@ -4661,34 +4421,26 @@ Roskilde = Roskilde Hedeby = Hedeby Oslo = Oslo Jelling = Jelling - # Requires translation! -Truso = +Truso = Truso Bergen = Bergen - # Requires translation! -Faeroerne = +Faeroerne = Farski otoci Reykjavik = Reykjavik Trondheim = Trondheim Godthab = Nuuk - # Requires translation! -Helluland = +Helluland = Helluland Lillehammer = Lillehammer - # Requires translation! -Markland = - # Requires translation! -Elsinore = +Markland = Markland +Elsinore = Helsingør Sarpsborg = Sarpsborg Odense = Odense Aalborg = Aalborg Stavanger = Stavanger Vorbasse = Vorbasse - # Requires translation! -Schleswig = +Schleswig = Slesvig Kristiansand = Kristiansand - # Requires translation! -Halogaland = +Halogaland = Hålogaland Randers = Randers - # Requires translation! -Fredrikstad = +Fredrikstad = Fredrikstad Kolding = Kolding Horsens = Horsens Tromsoe = Tromsø @@ -4704,8 +4456,7 @@ Skien = Skien Svendborg = Svendborg Holbaek = Holbæk Hjorring = Hjørring - # Requires translation! -Fladstrand = +Fladstrand = Fladstrand Haderslev = Haderslev Ringsted = Ringsted Skrive = Skive @@ -4713,7 +4464,7 @@ Denmark = Danska You leave us no choice. War it must be. = Ne ostavljaš nam izbora. Rat mora biti. Very well, this shall not be forgotten. = Dobro, ovo se neće zaboraviti. -I guess you weren't here for the sprouts after all... = Valjda ipak niste bio ovdje zbog klica... +I guess you weren't here for the sprouts after all... = Valjda ipak nisi bio(la) ovdje zbog klica... Brussels = Bruxelles And so the flower of Florence falls to barbaric hands... = I tako cvijet Firence padne u ruke barbara... @@ -4739,13 +4490,13 @@ Quebec City = Québec I have failed. May you, at least, know compassion towards our people. = nisam uspio. Možeš li barem, znati suosjećati prema našem narodu. Cape Town = Kaapstad -The day of judgement has come to us. But rest assured, the same will go for you! = Došao nam je i sudnji dan. Ali budi uvjereni, isto će vrijediti i za tebe! +The day of judgement has come to us. But rest assured, the same will go for you! = Došao nam je i sudnji dan. Ali budi uvjereni(a), isto će vrijediti i za tebe! Helsinki = Helsinki Ah, Gods! Why have you forsaken us? = Ah, bogovi! Zašto ste nas napustili? Manila = Manila -Congratulations, conqueror. This tribe serves you now. = Čestitam, osvajače. Ovo pleme ti sada služi. +Congratulations, conqueror. This tribe serves you now. = Čestitam, osvajače(ice). Ovo pleme ti sada služi. Mogadishu = Mogadiš I have to do this, for the sake of progress if nothing else. You must be opposed! = Moram ovo učiniti, ako ništa drugo zbog napretka. Moraš biti protiv! @@ -4758,7 +4509,7 @@ We will mobilize every means of resistance to stop this transgression against ou The principles for which we have fought will survive longer than any nation you could ever build. = Načela za koja smo se borili preživjet će dulje od bilo koje nacije koju bi ikada mogao(la) izgraditi. Sydney = Sydney -I will enjoy hearing your last breath as you witness the destruction of your realm! = Uživat ću čuti tvoj posljednji dah dok budeš svjedočio uništenju svog kraljevstva! +I will enjoy hearing your last breath as you witness the destruction of your realm! = Uživat ću čuti tvoj posljednji dah dok budeš svjedočio(la) uništenju svog kraljevstva! Why do we fight? Because Inanna demands it. Now, witness the power of the Sumerians! = Zašto se svađamo? Jer Inanna to zahtijeva. Sada svjedoči moći Sumerana! What treachery has struck us? No, what evil? = Kakva nas je izdaja pogodila? Ne, koje zlo? Ur = Ur @@ -4768,7 +4519,7 @@ As we can reach no peaceful resolution with you, Canada must turn, with reluctan I regret not defending my country to the last, although it was not of use. = Žao mi je što nisam branio svoju zemlju do zadnjeg, iako od toga nije bilo koristi. Vancouver = Vancouver -You have revealed your purposes a bit too early, my friend... = Malo si prerano otkrio svoje ciljeve, prijatelju moj... +You have revealed your purposes a bit too early, my friend... = Malo si prerano otkrio(la) svoje ciljeve, prijatelju(ice) moj(a)... A wrong calculation, on my part. = Pogrešna računica s moje strane. Venice = Venecija @@ -4799,8 +4550,8 @@ The serbian guerilla will never stop haunting you! = Srpska gerila te nikada ne Belgrade = Beograd War lingers in our hearts. Why carry on with a false peace? = Rat ostaje u našim srcima. Zašto nastaviti s lažnim mirom? -You gormless radger! You'll dine on your own teeth before you set foot in Ireland! = Ti bezglavi divlajče! Večerat ćeš na vlastitim zubima prije nego kročiš u Irsku! -A lonely wind blows through the highlands today. A dirge for Ireland. Can you hear it? = Usamljeni vjetar danas puše gorjem. Tužbalica za Irsku. čuješ li +You gormless radger! You'll dine on your own teeth before you set foot in Ireland! = Ti bezglavi(a) divlajče(kinjo)! Večerat ćeš na vlastitim zubima prije nego kročiš u Irsku! +A lonely wind blows through the highlands today. A dirge for Ireland. Can you hear it? = Usamljeni vjetar danas puše gorjem. Tužbalica za Irsku. čuješ li? Dublin = Dublin You shall stain this land no longer with your vileness! To arms, my countrymen - we ride to war! = Nećeš više kaljati ovu zemlju svojom podlošću! Na oružje, moji zemljaci - jašemo u rat! @@ -4809,7 +4560,7 @@ Vile ruler, know that you 'won' this war in name only! = Podli vladaru, znaj da Edinburgh = Edinburgh Do you really think you can walk over us so easily? I will not let it happen. Not to Kongo - not to my people! = Zar stvarno misliš da nas možeš tako lako pregaziti? Neću dopustiti da se to dogodi. Ne Kongu - ne mom narodu! -We are no strangers to war. You have strayed from the right path, and now we will correct it. = Rat nam nije stran. Skrenuo si s pravog puta, a sada ćemo to ispraviti. +We are no strangers to war. You have strayed from the right path, and now we will correct it. = Rat nam nije stran. Skrenuo(la) si s pravog puta, a sada ćemo to ispraviti. You are nothing but a glorified barbarian. Cruel, and ruthless. = Ti nisi ništa drugo nego proslavljeni barbarin. Okrutno i nemilosrdno. M'Banza-Kongo = M'banza Kongo @@ -4817,7 +4568,7 @@ What a fine battle! Sidon is willing to serve you! = Kakva dobra bitka! Sidon ti Sidon = Sidon We don't like your face. To arms! = Ne sviđa nam se tvoje lice. Na oružje! -You will see you have just bitten off more than you can chew. = Vidjet ćeš da si upravo zagrizao više nego što možeš sažvakati. +You will see you have just bitten off more than you can chew. = Vidjet ćeš da si upravo zagrizao(la) više nego što možeš sažvakati. This ship may sink, but our spirits will linger. = Ovaj brod može potonuti, ali naš duh će ostati. Valletta = Valletta @@ -4950,7 +4701,7 @@ Invest = Uloži Our people are rejoicing thanks to a tourism boom. For a certain amount of time, any Gold donation will yield [50]% extra Influence. = Naši se ljudi vesele zahvaljujući turističkom procvatu. Za određeno vrijeme svaka donacija Zlata donijet će [50]% dodatnog utjecaja. Bully City State = Maltretiraj Grad Državu -We are tired of the pretensions of [cityState]. If someone were to put them in their place by Demanding Tribute from them, they would be rewarded. = Umorni smo od pretenzija [cityState]. Ako bi ih neko postavio na njihovo mjesto Tražeći od njih Danak, bili bi nagrađeni. +We are tired of the pretensions of [cityState]. If someone were to put them in their place by Demanding Tribute from them, they would be rewarded. = Umorni smo od pretenzija [cityState]. Ako bi ih neko postavio na njihovo mjesto Zahtijevajući od njih Danak, bili bi nagrađeni. Denounce Civilization = Osudi Civilizaciju We have been forced to pay tribute to [civName]! We need you to tell the world of their ill deeds. = Bili smo prisiljeni platiti danak [civName]! Trebamo te da kažeš svijetu za njihova zla djela. @@ -4963,7 +4714,7 @@ We have heard the tenets of [religionName] and are most curious. Will you send m We have discovered cultural artifacts in the ruins! (+20 culture) = Otkrili smo kulturne artefakte u ruševinama! (+20 kulture) discover cultural artifacts = otkrij kulturne artefakte -squatters willing to work for you = skvoteri spremni raditi za tebe +squatters willing to work for you = skvoteri voljni raditi za tebe squatters wishing to settle under your rule = skvoteri koji se žele nastaniti pod tvojom vlašću @@ -5205,7 +4956,7 @@ Only Polders can be built here = Ovdje se mogu graditi samo Polderi Fallout = Radioaktivno Područje -Oases provide fresh water to adjacent tiles, allowing farming where it would otherwise not be possible (similar to Rivers and Lakes). = Oaze daju svježu vodu susjednim poljima, omogućujući poljoprivredu tamo gdje inače ne bi bilo moguće (slično Rijekama i Jezerima). +Oases provide fresh water to adjacent tiles, allowing farming where it would otherwise not be possible (similar to Rivers and Lakes). = Oaze daju slatku vodu susjednim poljima, omogućujući poljoprivredu tamo gdje inače ne bi bilo moguće (slično Rijekama i Jezerima). Flood plains = Poplavne ravnice @@ -5269,7 +5020,7 @@ Fort = Utvrda Reduces movement cost to ½ if the other tile also has a Road or Railroad = Smanjuje cijenu kretanja na ½ ako drugo polje također ima Cestu ili Željeznicu Reduces movement cost to ⅓ with Machinery = Smanjuje cijenu kretanja na ⅓ sa Strojevima -Requires Engineering to bridge rivers = Za premošćivanje rijeka potreban je Inženjering +Requires Engineering to bridge rivers = Za premošćivanje rijeka zahtijeva Inženjering Railroad = Željeznica Reduces movement cost to ⅒ if the other tile also has a Railroad = Smanjuje cijenu kretanja na ⅒ ako drugo polje također ima Željeznicu @@ -5623,8 +5374,7 @@ Bowman = Strijelac Lukom Slinger = Praćkač - # Requires translation! -Skirmisher = +Skirmisher = Čarkar Work Boats = Radni Čamci @@ -5676,15 +5426,13 @@ Keshik = Keshik Crossbowman = Samostreličar - # Requires translation! -Chu-Ko-Nu = +Chu-Ko-Nu = Chu-Ko-Nu Longbowman = Dugi Strijelac Lukom Trebuchet = Trebuše - # Requires translation! -Hwach'a = +Hwach'a = Hwacha Longswordsman = Dugi Mačevalac @@ -6033,10 +5781,10 @@ Found a city! = Osnujte grad! Select the Settler → Click on 'Found city'. = Odaberite Naseljenika → Kliknite na 'Osnuj grad'. Enter the city screen! = Uđite u zaslon grada! -Click the city button twice. = Dva puta kliknite na dugme grada. +Click the city button twice. = Dva puta kliknite na gumb grada. Pick a technology to research! = Odaberite tehnologiju za istraživanje! -Click on the tech button → Select technology → Click 'Research' (bottom right). = Kliknite na dugme za tehnologije → Odaberite tehnologiju → kliknite 'Istraži' (dolje desno). +Click on the tech button → Select technology → Click 'Research' (bottom right). = Kliknite na gumb za tehnologije → Odaberite tehnologiju → kliknite 'Istraži' (dolje desno). Pick a construction! = Odaberite izgradnju! Enter city screen → Click on a unit or building → Click 'add to queue'. = Uđite u zaslon grada → Kliknite na jedinicu ili zgradu → Kliknite 'dodaj u red čekanja'. @@ -6052,7 +5800,7 @@ Meet another civilization! = Sretnite drugu civilizaciju! Explore the map until you encounter another civilization! = Istražujte kartu dok ne naiđete na drugu civilizaciju! Open the options dialog! = Otvorite dialog opcija! -Click the menu button (top left) → Click 'Options'. = Kliknite dugme izbornika (gore lijevo) → Kliknite 'Opcije'. +Click the menu button (top left) → Click 'Options'. = Kliknite gumb izbornika (gore lijevo) → Kliknite 'Opcije'. Construct an improvement! = Izgradite unaprjeđenje! Construct a Worker unit → Move it to a Plains or Grassland tile → Click 'Construct improvement' → Choose the farm → Leave the worker there until it's finished. = Izgradite jedinicu Radnika → Pomaknite ga na polje Ravnica ili Travnjak → Kliknite 'Izgradi unaprjeđenje' → Odaberite farmu → Ostavite radnika tamo dok ne završi. @@ -6081,8 +5829,7 @@ Ur-zigurumaš = Urzigurumaš Semiramis = Semiramida Em = Em Ishtar = Ištar - # Requires translation! -Bilit Taauth = +Bilit Taauth = Bilit Taauth Aruru = Aruru Islam = Islam @@ -6093,10 +5840,8 @@ Cletus = Cletus Kassandra = Kasandra Andres = Andres Desdemona = Desdemona - # Requires translation! -Anthea = - # Requires translation! -Aeneas = +Anthea = Antea +Aeneas = Eneja Leander = Leander Christianity = Kršćanstvo @@ -6112,8 +5857,7 @@ Zhou = Zhou Sun = Sun Taoism = Taoizam - # Requires translation! -Refaat = +Refaat = Refaat Heba = Heba Salah = Namaz Ahmed = Ahmed @@ -6162,35 +5906,24 @@ Regula = Regula Servius = Servije Lucia = Lucija Cornelius = Kornelije - # Requires translation! -Licina = - # Requires translation! -Canus = - # Requires translation! -Serpens = +Licina = Licinja +Canus = Canus +Serpens = Serpens Agrippa = Agripa Brutus = Brut - # Requires translation! -Solhofaat = - # Requires translation! -Khenzeer = - # Requires translation! -Zarafah = - # Requires translation! -Temsaah = - # Requires translation! -Abyadh = +Solhofaat = Solhofaat +Khenzeer = Khenzeer +Zarafah = Zarafah +Temsaah = Temsaah +Abyadh = Abyadh Mostafa = Mustafa Yusuf = Jusuf - # Requires translation! -Waddah = - # Requires translation! -Sameera = +Waddah = Waddah +Sameera = Sameera Gamal = Gamal - # Requires translation! -Cousin = +Cousin = Cousin Felix = Feliks Dennis = Denis Edward = Eduard @@ -6212,20 +5945,16 @@ Kaede = Kaede Mochizuki = Mochizuki Shinto = Šintoizam - # Requires translation! -Ashok = - # Requires translation! -Shanx = - # Requires translation! -Hormis = +Ashok = Ashok +Shanx = Shanx +Hormis = Hormis Sanjeev = Sanjeev Ananda = Ananda Rani = Rani Parvati = Parvati Mukta = Mukta Karishma = Karišma - # Requires translation! -Jyotsna = +Jyotsna = Jyotsna Hinduism = Hinduizam Johann = Johann @@ -6240,16 +5969,12 @@ Albrecht = Albrecht Anton = Antun Ibrahim = Ibrahim - # Requires translation! -Bayezid = - # Requires translation! -Sokollu = +Bayezid = Bayezid +Sokollu = Sokollu Mahmut = Mahmut - # Requires translation! -Uveys = +Uveys = Uveys Roxelana = Rokselana - # Requires translation! -Safiye = +Safiye = Safiye Hafsa = Hafsa Kosem = Kosem Nurbanu = Nurbanu @@ -6260,31 +5985,27 @@ Han = Han Na = Na Kong = Kong Yu = Yu - # Requires translation! -Ahn = +Ahn = Ahn Da = Da Eun = Eun Confucianism = Konfucijanizam Onatah = Onatah Oneida = Oneida - # Requires translation! -Oshadagea = +Oshadagea = Oshadagea Otetiani = Otetiani Genesee = Genesee Dadgayadoh = Dadgayadoh Otwtiani = Otwtiani Kateri = Kateri Onondakai = Onondakai - # Requires translation! -Honanyawus = +Honanyawus = Honanyawus Azi = Azi Dabir = Dabir Firuz = Firuz Gaspar = Gašpar - # Requires translation! -Shahzad = +Shahzad = Shahzad Aga = Aga Marjane = Marijana Peri = Peri @@ -6294,8 +6015,7 @@ Zoroastrianism = Zoroastrizam Tiki = Tiki Hotu Matua = Hotu Matua - # Requires translation! -Rongo-ma-tane = +Rongo-ma-tane = Rongo-ma-tane Kupe = Kupe Haloti = Haloti Degei = Degei @@ -6305,16 +6025,13 @@ Nangananga = Nangananga Turua = Turua Aran = Aran - # Requires translation! -Chanarong = +Chanarong = Chanarong Kiet = Kiet Niran = Niran Virote = Virote Kulap = Kulap - # Requires translation! -Mayuree = - # Requires translation! -Phueng = +Mayuree = Mayuree +Phueng = Phueng Ratana = Ratana Tola = Tola Buddhism = Budizam @@ -6335,8 +6052,7 @@ Badru = Badru Bokhari = Bokhari Guedado = Guedado Adhiambo = Adhiambo - # Requires translation! -Chinaka = +Chinaka = Chinaka Laila = Laila Mariama = Mariama Oni = Oni @@ -6345,43 +6061,34 @@ Asashōryū = Asashōryū Tömöriin = Tömöriin Zevegiin = Zevegiin Jigjidiin = Jigjidiin - # Requires translation! -Enkhbat = +Enkhbat = Enkhbat Mönkhbayar = Mönkhbayar Gündegmaa = Gündegmaa Ssima = Ssima - # Requires translation! -Batachikhan = - # Requires translation! -Chulunny = +Batachikhan = Batachikhan +Chulunny = Chulunny Tengriism = Tengrizam Metztli = Metztli - # Requires translation! -Xitllali = - # Requires translation! -Chimalli = +Xitllali = Xitllali +Chimalli = Chimalli Quauhtli = Quauhtli Teyacapan = Teyacapan - # Requires translation! -Yaotl = +Yaotl = Yaotl Coatl = Coatl Huitzilin = Huitzilin Itzli = Itzli Tepin = Tepin Amaru = Amaru - # Requires translation! -Apichu = - # Requires translation! -Pariapichiu = +Apichu = Apichu +Pariapichiu = Pariapichiu Puma = Puma Quenti = Quenti Suyuntu = Suyuntu Uturuncu = Uturuncu Purutu = Purutu - # Requires translation! -Ozcollo = +Ozcollo = Ozcollo Jørgen = Jørgen Mette = Mette @@ -6395,41 +6102,33 @@ Freja = Freja Morten = Morten Attila the Hun = Atila Hun -I grow tired of this throne. I think I should like to have yours instead. = Umoran sam od ovog prijestolja. Mislim da bih volio imati tvoj umjesto njega. +I grow tired of this throne. I think I should like to have yours instead. = Umoran sam od ovog prijestolja. Mislim da bih volio imati tvoje umjesto njega. Now what is this?! You ask me to add your riches to my great avails. The invitation is accepted. = Što je sad ovo?! Tražiš od mene da dodam tvoje bogatstvo mojim velikim koristima. Poziv je prihvaćen. My people will mourn me not with tears, but with human blood. = Narod moj neće me oplakivati suzama, nego ljudskom krvlju. You are in the presence of Attila, scourge of Rome. Do not let hubris be your downfall as well. = Ti si u prisutnosti Atile, biča Rima. Ne dopusti da oholost bude i tvoja propast. This is better than you deserve, but let it not be said that I am an unfair man. = Ovo je bolje nego što zaslužuješ, ali neka se ne kaže da sam nepravedan čovjek. -Good day to you. = Dobar vam dan. +Good day to you. = Dobar ti dan. Scourge of God = Bič Božji Great Attila, mighty warrior and leader of the Hunnic empire, your men bow down before you. During the 5th century, you and your brother Bleda have conquered many lands, forged a mighty empire and commanded the most powerful and frightening force of antiquity. You inspired fear to the Roman Emperors themselves, who called you 'Flagellum Dei', the 'Scourge of God', as you took kingdom after kingdom in the Balkans, invaded Eastern Roman Empire, into Gaul and Northern Italy, and planned to conquer Rome itself. Your empire didn't survive long after your death, but your name and your legend have, for millenia to come. = Veliki Atila, moćni ratniče i vođo Hunskog carstva, tvoji se ljudi klanjaju pred tobom. Tijekom 5. stoljeća, ti i tvoj brat Bleda osvojili ste mnoge zemlje, stvorili moćno carstvo i zapovijedali najmoćnijom i najstrašnijom silom antike. Nadahnuo si strah samim rimskim carevima, koji su te zvali 'Flagellum Dei', 'Bič Božji', dok si osvajao kraljevstvo za kraljevstvom na Balkanu, napadao Istočno Rimsko Carstvo, Galiju i Sjevernu Italiju, i planirao osvojiti sami Rim. Tvoje carstvo nije preživjelo dugo nakon tvoje smrti, ali tvoje ime i tvoja legenda jesu, još tisućljećima. Fearsome General, your mighty hordes are at your command, waiting to crush your foes once again and to conquer all the riches the world has to offer! Will your new empire shine through the ages of history? = Strašni generale, tvoje moćne horde su pod tvojim zapovjedništvom, čekajući da ponovno slome tvoje neprijatelje i osvoje sva bogatstva koja svijet nudi! Hoće li tvoje novo carstvo sjati kroz stoljeća povijesti? Balamber = Balamir Uldin = Uldin - # Requires translation! -Donatus = - # Requires translation! -Charato = - # Requires translation! -Octar = - # Requires translation! -Bleda = - # Requires translation! -Ellac = - # Requires translation! -Dengizik = - # Requires translation! -Hildico = - # Requires translation! -Gudrun = +Donatus = Donat +Charato = Charato +Octar = Octar +Bleda = Bleda +Ellac = Ellac +Dengizik = Dengizich +Hildico = Hildico +Gudrun = Gudrun Attila's Court = Atilin dvor The Huns = Huni William of Orange = Vilim Oranski As much as I despise war, I consider it a, hahaha, contribution to the common cause to erase your existence. = Koliko god prezirao rat, smatram ga, hahaha, doprinosom zajedničkoj stvari brisanja tvojeg postojanja. -You call yourself an exalted ruler, but I see nothing more than a smartly dressed barbarian! = Ti sebe nazivaš uzvišenim vladarom, ali ja ne vidim ništa više od elegantno odjevenog barbara! +You call yourself an exalted ruler, but I see nothing more than a smartly dressed barbarian! = Ti sebe nazivaš uzvišenim(om) vladarom(icom), ali ja ne vidim ništa više od elegantno odjevenog barbara! My God, be merciful to my soul. My God, feel pity for this... my poor people! = Bože moj, milostiv budi mojoj duši. Bože moj, sažali se na ovo... jadni moji ljudi! -I am William of Orange, stadtholder of The Netherlands. Did you need anything? I still have a lot to do. = Ja sam Vilim Oranski, stadtholder Nizozemske. Jesi li nešto trebao? Imam još puno toga za napraviti. +I am William of Orange, stadtholder of The Netherlands. Did you need anything? I still have a lot to do. = Ja sam Vilim Oranski, Nizozemski nositelj grada. Jesi li nešto trebao(la)? Imam još puno toga za napraviti. I believe I have something that may be of some importance to you. = Vjerujem da imam nešto što bi ti moglo biti od neke važnosti. Once again, greetings. = Još jednom, pozdrav. Dutch East India Company = Nizozemska Istočnoindijska Kompanija @@ -6451,7 +6150,7 @@ Utrecht = Utrecht Groningen = Groningen Breda = Breda Nijmegen = Nijmegen -Den Haag = Den Haag +The Hague = Den Haag Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen @@ -6481,12 +6180,12 @@ Kerkrade = Kerkrade The Netherlands = Nizozemska Gustavus Adolphus = Gustav Adolf -The Hakkapeliittas will ride again and your men will fall just at the sight of my cavalry! God with us! = Hakkapeliittas će ponovno jahati i tvoji će ljudi pasti samo kad vide moju konjicu! Bog s nama! +The Hakkapeliittas will ride again and your men will fall just at the sight of my cavalry! God with us! = Hakkapeliitti će ponovno jahati i tvoji će ljudi pasti samo kad vide moju konjicu! Bog s nama! Ha ha ha, captain Gars will be very glad to head out to war again. = Ha ha ha, kapetanu Garsu će biti vrlo drago da ponovno krene u rat. -I am Sweden's king. You can take my lands, my people, my kingdom, but you will never reach the House of Vasa. = Ja sam Švedski kralj. Možeš uzeti moju zemlju, moj narod, moje kraljevstvo, ali nikada nećeš stići do kuće Vasa. -Stranger, welcome to the Snow King's kingdom! I am Gustavus Adolphus, member of the esteemed House of Vasa = Stranče, dobrodošao u kraljevstvo Snježnog kralja! Ja sam Gustavus Adolphus, član cijenjene kuće Vasa -My friend, it is my belief that this settlement can benefit both our peoples. = Prijatelju moj, vjerujem da ova nagodba može koristiti obama našim narodima. -Oh, welcome! = Oh, dobrodošli! +I am Sweden's king. You can take my lands, my people, my kingdom, but you will never reach the House of Vasa. = Ja sam Švedski kralj. Možeš uzeti moju zemlju, moj narod, moje kraljevstvo, ali nikada nećeš stići do Kuće Vasa. +Stranger, welcome to the Snow King's kingdom! I am Gustavus Adolphus, member of the esteemed House of Vasa = Stranče(kinjo), dobrodošao(la) u kraljevstvo Snježnog Kralja! Ja sam Gustavus Adolphus, član cijenjene Kuće Vasa +My friend, it is my belief that this settlement can benefit both our peoples. = Prijatelju(ice) moj(a), vjerujem da ova nagodba može koristiti obama našim narodima. +Oh, welcome! = Oh, dobrodošao(la)! Oh, it is you. = Oh, to si ti. Nobel Prize = Nobelova Nagrada All hail Great King Gustavus Adolphus, founder of the Swedish Empire, and one of the most famous military tacticians. In the early 17th century, Sweden emerged as a great power in Europe under your reign, thanks to your wisdom, both in diplomacy and warfare. As king, you decided to reform Swedish laws to bring economic stability and prosperity to your people. Your allies, and also your enemies, called you the 'Lion of the North', witnessing your modern vision of warfare, and the prowess of your armies on the battlefield. As you triumphed in the Thirty Years' War, your name will be forever remembered as one of history's greatest generals. = Slava Velikom kralju Gustavu Adolfu, osnivaču Švedskog Carstva, i jednom od najpoznatijih vojnih taktičara. Početkom 17. stoljeća, Švedska se pojavila kao velika sila u Europi pod tvojom vladavinom, zahvaljujući tvojoj mudrosti, kako u diplomaciji tako i u ratovanju. Kao kralj, odlučio si reformirati Švedske zakone kako bi svom narodu donio ekonomsku stabilnost i prosperitet. Tvoji saveznici, ali i tvoji neprijatelji, prozvali su te 'Lavom sjevera', svjedočeći tvojoj modernoj viziji ratovanja i junaštvu tvojih armija na bojnom polju. Kako si trijumfirao u Tridesetogodišnjem Tatu, tvoje će ime zauvijek biti zapamćeno kao jedan od najvećih generala u povijesti. @@ -6548,7 +6247,7 @@ Sveg = Sveg Sweden = Švedska Maria Theresa = Marija Terezija -Shame that it has come this far. But ye wished it so. Next time, be so good, choose your words more wisely. = Šteta što je došlo tako daleko. Ali ti si tako želio. Sljedeći put, budi tako dobar, mudrije biraj riječi. +Shame that it has come this far. But ye wished it so. Next time, be so good, choose your words more wisely. = Šteta što je došlo tako daleko. Ali ti si tako želio(jela). Sljedeći put, budi tako dobar(a), mudrije biraj riječi. What a fool ye are! Ye will end swiftly and miserably. = Koja si ti budala! Skončat ćeš brzo i jadno. The world is pitiful! There's no beauty in it, no wisdom. I am almost glad to go. = Svijet je jadan! U tome nema ljepote, nema mudrosti. Gotovo mi je drago što idem. The archduchess of Austria welcomes your Eminence to... Oh let's get this over with! I have a luncheon at four o'clock. = Nadvojvotkinja Austrije želi dobrodošlicu Vašoj Eminenciji u... Oh, završimo s ovim! Imam ručak u četiri sata. @@ -6602,112 +6301,75 @@ Austria = Austrija Dido = Didona Tell me, do you all know how numerous my armies, elephants and the gdadons are? No? Today, you shall find out! = Reci mi, znaš li svi koliko su brojne moje vojske, slonovi i gdadoni? Ne? Danas ćeš saznati! Fate is against you. You earned the animosity of Carthage in your exploration. Your days are numbered. = Sudbina je protiv tebe. Zaradio(la) si neprijateljstvo Kartage u svom istraživanju. Dani su ti odbrojani. -The fates became to hate me. This is it? You wouldn't destroy us so without their help. = Sudbine su me mrzile. To je to? Ne biste nas tako uništili bez njihove pomoći. -The Phoenicians welcome you to this most pleasant kingdom. I am Dido, the queen of Carthage and all that belongs to it. = Feničani vam žele dobrodošlicu u ovo najugodnije kraljevstvo. Ja sam Didona, kraljica Kartage i svega što joj pripada. +The fates became to hate me. This is it? You wouldn't destroy us so without their help. = Sudbine su me mrzile. To je to? Ne bi nas tako uništio(la) bez njihove pomoći. +The Phoenicians welcome you to this most pleasant kingdom. I am Dido, the queen of Carthage and all that belongs to it. = Feničani ti žele dobrodošlicu u ovo najugodnije kraljevstvo. Ja sam Didona, kraljica Kartage i svega što joj pripada. I just had the marvelous idea, and I think you'll appreciate it too. = Upravo sam imala sjajnu ideju, i mislim da ćeš je i ti cijeniti. What is it now? = Što je sada? Phoenician Heritage = Feničko Nasljeđe Greetings to you, revered Queen Dido, ruler of the legendary kingdom of Carthage. The great poet Virgil related your great history, how your husband Acerbas was murdered by your own brother, King Pygmalion of Tyre, to steal the treasures of your family that were rightfully yours. But you endured his pressure until you and your compatriots decided to flee and sail for new lands. The gods led you to the shores of North Africa, and with cunning diplomacy, you expanded the territory of your new home, and laid the basis for the future kingdom of Carthage. = Pozdrav tebi, štovana kraljice Didona, vladarice legendarnog kraljevstva Kartage. Veliki pjesnik Vergilije ispričao je tvoju veliku povijest, kako je tvojeg muža Acerbasa ubio tvoj rođeni brat, Kralj Pigmalion od Tira, kako bi ukrao blago tvoje obitelji koje ti je po pravu pripadalo. Ali izdržala si njegov pritisak sve dok ti i tvoji sunarodnjaci niste odlučili pobjeći i otploviti prema novim zemljama. Bogovi su te doveli do obala Sjeverne Afrike, a ti si lukavom diplomacijom proširila teritorij svog novog doma i postavila temelje budućeg kraljevstva Kartage. Clever and proud Dido, the storm is coming and your people look for a shelter under your wise and powerful protection. Can you create a new and radiant Carthage able to cleave the darkness? Will your new empire shine through the ages of history? = Pametna i ponosna Didona, oluja dolazi i tvoj narod traži zaklon pod tvojom mudrom i moćnom zaštitom. Možeš li stvoriti novu i blistavu Kartagu sposobnu rascijepiti tamu? Hoće li tvoje novo carstvo sjati kroz stoljeća povijesti? - # Requires translation! -Hamilcar = - # Requires translation! -Mago = - # Requires translation! -Baalhaan = - # Requires translation! -Sophoniba = - # Requires translation! -Yzebel = - # Requires translation! -Similce = - # Requires translation! -Kandaulo = - # Requires translation! -Zinnridi = - # Requires translation! -Gisgo = - # Requires translation! -Fierelus = +Hamilcar = Hamilkar +Mago = Magon +Baalhaan = Baalhaan +Sophoniba = Sofoniba +Yzebel = Izebela +Similce = Similce +Kandaulo = Kandaulo +Zinnridi = Ziridi +Gisgo = Gisgo +Fierelus = Fierelus Carthage = Kartaga -Utique = Utique +Utique = Utika Hippo Regius = Hippo Regius Gades = Cádiz Saguntum = Saguntum - # Requires translation! -Carthago Nova = - # Requires translation! -Panormus = +Carthago Nova = Cartagena +Panormus = Panormo Lilybaeum = Marsala - # Requires translation! -Hadrumetum = +Hadrumetum = Hadrumet Zama Regia = Zama Regia - # Requires translation! -Karalis = +Karalis = Karal Malaca = Málaga Leptis Magna = Leptis Magna - # Requires translation! -Hippo Diarrhytus = - # Requires translation! -Motya = - # Requires translation! -Sulci = +Hippo Diarrhytus = Hippo Diarrhytus +Motya = Motija +Sulci = Sulci Leptis Parva = Leptis Parva - # Requires translation! -Tharros = - # Requires translation! -Soluntum = - # Requires translation! -Lixus = - # Requires translation! -Oea = +Tharros = Tharros +Soluntum = Solus +Lixus = Liksus +Oea = Oea Theveste = Tébessa - # Requires translation! -Ibossim = - # Requires translation! -Thapsus = +Ibossim = Ibossim +Thapsus = Thapsus Aleria = Aléria - # Requires translation! -Tingis = - # Requires translation! -Abyla = +Tingis = Tangier +Abyla = Abyla Sabratha = Sabrata - # Requires translation! -Rusadir = - # Requires translation! -Baecula = - # Requires translation! -Saldae = +Rusadir = Rusadir +Baecula = Baecula +Saldae = Saldae Theodora = Teodora -It is always a shame to destroy a thing of beauty. Happily, you are not one. = Uvijek je šteta uništiti nešto lijepo. Srećom, vi niste jedni. -Now darling, tantrums are most unbecoming. I shall have to teach you a lesson. = Draga, napadi bijesa su krajnje nedolični. Morat ću te naučiti lekciju. +It is always a shame to destroy a thing of beauty. Happily, you are not one. = Uvijek je šteta uništiti nešto lijepo. Srećom, ti nisi jedni(na). +Now darling, tantrums are most unbecoming. I shall have to teach you a lesson. = Dragi(a), napadi bijesa su krajnje nedolični. Morat ću te naučiti lekciju. Like a child playing with toys you are. My people will never love you, nor suffer this indignation gracefully. = Ti si kao dijete koje se igra igračkama. Moj te narod nikada neće voljeti, niti će graciozno trpjeti ovaj bijes. -My, isn't this a pleasant surprise - what may I call you, oh mysterious stranger? I am Theodora, beloved of Byzantium. = Bože, nije li ovo ugodno iznenađenje - kako te mogu zvati, o tajanstveni stranče? Ja sam Teodora, miljenica Bizanta. -I have heard that you adept at certain kinds of ... interactions. Show me. = Čula sam da ste vješti u određenim vrstama ... interakcije. Pokaži mi. +My, isn't this a pleasant surprise - what may I call you, oh mysterious stranger? I am Theodora, beloved of Byzantium. = Bože, nije li ovo ugodno iznenađenje - kako te mogu zvati, o tajanstveni stranče(kinjo)? Ja sam Teodora, miljenica Bizanta. +I have heard that you adept at certain kinds of ... interactions. Show me. = Čula sam da si vješt(a) u određenim vrstama ... interakcije. Pokaži mi. Hello again. = Pozdrav opet. Patriarchate of Constantinople = Carigradski Patrijarhat Magnificent Empress Theodora, beloved of Byzantium and of Rome, your people salute you! With your beauty and intelligence, you rose up from actress and courtesan to the rank of the most powerful woman in the Roman Empire, as wife of Justinian I. In the late 520's AD, you helped your husband engage in spiritual and legal reforms, promugalting numerous laws to improve women's status and treatment in the empire. You also made of Constantinople the jewel of the Eastern Roman Empire with the restoration and construction of many aqueducts, bridges, and churches, its beauty culminating with the creation of the Hagia Sophia, one of the most splendid pieces of architecture in the world. = Veličanstvena Carice Teodoro, miljenica Bizanta i Rima, pozdravlja te tvoj narod! Svojom ljepotom i inteligencijom, uzdigla si se od glumice i kurtizane do ranga najmoćnije žene u Rimskom Carstvu, kao supruga Justinijana I. U kasnim 520-im godinama po. Kr., pomogla si svom mužu da se uključi u duhovne i pravne reforme, proglašavajući brojne zakone za poboljšanje statusa i tretmana žena u carstvu. Također si od Konstantinopola učinila dragulj Istočnog Rimskog Carstva obnovom i izgradnjom mnogih akvadukta, mostova i crkava, čija je ljepota kulminirala stvaranjem Aja Sofije, jednog od najsjajnijih arhitektonskih djela na svijetu. Beautiful Empress,the Byzantine Empire's magnificence is intact in all memories, and ready to reborn as the new jewel of humankind. Will your new empire shine through the ages of history? = Lijepa Carice, veličanstvenost Bizantskog Carstva netaknuta je u svim sjećanjima i spremna da se ponovno rodi kao novi dragulj čovječanstva. Hoće li tvoje novo carstvo sjati kroz stoljeća povijesti? - # Requires translation! -Basil = - # Requires translation! -Nikophoros = - # Requires translation! -Demetrios = - # Requires translation! -Philippos = - # Requires translation! -Theophylaktos = - # Requires translation! -Simonis = - # Requires translation! -Zoe = +Basil = Bazilije +Nikophoros = Nikefor +Demetrios = Demetrije +Philippos = Philippos +Theophylaktos = Theophylaktos +Simonis = Simonis +Zoe = Zoe Ioanno = Ioánnou - # Requires translation! -Xene = - # Requires translation! -Euphrosyne = +Xene = Ksenija +Euphrosyne = Eufrozina Constantinople = Konstantinopol Adrianople = Adrianopol Nicaea = Niceja @@ -6715,42 +6377,30 @@ Antioch = Antiohija Varna = Varna Ohrid = Ohrid Nicomedia = Nikomedija - # Requires translation! -Trebizond = +Trebizond = Trapezunt Cherson = Korsun Sardica = Serdika - # Requires translation! -Ani = - # Requires translation! -Dyrrachium = +Ani = Ani +Dyrrachium = Drač Edessa = Edessa - # Requires translation! -Chalcedon = +Chalcedon = Halkedon Naissus = Niš Bari = Bari - # Requires translation! -Iconium = +Iconium = Ikonij Prilep = Prilep Samosata = Samsat Kars = Kars - # Requires translation! -Theodosiopolis = +Theodosiopolis = Teodosiopol Tyana = Tijana Gaza = Gaza Kerkyra = Kerkira - # Requires translation! -Phoenice = - # Requires translation! -Selymbria = +Phoenice = Fenike +Selymbria = Silivri Sillyon = Silion - # Requires translation! -Chrysopolis = - # Requires translation! -Vodena = - # Requires translation! -Traianoupoli = - # Requires translation! -Constantia = +Chrysopolis = Krizopol +Vodena = Vodena +Traianoupoli = Trajanupol +Constantia = Konstantia Patra = Patras Korinthos = Korint Byzantium = Bizant @@ -6758,36 +6408,25 @@ Byzantium = Bizant Boudicca = Budika You shall stain this land no longer with your vileness! To arms, my countrymen. We ride to war! = Nećeš više kaljati ovu zemlju svojom podlošću! Na oružje, moji zemljaci. Jašemo u rat! Traitorous man! The Celtic peoples will not stand for such wanton abuse and slander - I shall have your balls! = Izdajnički čovječe! Keltski narodi neće podnijeti takvo bezobzirno zlostavljanje i klevetu - Imat ću tvoja muda! -Vile ruler, know you have won this war in name alone. Your cities lie buried and your troops defeated. I have my own victory. = Podli vladaru, znaj da si dobio ovaj rat samim imenom. Tvoji gradovi leže zakopani, a tvoje trupe poražene. Ja imam svoju pobjedu. +Vile ruler, know you have won this war in name alone. Your cities lie buried and your troops defeated. I have my own victory. = Podli vladaru(ice), znaj da si dobio(la) ovaj rat samim imenom. Tvoji gradovi leže zakopani, a tvoje trupe poražene. Ja imam svoju pobjedu. I am Boudicca, Queen of the Celts. Let no-one underestimate me! = Ja sam Budika, Kraljica Kelta. Neka me nitko ne podcjenjuje! Let us join our forces together and reap the rewards. = Udružimo naše snage zajedno i uberimo plodove. God has given good to you. = Bog ti dao dobro. Druidic Lore = Druidsko Predanje May glory and honor always be upon you, Warrior Queen! In a time dominated by men, you successfully claimed the throne and the power, but also valiantly defied the mighty Roman Empire. Punished and humiliated by the hand of the Roman bloody invaders, you united your people and led a terrible revolt, to seek revenge. Many legions fell under your fierce attacks and you burned the city of London with your anger. While the Romans still kept ownership of your land after your final defeat, your actions nonetheless showed Rome that this land could never be fully conquered, making Nero himself consider to withdraw all troops and leaving Britain forever. = Neka slava i čast uvijek budu na tebi, Kraljice Ratnika! U vremenu kojim su dominirali muškarci, uspješno si zauzela prijestolje i moć, ali i hrabro prkosila moćnom Rimskom Carstvu. Kažnjen i ponižen rukom rimskih krvavih osvajača, ujedinila si svoj narod i povela strašnu pobunu, da tražiš osvetu. Mnoge su legije pale pod tvojim žestokim napadima i spalila si grad London svojim gnjevom. Dok su Rimljani još uvijek zadržali vlasništvo nad tvojom zemljom nakon tvojeg konačnog poraza, tvoje akcije su ipak pokazale Rimu da ova zemlja nikada ne može biti u potpunosti osvojena, natjeravši Nerona da razmisli o povlačenju svih trupa i napuštanju Britanije zauvijek. O raging lioness, will you lead the Celts again under the glory of your name, to spread the fires of liberty, and achieve a final victory? Will your new empire shine through the ages of history? = O bijesna lavice, hoćeš li opet povesti Kelte pod slavom svog imena, da rašire vatru slobode i postignu konačnu pobjedu? Hoće li tvoje novo carstvo sjati kroz stoljeća povijesti? - # Requires translation! -Crìsdean = - # Requires translation! -Siobhán = - # Requires translation! -Seamus = - # Requires translation! -Ffion = - # Requires translation! -Pádraig = - # Requires translation! -Deirdre = - # Requires translation! -Mr. Quinn = - # Requires translation! -Éadaoin = - # Requires translation! -Alwyn = - # Requires translation! -Col Ceathar = +Crìsdean = Crìsdean +Siobhán = Siobhán +Seamus = Seamus +Ffion = Ffion +Pádraig = Pádraig +Deirdre = Deirdre +Mr. Quinn = Mr. Quinn +Éadaoin = Éadaoin +Alwyn = Alwyn +Col Ceathar = Col Ceathar Cardiff = Cardiff - # Requires translation! -Truro = +Truro = Truro Douglas = Douglas Glasgow = Glasgow Cork = Cork @@ -6798,62 +6437,48 @@ Inverness = Inverness Limerick = Limerick Swansea = Swansea St. Ives = St. Ives - # Requires translation! -Peel = +Peel = Peel Aberdeen = Aberdeen Belfast = Belfast Caernarfon = Caernarfon Newquay = Newquay - # Requires translation! -Saint-Nazaire = +Saint-Nazaire = Saint-Nazaire Castletown = Castletown Stirling = Stirling Galway = Galway Conwy = Conwy St. Austell = Saint Austell - # Requires translation! -Saint-Malo = +Saint-Malo = Saint-Malo Onchan = Onchan Dundee = Dundee Londonderry = Londonderry Llanfairpwllgwyngyll = Llanfairpwllgwyngyll Falmouth = Falmouth - # Requires translation! -Lorient = +Lorient = Lorient Celts = Kelti Haile Selassie = Haile Selasije I have tried all other avenues, but yet you persist in this madness. I hope, for your sake, your end is swift. = Isprobao sam sve druge načine, ali ti ipak ustraješ u ovom ludilu. Nadam se, za tvoje dobro, da će tvoj kraj biti brz. It is silence that allows evil to triumph. We will not stand mute and allow you to continue on this mad quest unchecked. = Tišina je ta koja dopušta trijumf zla. Nećemo šutjeti i dopustiti ti da nekontrolirano nastaviš ovu ludu potragu. -God and history will remember your actions this day. I hope you are ready for your impending judgment. = Bog i povijest pamtit će tvoja djela danas. Nadam se da ste spremni za vaš nadolazeći sud. -A thousand welcomes to our fair nation. I am Selassie, the Ras Tafari Makonnen and Emperor of Ethiopia, your humble servant. = Tisuću dobrodošlice našoj poštenoj naciji. Ja sam Selasije, Ras Tafari Makonnen i car Etiopije, tvoj ponizni sluga. +God and history will remember your actions this day. I hope you are ready for your impending judgment. = Bog i povijest pamtit će tvoja djela danas. Nadam se da si spreman(a) za tvoj nadolazeći sud. +A thousand welcomes to our fair nation. I am Selassie, the Ras Tafari Makonnen and Emperor of Ethiopia, your humble servant. = Tisuću dobrodošlica našoj poštenoj naciji. Ja sam Selasije, Ras Tafari Makonnen i car Etiopije, tvoj ponizni sluga. I request that you consider this offer between our two peoples. I believe it will do us both good. = Tražim da razmotriš ovu ponudu između naša dva naroda. Vjerujem da će nam oboma dobro doći. Spirit of Adwa = Duh Adwe May God bless you, wise and righteous Emperor of Ethiopia, Haile Selassie. As one of Ethiopia's greatest rulers and a spiritual leader of the Rastafarian movement, your good influence on diplomacy and political cooperation are praised throughout the world. You created Ethiopia's first written constitution, and favorized democracy for years to come, your great wisdom making Ethiopia enter as a charter member in the United Nations. Always aiming to reform and modernize your nation, you changed Ethiopian destiny for the best. = Neka te Bog blagoslovi, mudri i pravedni Caru Etiopije, Haile Selasije. Kao jedan od najvećih vladara Etiopije i duhovni vođa rastafarijanskog pokreta, tvoj dobar utjecaj na diplomaciju i političku suradnju hvale se u cijelom svijetu. Stvorio si prvi pisani ustav Etiopije i favorizirao demokraciju godinama koje dolaze, a tvoja je velika mudrost učinila da Etiopija uđe kao članica u Ujedinjenim narodima. Uvijek nastojeći reformirati i modernizirati svoju naciju, promijenio si etiopsku sudbinu na najbolje. Revered King, your knowledge and intelligence are required once again to protect your people from many threats in the world. Will you secure peace and stability, with benevolence and authority, in the radiance of the Kebra Nagast? Will your new empire shine through the ages of history? = Poštovani Kralju, tvoja znanje i inteligencija ponovno su potrebni da zaštitiš svoj narod od mnogih prijetnji u svijetu. Hoćeš li osigurati mir i stabilnost, s dobronamjernošću i autoritetom, u sjaju Kebra Nagasta? Hoće li tvoje novo carstvo sjati kroz stoljeća povijesti? - # Requires translation! -Mulu Ken = - # Requires translation! -Wendimu = - # Requires translation! -Li'ol = +Mulu Ken = Mulu Ken +Wendimu = Wendimu +Li'ol = Li'ol Demeke = Déméké - # Requires translation! -Mulu Alem = - # Requires translation! -Abebech = - # Requires translation! -Zema = - # Requires translation! -Mihret = - # Requires translation! -Kebedech = - # Requires translation! -Alemnesh = +Mulu Alem = Mulu Alem +Abebech = Abebe +Zema = Zema +Mihret = Mihret +Kebedech = Kebedech +Alemnesh = Alemnesh Addis Ababa = Adis Abeba Harar = Harar - # Requires translation! -Adwa = +Adwa = Adva Lalibela = Lalibela Gondar = Gondar Axum = Aksum @@ -6890,98 +6515,55 @@ Pacal = Pakal A sacrifice unlike all others must be made! = Mora se učiniti žrtva drugačija od svih drugih! Muahahahahahaha! = Muahahahahahaha! Today comes a great searing pain. With you comes the path to the black storm. = Danas dolazi velika bol koja peče. S tobom dolazi put do crne oluje. -Greetings, wayward one. I am known as Pacal. = Pozdrav, svojeglavac jedan. Poznat sam kao Pakal. -Friend, I believe I may have found a way to save us all! Look, look and accept my offering! = Prijatelju, vjerujem da sam možda pronašao način da nas sve spasim! Pogledaj, pogledaj i prihvati moju ponudu +Greetings, wayward one. I am known as Pacal. = Pozdrav, svojeglavac(kinjo) jedan(a). Poznat sam kao Pakal. +Friend, I believe I may have found a way to save us all! Look, look and accept my offering! = Prijatelju(ice), vjerujem da sam možda pronašao način da nas sve spasim! Pogledaj, pogledaj i prihvati moju ponudu A fine day, it helps you. = Lijep dan, pomaže ti. The Long Count = Dugo Brojanje Kneel before King Pacal the Great, son of the gods and protector of the Palenque domain! After your kingdom has been harassed for years by neighboring rivals, you struck back at the enemies of your people, defeating each of them and sacrificing their leaders as a retribution to the insults made to your ancestors. Your wisdom and hard will not only restored the glory of Palenque, but turned it into a magnificient city, as your people built the greatest monuments and architecture the world has ever known. = Klekni pred Kraljem Pakalom Velikim, sinom bogova i zaštitnikom domene Palenque! Nakon što su tvoje kraljevstvo godinama maltretirali susjedni suparnici, uzvratio si udarac neprijateljima svog naroda, porazivši svakog od njih i žrtvujući njihove vođe kao odmazdu za uvrede upućene tvojim precima. Tvoja mudrost i tvrda volja ne samo da su vratile slavu Palenqueu, već su ga pretvorile u veličanstveni grad, budući da je tvoj narod izgradio najveće spomenike i arhitekturu koju je svijet ikada vidio. Absolute King, your people need you to save the great Mayan culture and knowledge. Will you be able to read the movement of the stars, and find in the heavens the power to repel any foes? Will your new empire shine through the ages of history? = Apsolutni Kralju, tvoj narod te treba da spasiš veliku kulturu i znanje Maja. Hoćeš li moći čitati kretanje zvijezda, i na nebu pronaći moć da odbiješ sve neprijatelje? Hoće li tvoje novo carstvo sjati kroz stoljeća povijesti? - # Requires translation! -Camazotz = - # Requires translation! -Coyopa = - # Requires translation! -Gukumatz = - # Requires translation! -Hunahpu = - # Requires translation! -Huracan = - # Requires translation! -Ixchel = - # Requires translation! -Ixtab = - # Requires translation! -Kukulkán = - # Requires translation! -Xbalanque = - # Requires translation! -Zipacna = - # Requires translation! -Palenque = - # Requires translation! -Tikal = - # Requires translation! -Uxmal = - # Requires translation! -Tulum = - # Requires translation! -Copan = - # Requires translation! -Coba = - # Requires translation! -El Mirador = - # Requires translation! -Calakmul = - # Requires translation! -Edzna = - # Requires translation! -Lamanai = - # Requires translation! -Izapa = - # Requires translation! -Uaxactun = - # Requires translation! -Comalcalco = - # Requires translation! -Piedras Negras = - # Requires translation! -Cancuen = - # Requires translation! -Yaxha = - # Requires translation! -Quirigua = - # Requires translation! -Q'umarkaj = - # Requires translation! -Nakbe = - # Requires translation! -Cerros = - # Requires translation! -Xunantunich = - # Requires translation! -Takalik Abaj = - # Requires translation! -Cival = - # Requires translation! -San Bartolo = - # Requires translation! -Altar de Sacrificios = - # Requires translation! -Seibal = - # Requires translation! -Caracol = - # Requires translation! -Naranjo = - # Requires translation! -Dos Pilas = - # Requires translation! -Mayapan = - # Requires translation! -Ixinche = - # Requires translation! -Zaculeu = - # Requires translation! -Kabah = +Camazotz = Camazotz +Coyopa = Coyopa +Gukumatz = Q'uq'umatz +Hunahpu = Hunahpu +Huracan = Huracán +Ixchel = Ix Chel +Ixtab = Ix Tab +Kukulkán = Kukulkan +Xbalanque = Xbalanque +Zipacna = Zipacna +Palenque = Palenque +Tikal = Tikal +Uxmal = Uxmal +Tulum = Tulum +Copan = Copán +Coba = Coba +El Mirador = El Mirador +Calakmul = Calakmul +Edzna = Edzna +Lamanai = Lamanai +Izapa = Izapa +Uaxactun = Uaxactun +Comalcalco = Comalcalco +Piedras Negras = Piedras Negras +Cancuen = Kahun +Yaxha = Yaxhá +Quirigua = Quirigua +Q'umarkaj = Gumarkaaj +Nakbe = Nakbe +Cerros = Cerros +Xunantunich = Xunantunich +Takalik Abaj = Takalik Abaj +Cival = Cival +San Bartolo = San Bartolo +Altar de Sacrificios = Altar de sacrificios +Seibal = Seibal +Caracol = Caracol +Naranjo = Naranjos +Dos Pilas = Dos Pilas +Mayapan = Mayapán +Ixinche = Iximché +Zaculeu = Zaculeu +Kabah = Kabah The Maya = Maje @@ -7103,8 +6685,7 @@ Devout = Pobožan Hussar = Husar - # Requires translation! -Hakkapeliitta = +Hakkapeliitta = Hakkapeliitta Privateer = Gusar @@ -7182,7 +6763,7 @@ Inquisitor = Inkvizitor #################### Lines from Tutorials #################### Introduction = Uvod -Welcome to Unciv!\nBecause this is a complex game, there are basic tasks to help familiarize you with the game.\nThese are completely optional, and you're welcome to explore the game on your own! = Dobro došli u Unciv!\nBudući da je ovo složena igra, postoje osnovni zadaci koji će vam pomoći da se upoznate s igrom.\nOni su potpuno neobavezani i slobodno možete istražiti igru sami! +Welcome to Unciv!\nBecause this is a complex game, there are basic tasks to help familiarize you with the game.\nThese are completely optional, and you're welcome to explore the game on your own! = Dobro došli u Unciv!\nBudući da je ovo složena igra, postoje osnovni zadaci koji će vam pomoći da se upoznate s igrom.\nOni su potpuno neobavezani i slobodno možete sami istražiti igru! Welcome to Unciv! = Dobrodošli u Unciv! Because this is a complex game, there are some tutorials to help familiarize you with it. These can be disbaled in the Options -> Display menu, but please hang on if you're new here! = Budući da je ovo složena igra, postoje neke poduke koje će vam pomoći da se s njom upoznate. One se mogu isključiti u izborniku Opcije -> Prikaz, ali pričekajte ako ste novi ovdje! @@ -7190,7 +6771,7 @@ Your first mission is to found your capital city. This is actually an important How do you know a city location is appropriate? Luckily, the game has already chosen a good location for you. You can settle in this place, or maybe move a turn to found on a Hill (for Production and defence) or next to a Mountain (to gain access to the Observatory building later on). = Kako znate da je lokacija grada prikladna? Srećom, igra je već odabrala dobru lokaciju za vas. Možete se nastaniti na ovom mjestu, ili možda pomaknuti potez za osnivanje na Brdu (za proizvodnju i obranu) ili pored Planine (kako biste kasnije dobili pristup Zvjezdarnici). You'll likely want more cities later on. For these cities, you must go and find a good place. Looking for and founding on or near Luxury resources is a good rule of thumb. = Kasnije ćete vjerojatno htjeti više gradova. Za te gradove morate otići i pronaći dobro mjesto. Traženje i osnivanje na ili u blizini luksuznih resursa dobro je pravilo. Luxury resources are tiles that have things like Gems, Cotton, or Silk (indicated by a yellow background of the resource icon). These resources make your civilization happy. You should also keep an eye out for resources needed to build units, such as Iron. Cities cannot be built within 3 tiles of existing cities, which is another thing to keep in mind! = Luksuzni resursi su polja koje sadrže stvari kao što su Dragulji, Pamuk ili Svila (označeno žutom pozadinom ikone resursa). Ti resursi čine vašu civilizaciju zadovoljnom. Također biste trebali pripaziti na resurse potrebne za izgradnju jedinica, kao što je Željezo. Gradovi se ne mogu graditi unutar 3 polja od postojećih gradova, što je još jedna stvar koju treba imati na umu! -Cities will house Citizens, which can work tiles up to 3 tiles away from the city. This means you don’t have to settle cities right on or next to good tiles. Let’s say, for example, that you want access to some Iron – but the resource is in a desert area. You don’t have to settle your city in the desert. You can settle a few tiles away in more prosperous lands. Your city will grow and eventually gain access to the resource. You only need to settle right on top of resources if you need them immediately. = Gradovi će udomiti Građane, koji mogu raditi na poljima udaljenim do 3 polja od grada. To znači da ne morate smjestiti gradove odmah na ili pored dobrih polja. Recimo, na primjer, da želite pristup malo Željeza - ali resurs je u pustinjskom području. Ne morate smjestiti svoj grad u pustinju. Možete se smjestiti nekoliko polja dalje u naprednijim zemljama. Vaš će grad rasti i na kraju dobiti pristup resursu. Jedino se morate nastaniti na samim resursima ako su vam potrebni odmah. +Cities will house Citizens, which can work tiles up to 3 tiles away from the city. This means you don’t have to settle cities right on or next to good tiles. Let’s say, for example, that you want access to some Iron – but the resource is in a desert area. You don’t have to settle your city in the desert. You can settle a few tiles away in more prosperous lands. Your city will grow and eventually gain access to the resource. You only need to settle right on top of resources if you need them immediately. = Gradovi će udomiti Građane, koji mogu raditi na poljima udaljenim do 3 polja od grada. To znači da ne morate smjestiti gradove odmah na ili pored dobrih polja. Recimo, na primjer, da želite pristup malo Željeza - ali resurs je u pustinjskom području. Ne morate smjestiti svoj grad u pustinju. Možete se smjestiti nekoliko polja dalje u naprednijim zemljama. Vaš će grad rasti i na kraju dobiti pristup resursu. Jedino se trebate nastaniti na samim resursima ako vam trebaju odmah. The first thing coming out of your city depends on the strategy you want to follow, but the 'classic' build order is to build first two Scouts, then a Shrine, and three Settlers, and adopt Tradition, to explore the map quickly (Scouts ignore terrain cost), and to get an early Pantheon (if you're playing with religion enabled). = Prva stvar koja će izaći iz vašeg grada ovisi o strategiji koju želite slijediti, ali 'klasični' redoslijed gradnje je izgraditi prvo dva izviđača, zatim Svetište i tri Naseljenika, te usvojiti Tradiciju za brzo istraživanje karte (Izviđači zanemaruju cijenu terena), i da dobijete rani Pantheon (ako se igrate s uključenom religijom). But feel free to experiment with your own build orders! = Ali slobodno eksperimentirajte s vlastitim narudžbama izgradnje! @@ -7242,9 +6823,9 @@ This means that it is very difficult to expand quickly in Unciv.\nIt isn’t imp Unhappiness = Nezadovoljstvo It seems that your citizens are unhappy!\nWhile unhappy, your civilization will suffer many detrimental effects, increasing in severity as unhappiness gets higher. = Čini se da su vaši građani nezadovoljni!\nDok je nezadovoljna, vaša će civilizacija pretrpjeti mnoge štetne posljedice, koje će biti sve teže kako nezadovoljstvo bude veće. Unhappiness has two main causes: Population and cities.\n Each city causes 3 unhappiness, and each population, 1 = Nezadovoljstvo ima dva glavna uzroka: Stanovništvo i gradovi.\n Svaki grad uzrokuje 3 nezadovoljstva, a svako stanovništvo, 1 -There are 2 main ways to combat unhappiness:\n by building happiness buildings for your population\n or by having improved luxury resources within your borders. = Postoje 2 glavna načina za borbu protiv nezadovoljstva:\n izgradnjom zgrada za zadovoljstvo za vaše stanovništvo\n ili unaprjeđenjem luksuznih resursa unutar vaših granica. +There are 2 main ways to combat unhappiness:\n by building happiness buildings for your population\n or by having improved luxury resources within your borders. = Postoje 2 glavna načina za borbu protiv nezadovoljstva:\n izgradnjom zgrada za zadovoljstvo vašem stanovništvu\n ili unaprjeđenjem luksuznih resursa unutar vaših granica. -You have entered a Golden Age!\nGolden age points are accumulated each turn by the total happiness \n of your civilization\nWhen in a golden age, culture and production generation increases +20%,\n and every tile already providing at least one gold will provide an extra gold. = Ušli ste u Zlatno Doba!\nBodovi Zlatnog Doba skupljaju se svakim potezom ukupnim zadovoljstvom \n vaše civilizacije\nKada ste u zlatnom dobu, kultura i proizvodnja poraste za +20%,\n i svako polje koje već pruža barem jedno zlato će pružati jedno dodatno zlato. +You have entered a Golden Age!\nGolden age points are accumulated each turn by the total happiness \n of your civilization\nWhen in a golden age, culture and production generation increases +20%,\n and every tile already providing at least one gold will provide an extra gold. = Ušli ste u Zlatno Doba!\nBodovi Zlatnog Doba skupljaju se svakim potezom ukupnim zadovoljstvom \n vaše civilizacije\nKada ste u zlatnom dobu, generiranje kulture i proizvodnje poraste za +20%,\n i svako polje koje već pruža barem jedno zlato će pružati jedno dodatno zlato. Roads and Railroads = Ceste i Željeznice Roads reduce the Movement Points required to move between two tiles connected by Roads. = Ceste smanjuju broj Bodova Kretanja potrebnih za kretanje između dva polja povezanih Cestama. @@ -7290,13 +6871,13 @@ You have encountered another civilization!\nOther civilizations start out peacef Once you have completed the Apollo Program, you can start constructing spaceship parts in your cities\n (with the relevant technologies) to win a Scientific Victory! = Nakon što završite Program Apollo, možete početi izgrađivati dijelove svemirskog broda u svojim gradovima\n (s relevantnim tehnologijama) kako biste osvojili Znanstvenu Pobjedu! Injured Units = Ozlijeđene Jedinice -Injured units deal less damage, but recover after turns that they have been inactive.\nUnits heal 10 health per turn in enemy territory or neutral land,\n 20 inside your territory and 25 in your cities. = Ozlijeđene jedinice nanose manje štete, ali se oporavljaju nakon poteza koji su bili neaktivni.\nJedinice se liječe 10 zdravlja po potezu na neprijateljskom teritoriju ili neutralnoj zemlji,\n 20 unutar vašeg teritorija i 25 u vašim gradovima. +Injured units deal less damage, but recover after turns that they have been inactive.\nUnits heal 10 health per turn in enemy territory or neutral land,\n 20 inside your territory and 25 in your cities. = Ozlijeđene jedinice nanose manje štete, ali se oporavljaju nakon poteza kojeg su bile neaktivne.\nJedinice se liječe 10 zdravlja po potezu na neprijateljskom teritoriju ili neutralnoj zemlji,\n 20 unutar vašeg teritorija i 25 u vašim gradovima. Workers = Radnici Workers are vital to your cities' growth, since only they can construct improvements on tiles.\nImprovements raise the yield of your tiles, allowing your city to produce more and grow faster while working the same amount of tiles! = Radnici su vitalni za rast vaših gradova, budući da samo oni mogu izgraditi unaprjeđenja na poljima.\nUnaprjeđenja povećavaju prinos vaših polja, omogućujući vašem gradu da proizvodi više i raste brže dok obrađuje istu količinu polja! Siege Units = Opsadne Jedinice -Siege units are extremely powerful against cities, but need to be Set Up before they can attack.\nOnce your siege unit is set up, it can attack from the current tile,\n but once moved to another tile, it will need to be set up again. = Opsadne jedinice su iznimno moćne protiv gradova, ali ih je potrebno Postaviti prije nego što mogu napadati.\nNakon što je vaša opsadna jedinica postavljena, može napadati s trenutačnog polja,\n ali nakon što se premjesti na drugo polje, morat će se ponovno postaviti. +Siege units are extremely powerful against cities, but need to be Set Up before they can attack.\nOnce your siege unit is set up, it can attack from the current tile,\n but once moved to another tile, it will need to be set up again. = Opsadne jedinice su iznimno moćne protiv gradova, ali ih je potrebno Postaviti prije nego što mogu napadati.\nNakon što je vaša opsadna jedinica postavljena, može napadati s trenutačnog polja,\n ali nakon što se premjesti na drugo polje, trebat će se ponovno postaviti. Embarking = Ukrcaj na Brod Once a certain tech is researched, your land units can embark, allowing them to traverse water tiles.\nEntering or leaving water takes the entire turn. = Nakon što je određena tehnologija istražena, vaše kopnene jedinice mogu se ukrcati na brod, dopuštajući im da prolaze kroz polja na vodi.\nUlazak ili izlazak iz vode traje cijeli potez. @@ -7355,7 +6936,7 @@ Certain tiles have terrain features - like Flood plains or Forests - on top of Natural Wonders, such as the Mt. Fuji, the Rock of Gibraltar and the Great Barrier Reef, are unique, impassable terrain features, masterpieces of mother Nature, which possess exceptional qualities that make them very different from the average terrain.\nThey benefit by giving you large sums of Culture, ⍾Science, Gold or Production if worked by your Cities, which is why you might need to bring them under your empire as soon as possible. = Prirodna Čuda, poput planine Fuji, Gibraltarske Stijene i Velikog Koraljnog Grebena, jedinstvena su, neprohodna obilježja terena, remek-djela majke Prirode, koja posjeduju iznimne kvalitete koje ih čine vrlo različitima od prosječnog terena.\nOna vam koriste dajući vam velike količine Kulture, ⍾Znanosti, Zlata ili Proizvodnje ako su obrađivana vašim gradovima, zbog čega ćete ih možda trebati dovesti pod svoje carstvo što prije. Keyboard = Tipkovnica -If you have a keyboard, some shortcut keys become available. Unit command or improvement picker keys, for example, are shown directly in their corresponding buttons. = Ako imate tipkovnicu, neke tipke prečaca postaju dostupne. Tipke za odabir naredbi jedinica ili odabir unaprjeđenja, na primjer, prikazane su izravno u odgovarajućim dugmadi. +If you have a keyboard, some shortcut keys become available. Unit command or improvement picker keys, for example, are shown directly in their corresponding buttons. = Ako imate tipkovnicu, neke tipke prečaca postaju dostupne. Tipke za odabir naredbi jedinica ili odabir unaprjeđenja, na primjer, prikazane su izravno u odgovarajućim gumbima. On the world screen the hotkeys are as follows: = Na zaslonu svijeta prečaci su sljedeći: Space or 'N' - Next unit or turn\n'E' - Empire overview (last viewed page)\n'+', '-' - Zoom in / out\nHome - center on capital or open its City Screen if already centered = Razmaknica ili 'N' - Sljedeća jedinica ili potez\n'E' - Pregled Carstva (posljednja pogledana stranica)\n'+', '-' - Povećaj / smanji\nPočetna - centriraj na prijestolnicu ili otvori njezin zaslon Grada ako je već centrirana F1 - Open Civilopedia\nF2 - Empire overview Trades\nF3 - Empire overview Units\nF4 - Empire overview Diplomacy\nF5 - Social policies\nF6 - Technologies\nF7 - Empire overview Cities\nF8 - Victory Progress\nF9 - Empire overview Stats\nF10 - Empire overview Resources\nF11 - Quicksave\nF12 - Quickload = F1 - Otvori Civilopediju\nF2 - Pregled Carstva Trgovine\nF3 - Pregled Carstva Jedinice\nF4 - Pregled Carstva Diplomacija\nF5 - Društvene politike\nF6 - Tehnologije\nF7 - Pregled Carstva Gradovi\nF8 - Napredak Pobjede\nF9 - Pregled Carstva Statistika\nF10 - Pregled Carstva Resursi\nF11 - Brzo spremanje\nF12 - Brzo učitavanje @@ -7363,45 +6944,45 @@ Ctrl-R - Toggle tile resource display\nCtrl-Y - Toggle tile yield display\nCtrl- All of these can be reassigned. = Sve se to može preraspodijeliti. This is where you spend most of your time playing Unciv. See the world, control your units, access other screens from here. = Ovo je gdje provodite većinu svog vremena igrajući Unciv. Gledate svijet, kontrolirate svoje jedinice, pristupate drugim zaslonima odavde. -①: The menu button - civilopedia, save, load, options... = ①: Dugme izbornika - civilopedija, spremi, učitaj, opcije... +①: The menu button - civilopedia, save, load, options... = ①: Gumb izbornika - civilopedija, spremi, učitaj, opcije... ②: The player/nation whose turn it is - click for diplomacy overview. = ②: Igrač/nacija koji je na potezu - kliknite za pregled diplomacije. -③: The Technology Button - shows the tech tree which allows viewing or researching technologies. = ③: Dugme za Tehnologiju - prikazuje tehnološko stablo koje omogućuje pregled ili istraživanje tehnologija. -④: The Social Policies Button - shows enacted and selectable policies, and with enough culture points you can enact new ones. = ④: Dugme Društvene Politike - prikazuje usvojene politike i politike koje se mogu odabrati, a uz dovoljno bodova kulture možete usvojiti nove. -⑤: The Diplomacy Button - shows the diplomacy manager where you can talk to other civilizations. = ⑤: Dugme za Diplomaciju - pokazuje upravitelja diplomacije gdje možete razgovarati s drugim civilizacijama. -⑥: Unit Action Buttons - while a unit is selected its possible actions appear here. = ⑥: Dugmad za Radnje Jedinice - dok je jedinica odabrana, njezine moguće akcije se pojavljuju ovdje. +③: The Technology Button - shows the tech tree which allows viewing or researching technologies. = ③: Gumb za Tehnologiju - prikazuje tehnološko stablo koje omogućuje pregled ili istraživanje tehnologija. +④: The Social Policies Button - shows enacted and selectable policies, and with enough culture points you can enact new ones. = ④: Gumb Društvene Politike - prikazuje usvojene politike i politike koje se mogu odabrati, a uz dovoljno bodova kulture možete usvojiti nove. +⑤: The Diplomacy Button - shows the diplomacy manager where you can talk to other civilizations. = ⑤: Gumb za Diplomaciju - pokazuje upravitelja diplomacije gdje možete razgovarati s drugim civilizacijama. +⑥: Unit Action Buttons - while a unit is selected its possible actions appear here. = ⑥: Gumbi za Radnje Jedinice - dok je jedinica odabrana, njezine moguće akcije se pojavljuju ovdje. ⑦: The unit/city info pane - shows information about a selected unit or city. = ⑦: Prozor s informacijama o jedinici/gradu - prikazuje informacije o odabranoj jedinici ili gradu. ⑧: The name (and unit icon) of the selected unit or city, with current health if wounded. Clicking a unit name or icon will open its civilopedia entry. = ⑧: Ime (i ikona jedinice) odabrane jedinice ili grada, s trenutačnim zdravljem ako je ranjen(a). Klikom na naziv ili ikonu jedinice otvorit će se njen unos u civilopediji. ⑨: The arrow buttons allow jumping to the next/previous unit. = ⑨: Tipke sa strelicama omogućuju skakanje na sljedeću/prethodnu jedinicu. ⑩: For a selected unit, its promotions appear here, and clicking leads to the promotions screen for that unit. = ⑩: Za odabranu jedinicu, njezina promaknuća se pojavljuju ovdje, a klik vodi do zaslona promaknuća za tu jedinicu. ⑪: Remaining/per turn movement points, strength and experience / XP needed for promotion. For cities, you get its combat strength. = ⑪: Preostali/po potezu bodovi kretanja, snaga i iskustvo / Iskustvo potrebno za unaprjeđenje. Za gradove, dobivate njegovu borbenu snagu. -⑫: This button closes the selected unit/city info pane. = ⑫: Ovo dugme zatvara prozor s informacijama o odabranoj jedinici/gradu. +⑫: This button closes the selected unit/city info pane. = ⑫: Ovaj gumb zatvara prozor s informacijama o odabranoj jedinici/gradu. ⑬: This pane appears when you order a unit to attack an enemy. On top are attacker and defender with their respective base strengths. = ⑬: Ovaj prozor se pojavljuje kada naredite jedinici da napadne neprijatelja. Na vrhu su napadač i branič sa svojim osnovnim snagama. ⑭: Below that are strength bonuses or penalties and health bars projecting before / after the attack. = ⑭: Ispod toga su bonusi snage ili penali i trake zdravlja koje se prikazuju prije / poslije napada. -⑮: The Attack Button - let blood flow! = ⑮: Dugme za napad - neka krv teče! +⑮: The Attack Button - let blood flow! = ⑮: Gumb za napad - neka krv teče! ⑯: The minimap shows an overview over the world, with known cities, terrain and fog of war. Clicking will position the main map. = ⑯: Minikarta prikazuje pregled svijeta, s poznatim gradovima, terenom i ratnom maglom. Klikom će se pozicionirati glavna karta. -⑰: To the side of the minimap are display feature toggling buttons - tile yield, worked indicator, show/hide resources. These mirror setting on the options screen and are hidden if you deactivate the minimap. = ⑰: Sa strane minimape nalazi se dugmad za uključivanje/isključivanje značajki prikaza - prinos polja, pokazatelj rada, pokaži/sakrij resurse. Ove postavke zrcale opciju na zaslonu opcija i skrivene su ako deaktivirate minimapu. +⑰: To the side of the minimap are display feature toggling buttons - tile yield, worked indicator, show/hide resources. These mirror setting on the options screen and are hidden if you deactivate the minimap. = ⑰: Sa strane mini karte nalaze se gumbi za uključivanje/isključivanje značajki prikaza - prinos polja, pokazatelj rada, pokaži/sakrij resurse. Ove postavke zrcale opciju na zaslonu opcija i skrivene su ako deaktivirate minimapu. ⑱: Tile information for the selected hex - current or potential yield, terrain, effects, present units, city located there and such. Where appropriate, clicking a line opens the corresponding civilopedia entry. = ⑱: Podaci o polju za odabrani heksagon - trenutačni ili potencijalni prinos, teren, učinci, postojeće jedinice, grad koji se tamo nalazi i slično. Gdje je to prikladno, klikom na redak otvara se odgovarajući unos u civilopediji. ⑲: Notifications - what happened during the last 'next turn' phase. Some are clickable to show a relevant place on the map, some even show several when you click repeatedly. = ⑲: Obavijesti - što se dogodilo tijekom posljednje faze 'sljedećeg poteza'. Neka su klikajuća kako bi se pokazalo relevantno mjesto na karti, a na nekima se čak pokazuje nekoliko ako više puta kliknete. -⑳: The Next Turn Button - unless there are things to do, in which case the label changes to 'next unit', 'pick policy' and so on. = ⑳: Dugme za Sljedeći Potez - osim ako nema stvari koje treba učiniti, u kojem slučaju se oznaka mijenja u 'sljedeća jedinica', 'odaberi politiku' i tako dalje. -㉑: The Multiplayer Button - Here you can easily check your active multiplayer games. = ㉑: Dugme Igre Više Igrača - Ovdje možete jednostavno provjeriti svoje aktivne igre više igrača. -ⓐ: The overview button leads to the empire overview screen with various tabs (the last one viewed is remembered) holding vital information about the state of your civilization in the world. = ⓐ: Dugme za pregled vodi do zaslona pregleda carstva s raznim karticama (posljednja pogledana se pamti) koja sadrži vitalne informacije o stanju vaše civilizacije u svijetu. +⑳: The Next Turn Button - unless there are things to do, in which case the label changes to 'next unit', 'pick policy' and so on. = ⑳: Gumb za Sljedeći Potez - osim ako nema stvari koje treba učiniti, u kojem slučaju se oznaka mijenja u 'sljedeća jedinica', 'odaberi politiku' i tako dalje. +㉑: The Multiplayer Button - Here you can easily check your active multiplayer games. = ㉑: Gumb Igre Više Igrača - Ovdje možete jednostavno provjeriti svoje aktivne igre više igrača. +ⓐ: The overview button leads to the empire overview screen with various tabs (the last one viewed is remembered) holding vital information about the state of your civilization in the world. = ⓐ: Gumb za pregled vodi do zaslona pregleda carstva s raznim karticama (posljednja pogledana se pamti) koja sadrži vitalne informacije o stanju vaše civilizacije u svijetu. ⓑ: The ♪Culture icon shows accumulated ♪Culture and ♪Culture needed for the next policy - in this case, the exclamation mark tells us a next policy can be enacted. Clicking is another way to the policies manager. = ⓑ: Ikona ♪Kultura prikazuje akumuliranu ♪Kulturu i ♪Kulturu potrebnu za sljedeću politiku - u tom slučaju, uskličnik nam govori da se sljedeća politika može usvojiti. Klikanje je još jedan put do upravitelja politikama. ⓒ: Your known strategic resources are displayed here with the available (usage already deducted) number - click to go to the resources overview screen. = ⓒ: Vaši poznati strateški resursi prikazani su ovdje s dostupnim brojem (upotreba je već odbijena) - kliknite za odlazak na zaslon s pregledom resursa. ⓓ: Happiness/unhappiness balance and either golden age with turns left or accumulated happiness with amount needed for a golden age is shown next to the smiley. Clicking also leads to the resources overview screen as luxury resources are a way to improve happiness. = ⓓ: Bilanca zadovoljstva/nezadovoljstva i ili zlatno doba sa preostalih poteza ili akumulirano zadovoljstvo s količinom potrebnom za zlatno doba prikazano je pored smajlića. Klikanje također vodi do zaslona s pregledom resursa jer su luksuzni resursi način da se poboljša zadovoljstvo. ⓔ: The ⍾Science icon shows the number of ⍾Science points produced per turn. Clicking leads to the technology tree. = ⓔ: Ikona ⍾Znanost prikazuje broj bodova ⍾Znanosti proizvedenih po potezu. Klik vodi do tehnološkog stabla. ⓕ: Number of turns played with translation into calendar years. Click to see the victory overview. = ⓕ: Broj odigranih poteza s prevođenjem u kalendarske godine. Kliknite da vidite pregled pobjede. ⓖ: The number of gold coins in your treasury and income. Clicks lead to the Stats overview screen. = ⓖ: Broj zlatnika u vašoj riznici i prihod. Klikovi vode do zaslona pregleda Statistike. -ⓗ: The quantity of ☮Faith your citizens have generated, or 'off' if religion is disabled. Clicking it makes you go to the religion overview screen. = ⓗ: Količina ☮vjere koju su vaši građani stvorili, ili 'isključeno' ako je religija onemogućena. Klikom na nju prelazite na zaslon pregleda religije. +ⓗ: The quantity of ☮Faith your citizens have generated, or 'off' if religion is disabled. Clicking it makes you go to the religion overview screen. = ⓗ: Količina ☮vjere koju su vaši građani generirali, ili 'isključeno' ako je religija onemogućena. Klikom na nju prelazite na zaslon pregleda religije. ⓧ: In the center of all this - the world map! Here, the "X" marks a spot outside the map. Yes, unless the wrap option was used, Unciv worlds are flat. Don't worry, your ships won't fall off the edge. = ⓧ: U središtu svega ovoga - karta svijeta! Ovdje "X" označava mjesto izvan karte. Da, osim ako nije korištena opcija okreta oko svijeta, Unciv svjetovi su ravni. Ne brinite, vaši brodovi neće pasti s ruba. ⓨ: By the way, here's how an empire border looks like - it's in the national colours of the nation owning the territory. = ⓨ: Usput, evo kako izgleda granica carstva - u nacionalnim je bojama nacije koja posjeduje teritorij. ⓩ: And this is the red targeting circle that led to the attack pane back under ⑬. = ⓩ: A ovo je crveni krug za ciljanje koji vodio do prozora za napad ispod ⑬. -What you don't see: The phone/tablet's back button will pop the question whether you wish to leave Unciv and go back to Real Life. On desktop versions, you can use the ESC key. = Ono što ne vidite: Dugme za povratak na telefonu/tabletu iskočiti će pitanje želite li napustiti Unciv i vratiti se u Stvarni Život. Na verzijama za stolna računala možete koristiti tipku ESC. +What you don't see: The phone/tablet's back button will pop the question whether you wish to leave Unciv and go back to Real Life. On desktop versions, you can use the ESC key. = Ono što ne vidite: Gumb za povratak na telefonu/tabletu iskočiti će pitanje želite li napustiti Unciv i vratiti se u Stvarni Život. Na verzijama za stolna računala možete koristiti tipku ESC. When at later stages of the game, you might have a lot of units but only a little to do. To help you we have implemented an AutoPlay feature that lets you use the AI to play part or all of your turn. = U kasnijim fazama igre, možda ćete imati puno jedinica, ali samo malo posla. Kako bismo vam pomogli implementirali smo značajku Automatske Igre koja vam omogućuje da koristite Umjetnu Inteligenciju da igrate dio ili cijeli svoj potez. -To enable AutoPlay, go to options and open the AutoPlay tab and press "Show AutoPlay button". = Da biste omogućili Automatsku Igru, idite na opcije i otvorite karticu Automatizacija i pritisnite "Pokaži dugme Automatske Igre". -Clicking on the AutoPlay button opens a popup menue for choosing to AutoPlay parts or all of your turn. = Klikom na dugme Automatske Igre otvara se skočni izbornik za odabir Automatske Igre dijela ili svih dijelova vašeg poteza. -Clicking Start AutoPlay in the pop-up menue or long pressing the AutoPlay button begins the multi-turn AutoPlay. This will play your next turns as if you were an AI. = Klikom na Pokreni Automatsku Igru u skočnom izborniku ili dugim pritiskom na dugme Automatske Igre započinje više-potezna Automatska Igra. Ovo će igrati vaše sljedeće poteze kao da ste Umjetna Inteligencija. -To cancel multi-turn AutoPlay you can press the AutoPlay button, next turn button or open the options menue. = Za poništavanje više-potezne Automatske Igre možete pritisnuti dugme Automatske Igre, dugme za sljedeći potez ili otvoriti izbornik opcija. +To enable AutoPlay, go to options and open the AutoPlay tab and press "Show AutoPlay button". = Da biste omogućili Automatsku Igru, idite na opcije i otvorite karticu Automatizacija i pritisnite "Pokaži gumb Automatske Igre". +Clicking on the AutoPlay button opens a popup menue for choosing to AutoPlay parts or all of your turn. = Klikom na gumb Automatske Igre otvara se skočni izbornik za odabir Automatske Igre dijela ili svih dijelova vašeg poteza. +Clicking Start AutoPlay in the pop-up menue or long pressing the AutoPlay button begins the multi-turn AutoPlay. This will play your next turns as if you were an AI. = Klikom na Pokreni Automatsku Igru u skočnom izborniku ili dugim pritiskom na gumb Automatske Igre započinje više-potezna Automatska Igra. Ovo će igrati vaše sljedeće poteze kao da ste Umjetna Inteligencija. +To cancel multi-turn AutoPlay you can press the AutoPlay button, next turn button or open the options menue. = Za poništavanje više-potezne Automatske Igre možete pritisnuti gumb Automatske Igre, gumb za sljedeći potez ili otvoriti izbornik opcija. Multi-turn AutoPlay is not advised on harder difficulty levels as your AI will not play better against an AI with modifiers. = Više-potezna Automatska Igra se ne savjetuje na težim razinama težine jer vaša Umjetna Inteligencija neće igrati bolje protiv Umjetne Inteligencije s modifikatorima. Multi-turn AutoPlay for multiplayer is not yet supported. = Više-potezna Automatska Igra u igri više igrača još nije podržana. @@ -7463,7 +7044,7 @@ The Maya measured time in days from what we would call 11th of August, 3114 BCE. Unciv only displays ය B'ak'tuns, ඹ K'atuns and ම Tuns (from left to right) since that is enough to approximate gregorian calendar years. The Maya numerals are pretty obvious to understand. Have fun deciphering them! = Unciv prikazuje samo ය B'ak'tuns, ඹ K'atuns i ම Tuns (slijeva na desno) budući da je to dovoljno za približnost godina gregorijanskog kalendara. Maja brojevi su prilično očigledni za razumijevanje. Zabavite se dešifrirajući ih! Your cities will periodically demand different luxury goods to satisfy their desire for new things in life. = Vaši će gradovi povremeno zahtijevati različita luksuzna dobra kako bi zadovoljili svoju želju za novim stvarima u životu. -If you manage to acquire the demanded luxury by trade, expansion, or conquest, the city will celebrate We Love The King Day for 20 turns. = Uspijete li steći traženi luksuz trgovinom, širenjem ili osvajanjem, grad će slaviti Volimo Kralja 20 poteza. +If you manage to acquire the demanded luxury by trade, expansion, or conquest, the city will celebrate We Love The King Day for 20 turns. = Uspijete li steći zahtijevani luksuz trgovinom, širenjem ili osvajanjem, grad će slaviti Volimo Kralja 20 poteza. During the We Love The King Day, the city will grow 25% faster. = Tokom Volimo Kralja, grad će rasti 25% brže. This means exploration and trade is important to grow your cities! = To znači da su istraživanje i trgovina važni za razvoj vaših gradova! @@ -7513,8 +7094,8 @@ Limitations = Ograničenja This is a work in progress. = Ovo je rad u tijeku. For technical reasons, only direct keys or Ctrl-Letter combinations can be used. = Iz tehničkih razloga, mogu se koristiti samo izravne tipke ili kombinacije Ctrl-Slovo. Using the Keys page = Korištenje stranice Ključevi -Each binding has a button with an image looking like this: = Svako vezivanje ima dugme sa slikom koja izgleda ovako: -While hovering the mouse over the key button, you can press a desired key directly to assign it. = Dok ste mišem iznad dugmeta tipke, možete izravno pritisnuti željenu tipku kako biste je dodijelili. +Each binding has a button with an image looking like this: = Svako vezivanje ima gumb sa slikom koja izgleda ovako: +While hovering the mouse over the key button, you can press a desired key directly to assign it. = Dok ste mišem iznad gumba tipke, možete izravno pritisnuti željenu tipku kako biste je dodijelili. Double-click the image to reset the binding to default. = Duplo kliknite na sliku da vratite vezanje na zadano. Bindings mapped to their default keys are displayed in gray, those reassigned by you in white. = Vezovi mapirani na njihove zadane tipke prikazani su sivom bojom, a oni koje ste ponovno dodijelili bijelom. Conflicting assignments are marked red. Conflicts can exist across categories, like World Screen / Unit Actions. Note that at the moment, the game does not prevent saving conflicting assignments, though the result may be unexpected. = Konfliktne dodjele označene su crvenom bojom. Konflikti mogu postojati među kategorijama, kao što su Zaslon Svijeta / Radnje Jedinice. Imajte na umu da igra trenutačno ne sprječava spremanje konfliktnih dodjela, iako rezultat može biti neočekivan. @@ -7523,7 +7104,7 @@ For discussion about missing entries, see the linked github issue. = Za raspravu Welcome to the Civilopedia! = Dobrodošli na Civilopediju! Here you can find information - general help, rules, and what makes up the game world. = Ovdje možete pronaći informacije - opću pomoć, pravila i ono što čini svijet igre. How to find information = Kako pronaći informacije -Select categories with the buttons on top of the screen. Also up there is the button to leave Civilopedia and go back to where you were before. = Odaberite kategorije pomoću dugmeta na vrhu zaslona. Gore se nalazi i dugme za napuštanje Civilopedije i povratak tamo gdje ste bili prije. +Select categories with the buttons on top of the screen. Also up there is the button to leave Civilopedia and go back to where you were before. = Odaberite kategorije pomoću gumbi na vrhu zaslona. Gore se nalazi i gumb za napuštanje Civilopedije i povratak tamo gdje ste bili prije. Each category has a list of entries on the left of the screen, sorted alphabetically (with few exceptions). Clicking an entry will update the center pane were you are currently reading this. = Svaka kategorija ima popis unosa na lijevoj strani zaslona, poredan abecednim redom (uz nekoliko iznimaka). Klikom na unos ažurirat ćete središnji prozor u kojem ovo trenutačno čitate. Lines can link to other Civilopedia entries, they are marked with a chain link symbol like this one. You can click anywhere on the line to follow the link. = Redci mogu povezivati na druge unose u Civilopediji, označene su simbolom lančane karike kao što je ova. Možete kliknuti bilo gdje na retku da biste slijedili vezu. The current category is special - all articles on general concepts are here. It is called 'Tutorials' because you can revisit these here, too. = Trenutačna kategorija je posebna - svi članci o općim pojmovima su ovdje. Zove se 'Poduke' jer ih možete ponovno pogledati također ovdje. @@ -7537,14 +7118,14 @@ The arrow keys allow navigation as well - left/right for categories, up/down for UI Tips = Savjeti za Korisničko Sučelje World screen = Zaslon svijeta Skip all units to end a turn quickly = Preskočite sve jedinice da brzo završite potez -Right-click or long press the "Next unit" button to open a popup menu which allows to end a turn without having to cycle through all units. If some units are automated, a dedicated button is available to move them before ending the turn. = Kliknite desnom tipkom miša ili dugo pritisnite dugme "Sljedeća jedinica" da biste otvorili skočni izbornik koji omogućuje završetak poteza bez potrebe za kruženjem kroz sve jedinice. Ako su neke jedinice automatizirane, dostupna je posebna tipka za njihovo pomicanje prije završetka poteza. +Right-click or long press the "Next unit" button to open a popup menu which allows to end a turn without having to cycle through all units. If some units are automated, a dedicated button is available to move them before ending the turn. = Kliknite desnom tipkom miša ili dugo pritisnite gumb "Sljedeća jedinica" da biste otvorili skočni izbornik koji omogućuje završetak poteza bez potrebe za kruženjem kroz sve jedinice. Ako su neke jedinice automatizirane, dostupna je posebna tipka za njihovo pomicanje prije završetka poteza. Toggle notification list display = Uključi/isključi prikaz popisa obavijesti -On the World screen, swipe the notification list to the right to temporarily hide it. Click the "Bell" button to display them again. = Na zaslonu Svijeta, povucite popis obavijesti udesno da biste ga privremeno sakrili. Pritisnite dugme "Zvono" da biste ih ponovno prikazali. +On the World screen, swipe the notification list to the right to temporarily hide it. Click the "Bell" button to display them again. = Na zaslonu Svijeta, povucite popis obavijesti udesno da biste ga privremeno sakrili. Pritisnite gumb "Zvono" da biste ih ponovno prikazali. The default state for the notification list can be set in Options > Display > UI - Notifications on world screen. = Zadano stanje za popis obavijesti može se postaviti u Opcije > Prikaz > Korisničko Sučelje - Obavijesti na zaslonu svijeta. Entering a City Screen quickly = Brzi ulazak u Zaslon Grada -You can Right-click or long press a city button on the World screen. The result is the same as tapping it twice - once to select and move the button, again to trigger a reaction: show the City Screen (if the city is yours to inspect), or offer the foreign city info popup. = Možete kliknuti desnom tipkom miša ili dugo pritisnuti dugme grada na zaslonu svijeta. Rezultat je isti kao da ga dodirnete dvaput - jednom za odabir i pomicanje dugmeta, ponovno za okidanje reakcije: pokaži Zaslon Grada (ako je grad vaš da ga pregledate), ili ponudi skočni prozor s informacijama o stranom gradu. +You can Right-click or long press a city button on the World screen. The result is the same as tapping it twice - once to select and move the button, again to trigger a reaction: show the City Screen (if the city is yours to inspect), or offer the foreign city info popup. = Možete kliknuti desnom tipkom miša ili dugo pritisnuti gumb grada na zaslonu svijeta. Rezultat je isti kao da ga dodirnete dvaput - jednom za odabir i pomicanje gumba, ponovno za okidanje reakcije: pokaži Zaslon Grada (ako je grad vaš da ga pregledate), ili ponudi skočni prozor s informacijama o stranom gradu. Upgrade multiple units of the same type = Nadogradite više jedinica iste vrste -On the World screen, select an unit that can be upgraded, then right-click or long press the "Upgrade" button to open a popup menu allowing to upgrade all units of this type at once. = Na zaslonu Svijeta odaberite jedinicu koja se može nadograditi, a zatim desnom tipkom miša kliknite ili dugo pritisnite dugme "Nadogradi" da biste otvorili skočni izbornik koji omogućuje nadogradnju svih jedinica ove vrste odjednom. +On the World screen, select an unit that can be upgraded, then right-click or long press the "Upgrade" button to open a popup menu allowing to upgrade all units of this type at once. = Na zaslonu Svijeta odaberite jedinicu koja se može nadograditi, a zatim desnom tipkom miša kliknite ili dugo pritisnite gumb "Nadogradi" da biste otvorili skočni izbornik koji omogućuje nadogradnju svih jedinica ove vrste odjednom. In the Units overview, the same upgrade menu is available by clicking the unit icon in the "Upgrade" column. When an unit is upgradeable, the icon is lit if conditions are met (enough gold and/or resources), otherwise it is dimmed. = U pregledu Jedinica, isti izbornik za nadogradnju dostupan je klikom na ikonu jedinice u stupcu "Nadogradi". Kada je jedinicu moguće nadograditi, ikona svijetli ako su ispunjeni uvjeti (dovoljno zlata i/ili resursa), inače je zatamnjena. Additional controls for the construction queue = Dodatne kontrole za red čekanja za izgradnju Right-click or long press a construction item to open a popup menu with additional controls, allowing to manage production of the same item in all cities, by issuing the commands from the same City Screen. = Kliknite desnom tipkom miša ili dugo pritisnite stavku u izgradnji da biste otvorili skočni izbornik s dodatnim kontrolama, omogućujući upravljanje proizvodnjom iste stavke u svim gradovima, izdavanjem naredbi s istog Zaslona Grada. @@ -7567,7 +7148,7 @@ In Politics overview > Show diagram, you can click anywhere inside the diagram t Miscellaneous = Razno External links = Vanjske poveznice External links support right-click or long press to copy the link to the clipboard instead of launching the browser. = Vanjske poveznice podržavaju desni klik ili dugi pritisak za kopiranje veze u međuspremnik umjesto pokretanja preglednika. -Example: The 'Open Github page' button on the Mod management screen. = Primjer: Dugme 'Otvori Github stranicu' na zaslonu za upravljanje Modovima. +Example: The 'Open Github page' button on the Mod management screen. = Primjer: Gumb 'Otvori Github stranicu' na zaslonu za upravljanje Modovima. Differences from Civilization V = Razlike u usporedbi s Civilizacijom V Production Focus\nIn Civilization V, the Food yield in a city is calculated first, then population grows by consuming stored food (growth), then production is calculated, and so on one by one the other stats are calculated. Thus, citizens can produce yields in the same turn as they are born. The city focus is set to Production to assign the newborn citizen to a hill so they'll contribute Production, and then manually reassigned to a growth tile on the next turn. Alternatively, you can set city focus to Gold (e.g. with Cerro de Potosi), Faith (e.g. with Mount Sinai) or whatever gains the most yields. In Unciv, citizens only start producing yields on the next turn, so you can ignore this whole concept = Fokus proizvodnje\nU Civilizaciji V, prvo se izračunava količina hrane u gradu, zatim populacija raste konzumiranjem uskladištene hrane (rast), zatim se izračunava proizvodnja, i tako jedna po jedna izračunavaju se ostale statistike. Dakle, građani mogu proizvoditi prinose u istom potezu kada su rođeni. Fokus grada postavljen je na Proizvodnju kako bi se novorođenog građanina dodijelilo na brdo kako bi doprinio Proizvodnji, a zatim se ručno premješta na polje rasta u sljedećem potezu. Alternativno, možete postaviti fokus grada na Zlato (npr. s Cerro de Potosi), Vjeru (npr. s Sinajsko Brdo) ili bilo što, što ima najviše prinosa. U Unciv-u, građani počinju proizvoditi prinose tek u sljedećem potezu, tako da možete zanemariti cijeli ovaj koncept diff --git a/android/assets/jsons/translations/Czech.properties b/android/assets/jsons/translations/Czech.properties index 65d5f37ca27e8..d3fe4990c6064 100644 --- a/android/assets/jsons/translations/Czech.properties +++ b/android/assets/jsons/translations/Czech.properties @@ -7020,7 +7020,7 @@ Utrecht = Utrecht Groningen = Groningen Breda = Breda Nijmegen = Nijmegen -Den Haag = Den Haag +The Hague = Den Haag Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen diff --git a/android/assets/jsons/translations/Dutch.properties b/android/assets/jsons/translations/Dutch.properties index 4b93e0299bf5a..5498faa05de16 100644 --- a/android/assets/jsons/translations/Dutch.properties +++ b/android/assets/jsons/translations/Dutch.properties @@ -91,16 +91,14 @@ Hydro Plant = Waterkrachtcentrale # City naming when list exhausted - # Requires translation! -New [cityName] = +New [cityName] = Nieuw [cityName] # Requires translation! Neo [cityName] = # Requires translation! Nova [cityName] = # Requires translation! Altera [cityName] = - # Requires translation! -New [civName]\n(formerly known as [cityName]) = +New [civName]\n(formerly known as [cityName]) = Nieuw [civName]\n(voorheen bekend als [cityName]) # Diplomacy,Trade,Nations @@ -111,10 +109,8 @@ Requires worked [resource] near city = Vereist bewerkte [resource] aanwezig in d Requires at least one of the following resources worked near the city: = Vereist dat minstens één van de volgende grondstoffen bewerkt wordt in de buurt van de stad: Wonder is being built elsewhere = Wonder wordt ergens anders gebouwd National Wonder is being built elsewhere = Nationaal Wonder wordt ergens anders gebouwd - # Requires translation! -Requires a [buildingName] in all [cityFilter] cities = - # Requires translation! -Requires a [buildingName] in at least [amount] of [cityFilter] cities = +Requires a [buildingName] in all [cityFilter] cities = Vereist een [buildingName] in alle [cityFilter] steden +Requires a [buildingName] in at least [amount] of [cityFilter] cities = Vereist een [buildingName] in tenminste [amount] van [cityFilter] steden [buildingName] required: = [buildingName] vereist: Requires a [buildingName] in this city = Vereist een [buildingName] in deze stad Cannot be built with [buildingName] = Kan niet gebouwd worden tegelijk met [buildingName] @@ -179,28 +175,18 @@ We will remember this. = We zullen dit onthouden. [civName] has declared war on [targetCivName]! = [civName] heeft de oorlog verklaard aan [targetCivName]! # Join War - # Requires translation! -[civName] has joined [allyCivName] in the war against us! = - # Requires translation! -We have joined [allyCivName] in the war against [enemyCivName]! = - # Requires translation! -[civName] has joined [allyCivName] in the war against [enemyCivName]! = - # Requires translation! -[civName] has joined us in the war against [enemyCivName]! = +[civName] has joined [allyCivName] in the war against us! = [civName] heeft zich aangesloten bij [allyCivName] in de oorlog tegen ons! +We have joined [allyCivName] in the war against [enemyCivName]! = Wij hebben ons aangesloten bij [allyCivName] in de oorlog tegen [enemyCivName]! +[civName] has joined [allyCivName] in the war against [enemyCivName]! = [civName] heeft zich aangesloten bij [allyCivName] in de oorlog tegen [enemyCivName]! +[civName] has joined us in the war against [enemyCivName]! = [civName] heeft zich aangesloten bij ons in de oorlog tegen [enemyCivName]! # Team War - # Requires translation! -You and [allyCivName] have declared war against [enemyCivName]! = - # Requires translation! -[civName] and [allyCivName] have declared war against us! = - # Requires translation! -[civName] and [allyCivName] have declared war against [enemyCivName]! = +You and [allyCivName] have declared war against [enemyCivName]! = Jij en [allyCivName] hebben de oorlog verklaard aan [enemyCivName]! +[civName] and [allyCivName] have declared war against us! = [civName] en [allyCivName] hebben ons de oorlog verklaard! +[civName] and [allyCivName] have declared war against [enemyCivName]! = [civName] en [allyCivName] hebben de oorlog verklaard aan [enemyCivName]! - # Requires translation! -[civName] cancelled their Defensive Pact with [otherCivName]! = - # Requires translation! -[civName] cancelled their Defensive Pact with us! = - # Requires translation! -We have cancelled our Defensive Pact with [civName]! = +[civName] cancelled their Defensive Pact with [otherCivName]! = [civName] heeft hun defensieve verbond met [otherCivName] verbroken! +[civName] cancelled their Defensive Pact with us! = [civName] heeft hun defensieve verbond met ons verbroken! +We have cancelled our Defensive Pact with [civName]! = We hebben ons defensieve verbond met [civName] verbroken! [civName] and [targetCivName] have signed a Peace Treaty! = [civName] en [targetCivName] hebben een Vredesverdrag getekend! [civName] and [targetCivName] have signed the Declaration of Friendship! = [civName] en [targetCivName] hebben een Vriendschapsovereenkomst getekend. @@ -208,16 +194,13 @@ We have cancelled our Defensive Pact with [civName]! = Do you want to break your promise to [leaderName]? = Wil je je belofte aan [leaderName] breken? Break promise = Verbreek je belofte We promised not to settle near them ([count] turns remaining) = We hebben beloofd ons niet bij hun in de buurt te vestigen ([count] beurten over) -They promised not to settle near us ([count] turns remaining) = Zij hebben beloofd zich niet bij ons in de buurt te vestigen ([count] beurten over) - # Requires translation! -We promised not to spread religion to them ([count] turns remaining) = - # Requires translation! -They promised not to spread religion to us ([count] turns remaining) = +They promised not to settle near us ([count] turns remaining) = Ze hebben beloofd zich niet bij ons in de buurt te vestigen ([count] beurten over) +We promised not to spread religion to them ([count] turns remaining) = We hebben beloofd onze religie niet naar hen te verspreiden ([count] beurten over) +They promised not to spread religion to us ([count] turns remaining) = Ze hebben beloofd hun religie niet naar ons te verspreiden ([count] beurten over) [civName] is upset that you demanded tribute from [cityState], whom they have pledged to protect! = [civName] is boos dat je een schatting hebt geëist van [cityState], die ze bescherming beloofd hebben! [civName] is upset that you attacked [cityState], whom they have pledged to protect! = [civName] is boos dat je een aanval hebt gepleegd op [cityState], die ze bescherming beloofd hebben! - # Requires translation! -[civName] is upset that you attacked [cityState], whom they are allied with! = +[civName] is upset that you attacked [cityState], whom they are allied with! = [civName] is boos dat je een aanval hebt gepleegd op [cityState], die hun bondgenoten zijn! [civName] is outraged that you destroyed [cityState], whom they had pledged to protect! = [civName] is woedend over de vernietiging van [cityState], die ze beloofd hadden te beschermen! [civName] has destroyed [cityState], whom you had pledged to protect! = [civName] heeft [cityState], die je beloofd had te beschermen, vernietigd! @@ -232,10 +215,8 @@ Ally = Bondgenoot [questName] (+[influenceAmount] influence) = [questName] (+[influenceAmount] invloed) [remainingTurns] turns remaining = [remainingTurns] beurten over - # Requires translation! -Current leader(s): [leaders] = - # Requires translation! -Current leader(s): [leaders], you: [yourScore] = +Current leader(s): [leaders] = Huidige koploper(s): [leaders] +Current leader(s): [leaders], you: [yourScore] = Huidige koploper(s): [leaders], jij: [yourScore] # In the two templates above, 'leaders' will be one or more of the following, and 'yourScore' one: # Requires translation! [civInfo] with [value] [valueType] = @@ -243,28 +224,22 @@ Current leader(s): [leaders], you: [yourScore] = Demands = Eisen # Will be deprecated in a few versions Please don't settle new cities near us. = Bouw alsjeblieft geen nieuwe steden bij ons in de buurt. - # Requires translation! -Don't settle new cities near us. = +Don't settle new cities near us. = Bouw geen steden bij ons in de buurt. Very well, we shall look for new lands to settle. = Uitstekend, we gaan wel op zoek naar nieuwe landen om ons te vestigen. We shall do as we please. = We doen wat we zelf willen. We noticed your new city near our borders, despite your promise. This will have....implications. = Het viel ons op dat u een nieuwe stad nabij onze grens heeft, ondanks uw belofte. Dit zal "gevolgen" hebben. # Will be deprecated in a few versions - # Requires translation! -Please don't spread your religion to us. = - # Requires translation! -Don't spread religion in our cities. = - # Requires translation! -Very well, we shall spread our faith elsewhere. = - # Requires translation! -We noticed you have continued spreading your faith, despite your promise. This will have...consequences. = +Please don't spread your religion to us. = Verspreid alsjeblieft jullie religie niet naar ons. +Don't spread religion in our cities. = Verspreid jullie religie niet naar ons. +Very well, we shall spread our faith elsewhere. = Okay dan, we zullen ons geloof ergens anders verspreiden. +We noticed you have continued spreading your faith, despite your promise. This will have...consequences. = Het viel ons op dat jullie nog steeds jullie geloof aan het verspreiden zijn, ondanks jullie belofte. Dit zal "gevolgen" hebben. I've been informed that my armies have taken tribute from [civName], a city-state under your protection.\nI assure you, this was quite unintentional, and I hope that this does not serve to drive us apart. = Ik ben geinformeerd over het eisen door mijn eenheden van erebetalingen van [civName], een stadstaat onder jullie bescherming.\nIk verzeker je dat dit geheel per ongeluk was, en hoop dat dit geen reden is voor onmin tussen ons. We asked [civName] for a tribute recently and they gave in.\nYou promised to protect them from such things, but we both know you cannot back that up. = Wij hebben betalingen geëist van [civName] en zij hebben toegestemd.\nJe hebt hen beloofd hen hier tegen te beschermen, maar we weten beide dat dit een loze belofte is. It's come to my attention that I may have attacked [civName].\nWhile it was not my goal to be at odds with your empire, this was deemed a necessary course of action. = Ik heb gehoord dat ik een aanval zou hebben gedaan op [civName], die onder je bescherming staat.\nHet was niet de bedoeling om op gespannen voet te staan met je rijk, maar deze actie was noodzaak. I thought you might like to know that I've launched an invasion of one of your little pet states.\nThe lands of [civName] will make a fine addition to my own. = Ik vermoed dat je wel zou willen weten dat we één van je troetelstaten zijn binnengevallen.\nHet grondgebied van [civName] zal een mooie toevoeging zijn aan mijn rijk. - # Requires translation! -THIS MEANS WAR! = +THIS MEANS WAR! = DIT BETEKENT OORLOG! Return [unitName] to [civName]? = [unitName] aan [civName] teruggeven? The [unitName] we liberated originally belonged to [civName]. They will be grateful if we return it to them. = De [unitName] die we bevrijd hebben, behoorde toe aan [civName]. Ze zullen dankbaar zijn als we deze aan hen teruggeven. @@ -287,12 +262,9 @@ Pledge to protect = Zeg je bescherming toe Declare Protection of [cityStateName]? = Verklaar je bescherming van [cityStateName]? Build [improvementName] on [resourceName] (200 Gold) = Bouw [improvementName] op [resourceName] (200 Goud) Gift Improvement = Schenk een Verbetering - # Requires translation! -[civName] is able to provide [unitName] once [techName] [isOrAre] researched. = - # Requires translation! -is = - # Requires translation! -are = +[civName] is able to provide [unitName] once [techName] [isOrAre] researched. = [civName] kan [unitName] voorzien als [techName] [isOrAre] onderzocht. +is = is +are = zijn Diplomatic Marriage ([amount] Gold) = Diplomatiek huwelijk ([amount] goud) We have married into the ruling family of [civName], bringing them under our control. = We zijn huwelijkse banden aangegaan met de heersende familie van [civName], waardoor ze onder onze controle zijn gekomen. @@ -306,8 +278,7 @@ City-States grow wary of your aggression. The resting point for Influence has de [cityState] is being attacked by [civName]! Kill [amount] of the attacker's military units and they will be immensely grateful. = [cityState] wordt aangevallen door [civName]! Dood [amount] van de militaire eenheden van de aanvaller en ze zullen ontzettend dankbaar zijn. [cityState] is deeply grateful for your assistance in the war against [civName]! = [cityState] is diep dankbaar voor je hulp in de oorlog met [civName]! [cityState] no longer needs your assistance against [civName]. = [cityState] heeft je hulp tegen [civName] niet meer nodig. - # Requires translation! -[cityState] cancelled the quests they had given you because you demanded tribute from them. = +[cityState] cancelled the quests they had given you because you demanded tribute from them. = [cityState] hebben de opdrachten die ze gegeven hadden geannuleerd omdat u een eerbetoon eiste van hen. War against [civName] = Oorlog tegen [civName] We need you to help us defend against [civName]. Killing [amount] of their military units would slow their offensive. = We hebben je hulp nodig om ons tegen [civName] te beschermen. Het doden van [amount] van hun militaire eenheden zou hun offensief afremmen. Currently you have killed [amount] of their military units. = Momenteel heb je [amount] van hun militaire eenheden gedood. @@ -436,14 +407,13 @@ Archipelago = Archipel Inner Sea = Binnenzee Perlin = Perlin - # Requires translation! -Select players from starting locations = +Select players from starting locations = Selecteer spelers met vaste startlocaties Random number of Civilizations = Willekeurig aantal Beschavingen Min number of Civilizations = Minimaal aantal Beschavingen Max number of Civilizations = Maximaal aantal Beschavingen Random number of City-States = Willekeurig aantal Stadstaten -Min number of City-States = Minimaal aantal Beschavingen -Max number of City-States = Maximaal aantal Beschavingen +Min number of City-States = Minimaal aantal Stadstaten +Max number of City-States = Maximaal aantal Stadstaten One City Challenge = Eén-staduitdaging Enable Nuclear Weapons = Laat kernwapens toe No City Razing = Geen Steden verwoesten @@ -634,8 +604,7 @@ That map is invalid! = Die kaart is ongeldig! ("[code]" does not conform to TerrainCodesWML) = ("[code]" volgt TerrainCodesWML niet) # Requires translation! Use for new game "Select players" button: = - # Requires translation! -Enter a description for the users of this map = +Enter a description for the users of this map = Maak een beschrijving voor gebruikers van deze kaart ## Map/Tool names My new map = Mijn nieuwe kaart @@ -663,8 +632,7 @@ Spawn river from/to = Genereer rivier van/naar Bottom left river = Linksonder rivier Bottom right river = Rechtsonder rivier Bottom river = Beneden rivier - # Requires translation! -Player = +Player = Speler # Multiplayer @@ -731,20 +699,16 @@ Couldn't download the latest game state! = Kon de laatste spelstaat niet laden! ## Resign button Resign = Geef op -Are you sure you want to resign? = Ben je zeker dat je wil opgeven? +Are you sure you want to resign? = Weet je zeker dat je wil opgeven? You can only resign if it's your turn = Je kan enkel opgeven als het jouw beurt is. [civName] resigned and is now controlled by AI = [civName] gaf op en wordt nu gecontroleerd door de computer ## Force resign button - # Requires translation! -Force current player to resign = - # Requires translation! -Are you sure you want to force the current player to resign? = +Force current player to resign = Dwing huidige speler om op te geven +Are you sure you want to force the current player to resign? = Weet je zeker dat je de huidige speler wil dwingen om af te treden? - # Requires translation! -Skip turn of current player = - # Requires translation! -Are you sure you want to skip the turn of the current player? = +Skip turn of current player = Sla de beurt van huidige speler over +Are you sure you want to skip the turn of the current player? = Weet je zeker dat je de beurt van de huidige speler wil overslaan? Last refresh: [duration] ago = Laatste keer herladen: [duration] geleden Current Turn: [civName] since [duration] ago = Huidige beurt: [civName] sinds [duration] @@ -785,8 +749,7 @@ Could not load game from clipboard! = Kon spel niet van klembord laden! Could not load game from custom location! = Het spel kon niet geladen worden vanaf de aangegeven locatie The file data seems to be corrupted. = De data in het bestand lijkt corrupt te zijn. The save was created with an incompatible version of Unciv: [version]. Please update Unciv to this version or later and try again. = Het opgeslagen spel is opgeslagen door een niet compatabele versie van unciv: versie [version]. Gelieve unciv te updaten naar deze versie of later. - # Requires translation! -You do not have sufficient permissions to access the file. = +You do not have sufficient permissions to access the file. = Je hebt niet genoeg permissie om dit bestand the openen. Load [saveFileName] = [saveFileName] laden Are you sure you want to delete this save? = Weet je zeker dat je dit opgeslagen spel wilt verwijderen? Delete save = Opgeslagen spel verwijderen @@ -805,10 +768,8 @@ Missing mods: [mods] = Ontbrekende mods: [mods] Load from custom location = Laden vanaf een aangepaste locatie Save to custom location = Opslaan op aangepaste locatie Could not save game to custom location! = Het spel kon niet opgeslagen worden op de aangegeven locatie! - # Requires translation! -'[saveFileName]' copied to clipboard! = - # Requires translation! -Could not save game to clipboard! = +'[saveFileName]' copied to clipboard! = '[saveFileName]' is gekopieerd naar klembord! +Could not save game to clipboard! = Kon het spel niet kopiëren naar klembord! Download missing mods = Download de ontbrekende mods Missing mods are downloaded successfully. = De ontbrekende mods zijn gedownload. Could not load the missing mods! = Kan de ontbrekende mods niet downloaden! @@ -824,8 +785,7 @@ About = Over Version = Versie See online Readme = Zie de online readme Visit repository = Bezoek repository - # Requires translation! -Visit the wiki = +Visit the wiki = Bezoek de wiki ## Display tab Display = Scherm @@ -898,8 +858,7 @@ Gameplay = Spel Check for idle units = Check voor inactieve eenheden Auto Unit Cycle = Automatisch tussen eenheden wisselen Move units with a single tap = Beweeg eenheden met één tik - # Requires translation! -Move units with a long tap = +Move units with a long tap = Beweeg eenheden met een lange tik Auto-assign city production = Bepaal stadsproductie automatisch Auto-build roads = Bouw wegen automatisch Automated workers replace improvements = Laat werkers automatisch verbeteringen vervangen @@ -984,8 +943,7 @@ HIGHLY EXPERIMENTAL - YOU HAVE BEEN WARNED! = UITERST EXPERIMENTEEL - JE BENT GE You need to restart the game for this change to take effect. = Je moet het spel opnieuw opstarten voordat deze verandering in effect gaan. # AutomationTab - # Requires translation! -Automation = +Automation = Automatie # AutoPlay AutoPlay = AutoPlay @@ -1027,8 +985,7 @@ An unknown civilization has completed [construction]! = Een onbekende beschaving The city of [cityname] has started constructing [construction]! = De stad [cityname] is begonnen met de bouw van [construction]! [civilization] has started constructing [construction]! = [civilization] is begonnen met de bouw van [construction]! An unknown civilization has started constructing [construction]! = Een onbekende beschaving is begonnen met de bouw van [construction]! - # Requires translation! -[cityName] has started working on [construction] = +[cityName] has started working on [construction] = [cityName] is begonnen met de bouw van [construction] [cityName] has expanded its borders! = [cityName] heeft zijn grenzen uitgebreid! Your Golden Age has ended. = Je Gouden Tijdperk is ten einde. [cityName] has been razed to the ground! = [cityName] is totaal verwoest! @@ -1039,8 +996,7 @@ An enemy [unit] ([amount] HP) has attacked [cityName] ([amount2] HP) = Een vijan An enemy [unit] has attacked our [ourUnit] = Een vijandige [unit] heeft onze [ourUnit] aangevallen An enemy [unit] ([amount] HP) has attacked our [ourUnit] ([amount2] HP) = Een vijandige [unit] ([amount] HP) heeft onze [ourUnit] ([amount2] HP) aangevallen Enemy city [cityName] has attacked our [ourUnit] = Vijandelijke stad [cityName] heeft onze [ourUnit] aangevallen - # Requires translation! -Enemy city [cityName] has attacked our [ourUnit] ([amount2] HP) = +Enemy city [cityName] has attacked our [ourUnit] ([amount2] HP) = Vijandelijke stad [cityName] heeft onze [ourUnit] ([amount2] HP) aangevallen An enemy [unit] has captured [cityName] = Een vijandige [unit] heeft [cityName] ingenomen An enemy [unit] ([amount] HP) has captured [cityName] ([amount2] HP) = Een vijandige [unit] ([amount] HP) heeft [cityName] ([amount2] HP) ingenomen An enemy [unit] has raided [cityName] = Een vijandige [unit] heeft [cityName] geplunderd @@ -1109,8 +1065,7 @@ You and [name] are no longer allies! = Jij en [name] zijn niet langer bondgenote [civName] has denounced us! = [civName] heeft ons aangeklaagd! [cityName] has been connected to your capital! = [cityName] werd verbonden met je hoofdstad! [cityName] has been disconnected from your capital! = [cityName] is niet langer verbonden met je hoofdstad! - # Requires translation! -Connect road completed = +Connect road completed = Verbinding weg voltooid [civName] has accepted your trade request = [civName] heeft je handelsverzoek aanvaard [civName] has made a counteroffer to your trade request = [civName] heeft een tegenbod gedaan tegen jouw handelsverzoek [civName] has denied your trade request = [civName] heeft je handelsverzoek afgewezen @@ -1122,10 +1077,8 @@ One of our trades with [nation] has ended = Een van onze handelsverdragen met [n One of our trades with [nation] has been cut short = Een van onze handelsverdragen met [nation] werd vervroegd beëindigd [nation] agreed to stop settling cities near us! = [nation] ging akkoord om niet langer steden te stichten nabij ons! [nation] refused to stop settling cities near us! = [nation] weigert om te stoppen met het stichten van steden nabij ons! - # Requires translation! -[nation] agreed to stop spreading religion to us! = - # Requires translation! -[nation] refused to stop spreading religion to us! = +[nation] agreed to stop spreading religion to us! = [nation] ging akkoord om niet langer hun religie naar ons te verspreiden! +[nation] refused to stop spreading religion to us! = [nation] weigert om te stoppen met hun religie naar ons te verspreiden! We have allied with [nation]. = We zijn geallieerd met [nation]. We have lost alliance with [nation]. = We hebben alliantie met [nation] verloren. We have discovered [naturalWonder]! = We hebben [naturalWonder] ontdekt! @@ -1200,8 +1153,7 @@ due to our [unitName] defeating a [otherUnitName] = doordat onze [unitName] een due to our [unitName] being defeated by a [otherUnitName] = doordat onze [unitName] is verslagen door een [otherUnitName] due to our [unitName] losing [amount] HP = doordat onze [unitName] [amount] HP is verloren due to our [unitName] being promoted = doordat onze [unitName] is gepromoveerd - # Requires translation! -due to expending our [unitName] = +due to expending our [unitName] = door het uitbreiden van [unitName] from the ruins = van de ruines # World Screen UI @@ -1222,8 +1174,7 @@ turn = beurt Next unit = Volgende eenheid Fog of War = Fog of War Pick a policy = Kies een beleid - # Requires translation! -Move Spies = +Move Spies = Verplaats spionnen Movement = Mobiliteit Strength = Kracht Ranged strength = Kracht op afstand @@ -1241,18 +1192,14 @@ Construct road = Weg bouwen Fortify = Versterken Fortify until healed = Versterken tot geheeld Fortification = Versterking - # Requires translation! -Guard = - # Requires translation! -Guarding = +Guard = Bewaker +Guarding = Bewaken Sleep = Slaap Sleep until healed = Slaap tot geheeld Moving = Bewegen Set up = Opstellen - # Requires translation! -Escort formation = - # Requires translation! -Stop Escort formation = +Escort formation = Escort formatie +Stop Escort formation = Stop Escort formatie Paradrop = Parachutelanding Air Sweep = Luchtaanval Add in capital = In hoofdstad toevoegen @@ -1340,9 +1287,8 @@ Buy for [amount] gold = Voor [amount] gold kopen Buy = Kopen Currently you have [amount] [stat]. = Momenteel heb je [amount] [stat]. Would you like to purchase [constructionName] for [buildingGoldCost] [stat]? = Will je [constructionName] kopen voor [buildingGoldCost] [stat]? - # Requires translation! -You are buying a religious unit in a city that doesn't follow the religion you founded ([yourReligion]). This means that the unit is tied to that foreign religion ([majorityReligion]) and will be less useful. = -Are you really sure you want to purchase this unit? = Ben je zeker dat je deze eenheid wilt kopen? +You are buying a religious unit in a city that doesn't follow the religion you founded ([yourReligion]). This means that the unit is tied to that foreign religion ([majorityReligion]) and will be less useful. = je bent een religieuze eenheid aan het kopen in een stad die niet in jouw religie ([yourReligion]). Dit betekent dat de eenheid verbonden is met de uitheemse religie ([majorityReligion]) en dus minder effectief is. +Are you really sure you want to purchase this unit? = Weet je zeker dat je deze eenheid wilt kopen? Purchase = Kopen No space available to place [unit] near [city] = Geen plaats beschikbaar om [unit] nabij [city] te plaatsen. Maintenance cost = Onderhouskosten @@ -1557,8 +1503,7 @@ Somewhere around [city] = Rondom [city] Far away = Ver weg Status = Status Current turn = Huidige beurt - # Requires translation! -You = +You = Jij Turn [turnNumber] = Beurt [turnNumber] Location = Locatie Unimproved = Ongewijzigd @@ -1669,8 +1614,7 @@ My friend, shall we declare our friendship to the world? = Mijn vriend, zullen w Sign Declaration of Friendship ([30] turns) = Teken vriendschapsverklaring ([30] beurten) We are not interested. = We zijn niet geïnteresseerd. We have signed a Declaration of Friendship with [otherCiv]! = We hebben een vriendschapsverklaring ondertekend met [otherCiv]! - # Requires translation! -[civName] and [otherCivName] have signed a Defensive Pact! = +[civName] and [otherCivName] have signed a Defensive Pact! = [civName] en [otherCivName] hebben een defensieve verbond ondertekent! [otherCiv] has denied our Declaration of Friendship! = [otherCiv] heeft onze vriendschapsverklaring afgewezen! Basics = Basis @@ -1681,8 +1625,7 @@ Unique to [civName], replaces [unitName] = Uniek voor [civName], vervangt [unitN Unique to [civName] = Uniek voor [civName] Tutorials = Handleidingen Cost = Kost - # Requires translation! -Turns to build = +Turns to build = Beurten tot helemaal gebouwd May contain [listOfResources] = Kan [listOfResources] bevatten May contain: = Kan bevatten: Can upgrade from [unit] = Kan opgewaardeerd worden van [unit] @@ -1702,8 +1645,7 @@ Improvements that provide this resource = Verbeteringen die deze grondstof produ Buildings that require this resource worked near the city = Gebouwen die deze grondstof nodig hebben welke bewerkt wordt bij de stad Units that consume this resource = Eenheden die deze grondstof gebruiken Can be built on = Kan gebouwd worden op - # Requires translation! -Cannot be built on = +Cannot be built on = Kan niet gebouwd worden op or [terrainType] = of [terrainType] Can be constructed by = Kan gebouwd worden door Can be created instantly by = Kan onmiddelijk gemaakt worden door @@ -1788,8 +1730,7 @@ Start year: [comment] = Beginjaar: [comment] Pillaging this improvement yields [stats] = Deze verbetering plunderen levert [stats] op Pillaging this improvement yields approximately [stats] = Deze verbetering plunderen levert ongeveer [stats] op Needs removal of terrain features to be built = Terreinkenmerken moeten verwijderd worden om te bouwen - # Requires translation! -Air Intercept Range: [amount] = +Air Intercept Range: [amount] = Lucht-onderscheppingsbereik: [amount] Unit type = Eenheidstype Units: = Eenheden Unit types = Eenheidstypes @@ -1819,8 +1760,7 @@ Adopt free policy = Neem gratis beleidsvoorstel aan Unlocked at = Ontgrendeld bij Gain 2 free technologies = Krijg 2 gratis technologiën All policies adopted = Alle aanvaarde beleidsvoorstellen - # Requires translation! -[branchName] branch = +[branchName] branch = [branchName] beleidsterrein Policy branch: [branchName] = Beleidsterrein: [branchName] Are you sure you want to adopt [branchName]? = Weet je zeker dat je [branchName] wilt aannemen? @@ -1885,56 +1825,39 @@ Move = Verplaats After an unknown civilization entered the [eraName], we have recruited [spyName] as a spy! = Nadat een onbekende beschaving in de [eraName] is aangekomen, hebben we [spyName] gerecruteerd als spion! We have recruited [spyName] as a spy! = We hebben [spyName] gerecruteerd als spion! - # Requires translation! -Your spy [spyName] has leveled up! = - # Requires translation! -Your spy [spyName] has leveled up [amount] times! = +Your spy [spyName] has leveled up! = Jouw spion [spyName] is een niveau opgehoogd! +Your spy [spyName] has leveled up [amount] times! = Jouw spion [spyName] is [amount] niveaus opgehoogd! Your spy [spyName] cannot steal any more techs from [civName] as we've already researched all the technology they know! = Jouw spion [spyName] kan niet meer technologieën stelen van [civName]. We hebben alle technologieën die zij kennen reeds ontdekt! # Stealing Technology defending civ An unidentified spy stole the Technology [techName] from [cityName]! = Een onbekende spion heeft de Technologie [techName] van [cityName] gestolen! A spy from [civName] stole the Technology [techName] from [cityName]! = Een spion van [civName] heeft de Technologie [techName] van [cityName] gestolen! - # Requires translation! -A spy from [civName] was found and killed trying to steal Technology in [cityName]! = - # Requires translation! -A spy from [civName] was found and killed by [spyName] trying to steal Technology in [cityName]! = +A spy from [civName] was found and killed trying to steal Technology in [cityName]! = Een spion van [civName] is gevonden en gedood tijdens het stelen van Technolochie in [cityName]! +A spy from [civName] was found and killed by [spyName] trying to steal Technology in [cityName]! = Een spion van [civName] is gevonden en vermoord door [spyName] tijdens het stelen van Technolochie in [cityName]! # Stealing Technology offending civ Your spy [spyName] stole the Technology [techName] from [cityName]! = Jouw spion [spyName] heeft de Technologie [techName] van [cityName] gestolen! - # Requires translation! -Your spy [spyName] was killed trying to steal Technology in [cityName]! = +Your spy [spyName] was killed trying to steal Technology in [cityName]! = Jouw spion [spyName] is gedood tijdens het stelen van Technologie in [cityName]! # Rigging elections - # Requires translation! -Your spy successfully rigged the election in [cityName]! = - # Requires translation! -Your spy lost the election in [cityStateName] to [civName]! = - # Requires translation! -The election in [cityStateName] were rigged by [civName]! = - # Requires translation! -Your spy lost the election in [cityName]! = +Your spy successfully rigged the election in [cityName]! = Jouw spion heeft de verkiezingen succesvol gemanipuleerd in [cityName]! +Your spy lost the election in [cityStateName] to [civName]! = Jouw spion verloor de verkiezingen in [cityStateName] tegen [civName]! +The election in [cityStateName] were rigged by [civName]! = De verkiezingen in [cityStateName] was gemanipuleerd door [civName]! +Your spy lost the election in [cityName]! = Jouw spion verloor de verkiezingen in [cityName]! # City-Ctate Coups - # Requires translation! -Stage Coup = - # Requires translation! -Your spy [spyName] successfully staged a coup in [cityName]! = - # Requires translation! -A spy from [civName] successfully staged a coup in our former ally [cityStateName]! = - # Requires translation! -A spy from [civName] successfully staged a coup in [cityStateName]! = - # Requires translation! -A spy from [civName] failed to stage a coup in our ally [cityStateName] and was killed! = - # Requires translation! -Our spy [spyName] failed to stage a coup in [cityStateName] and was killed! = - # Requires translation! -Do you want to stage a coup in [civName] with a [percent]% chance of success? = +Stage Coup = Zet een staatsgreep in scène +Your spy [spyName] successfully staged a coup in [cityName]! = Jouw spion [spyName] zette succesvol een staatsgreep in scène in [cityName]! +A spy from [civName] successfully staged a coup in our former ally [cityStateName]! = Een spion van [civName] heeft succesvol een staatsgreep in scène gezet in onze voormalige bondgenoot [cityStateName]! +A spy from [civName] successfully staged a coup in [cityStateName]! = Een spion van [civName] heeft succesvol een staatsgreep in scène gezet in [cityStateName]! +A spy from [civName] failed to stage a coup in our ally [cityStateName] and was killed! = Een spion van [civName] heeft gefaald om een staatsgreep in scène te zetten in onze bondgenoot [cityStateName] en is vermoord! +Our spy [spyName] failed to stage a coup in [cityStateName] and was killed! = Onze spion [spyName] heeft gefaald om een staatsgreep in scène te zetten in [cityStateName] en is vermoord! +Do you want to stage a coup in [civName] with a [percent]% chance of success? = Wil je een staatsgreep in scène zetten in [civName] met een [percent]% kans op succes? # Spy fleeing city After the city of [cityName] was destroyed, your spy [spyName] has fled back to our hideout. = Jouw spion [spyName] heeft zich teruggetrokken naar onze schuilplaats na de verwoesting van [cityName]. After the city of [cityName] was conquered, your spy [spyName] has fled back to our hideout. = Jouw spion [spyName] heeft zich teruggetrokken naar onze schuilplaats na de verovering van [cityName]. - # Requires translation! -After the city of [cityName] was taken over, your spy [spyName] has fled back to our hideout. = +After the city of [cityName] was taken over, your spy [spyName] has fled back to our hideout. = Nadat de stad van [cityName] overgenomen is, is jouw spion [spyName] gevlucht naar onze spionschuilplaats. Due to the chaos ensuing in [cityName], your spy [spyName] has fled back to our hideout. = Jouw spion [spyName] heeft zich teruggetrokken naar onze schuilplaats omwille van de chaos in [cityName]. # Promotions @@ -2015,8 +1938,7 @@ Mods of mods = Mods van mods Mod info and options = Mod info en opties Next page = Volgende pagina Open Github page = Open github pagina - # Requires translation! -Link copied to clipboard = +Link copied to clipboard = Link gekopieerd naar klembord Permanent audiovisual mod = Permanente audiovisuele mod Installed = Geinstalleerd Downloaded! = Gedownload! @@ -2042,10 +1964,8 @@ Stars ↓ = Sterren ↓ Status ↓ = Status ↓ Scenarios = Scenario's - # Requires translation! -Error loading scenario: = - # Requires translation! -Choose scenario = +Error loading scenario: = Probleem met laden van scenario +Choose scenario = Kies scenario # Uniques that are relevant to more than one type of game object @@ -2065,10 +1985,8 @@ Gain a free [building] [cityFilter] = Verkrijg een gratis [building] [cityFilter # Countables - # Requires translation! -Remaining [civFilter] Civilizations = - # Requires translation! -Owned [tileFilter] Tiles = +Remaining [civFilter] Civilizations = Overgebleven [civFilter] Civilisatie +Owned [tileFilter] Tiles = Tegels [tileFilter] in bezit # Unused Resources @@ -2188,8 +2106,7 @@ Sell [buildingFilter] buildings [cityFilter] = Verkoop [buildingFilter] gebouwen Each city founded increases culture cost of policies [relativeAmount]% less than normal = Elke gestichte stad verhoogt de cultuurkosten van beleid [relativeAmount]% minder dan normaal [relativeAmount]% Culture cost of adopting new Policies = [relativeAmount]% Cultuurkosten om nieuw beleid te adopteren [stats] for every known Natural Wonder = [stats] voor elk gekend Natuurlijk Wonder - # Requires translation! -[stats] for discovering a Natural Wonder (bonus enhanced to [stats2] if first to discover it) = +[stats] for discovering a Natural Wonder (bonus enhanced to [stats2] if first to discover it) = [stats] voor het ontdekken van een Natuurlijk Wonder (bonus verhoogd naar [stats2] als je het als eerste ontdekt) [relativeAmount]% Great Person generation [cityFilter] = [relativeAmount]% Groot Persoon generatie [cityFilter] [relativeAmount]% Gold from Great Merchant trade missions = [relativeAmount]% Goud van Grote Handelaar handelsmissies Great General provides double combat bonus = Grote Generaal levert dubbele gevechtsbonus op @@ -2232,12 +2149,9 @@ May choose [amount] additional belief(s) of any type when [foundingOrEnhancing] Religion naturally spreads to cities [amount] tiles away = Religie verspreidt zich vanzelf naar steden op [amount] tegels afstand May not generate great prophet equivalents naturally = Kan de equivalenten van een grote profeet niet spontaan genereren [relativeAmount]% Faith cost of generating Great Prophet equivalents = [relativeAmount]% Geloofskosten voor het genereren van Groot Profeet equivalenten - # Requires translation! -[relativeAmount]% spy effectiveness [cityFilter] = - # Requires translation! -[relativeAmount]% enemy spy effectiveness [cityFilter] = - # Requires translation! -New spies start with [amount] level(s) = +[relativeAmount]% spy effectiveness [cityFilter] = [relativeAmount]% spion effectiviteit [cityFilter] +[relativeAmount]% enemy spy effectiveness [cityFilter] = [relativeAmount]% vijandige spion effectiviteit [cityFilter] +New spies start with [amount] level(s) = Nieuwe spionnen starten met [amount] level(s) Starting tech = Starttechnologie Starts with [tech] = Begin het spel met [tech] Starts with [policy] adopted = Start met [policy] aangenomen @@ -2265,19 +2179,15 @@ Requires at least [amount] population = Vereist minstens [amount] bevolking Triggers a global alert upon build start = Veroorzaakt een globaal alarmsignaal bij het starten Triggers a global alert upon completion = Veroorzaakt een globaal alarmsignaal bij voltooiing Cost increases by [amount] per owned city = Kosten nemen toe met [amount] per stad in bezit - # Requires translation! -Cost increases by [amount] when built = - # Requires translation! -[amount]% production cost = - # Requires translation! -Can only be built = +Cost increases by [amount] when built = Kosten groeien met [amount] when built +[amount]% production cost = [amount]% productie kosten +Can only be built = Kan alleen gebouwd worden Must have an owned [tileFilter] within [amount] tiles = Moet [tileFilter] bezitten binnen [amount] tegels Enables nuclear weapon = Maakt nucleair wapen mogelijk Must not be on [tileFilter] = Mag niet op [tileFilter] zijn Must not be next to [tileFilter] = Mag niet naast [tileFilter] zijn Indicates the capital city = Duidt de hoofdstad aan - # Requires translation! -Moves to new capital when capital changes = +Moves to new capital when capital changes = Verplaatst naar nieuwe hoofdstad wanneer de hoofdstad verandert. Provides 1 extra copy of each improved luxury resource near this City = Levert 1 extra exemplaar van elke verbeterd luxegoed bij deze stad Destroyed when the city is captured = Wordt vernietigd als de stad ingenomen wordt Never destroyed when the city is captured = Nooit vernield bij verovering van de stad @@ -2332,11 +2242,9 @@ Ranged attacks may be performed over obstacles = Afstandsaanvallen mogen over ob Nuclear weapon of Strength [amount] = Nucleair wapen met [amount] Kracht No defensive terrain bonus = Geen defensieve terreinbonussen No defensive terrain penalty = Geen negatieve defensieve terreinbonus - # Requires translation! -No damage penalty for wounded units = +No damage penalty for wounded units = Geen schadestraf voor gewonde eenheden Uncapturable = Onvangbaar - # Requires translation! -Withdraws before melee combat = +Withdraws before melee combat = Trek terug voor een mêlee gevecht Unable to capture cities = Niet in staat steden te veroveren Unable to pillage tiles = Niet in staat tegels te plunderen No movement cost to pillage = Geen bewegingskost om te plunderen @@ -2401,22 +2309,16 @@ Great Person - [comment] = Groot Persoon - [comment] Is part of Great Person group [comment] = Is deel van een Grote Persoon groep [comment] by consuming this unit = door deze eenheid op te gebruiken for [amount] movement = voor [amount] beweging - # Requires translation! -for all movement = - # Requires translation! -requires [amount] movement = - # Requires translation! -costs [stats] stats = - # Requires translation! -costs [amount] [stockpiledResource] = - # Requires translation! -removing the [promotion] promotion/status = +for all movement = voor alle beweging +requires [amount] movement = heeft [amount] beweging nodig +costs [stats] stats = Kost [stats] stats +costs [amount] [stockpiledResource] = kost [amount] [stockpiledResource] +removing the [promotion] promotion/status = de [promotion] promotie/status aan het verwijderen once = eenmaal [amount] times = [amount] keer [amount] additional time(s) = [amount] extra ke(e)r(en) after which this unit is consumed = waarna deze eenheid opgebruikt zal worden - # Requires translation! -Grants [stats] to the first civilization to discover it = +Grants [stats] to the first civilization to discover it = Geeft [stats] aan de eerste civilizatie die het ontdekt Units ending their turn on this terrain take [amount] damage = Eenheden die hun beurt eindigen op dit terrein krijgen [amount] schade Grants [promotion] ([comment]) to adjacent [mapUnitFilter] units for the rest of the game = Geeft [promotion] ([comment]) aan aangrenzende [mapUnitFilter] eenheden voor de rest van het spel [amount] Strength for cities built on this terrain = [amount] Kracht voor steden die op dit terrein zijn gebouwd @@ -2451,44 +2353,29 @@ Great Improvement = Grote Verbetering Provides a random bonus when entered = Geeft een willekeurige bonus bij het betreden Unpillagable = Kan niet worden geplunderd Irremovable = Niet verwijderbaar - # Requires translation! -Will not be replaced by automated units = - # Requires translation! -Improves [resourceFilter] resource in this tile = - # Requires translation! -Will not build [baseUnitFilter/buildingFilter] = +Will not be replaced by automated units = Wordt niet vervangen door geautomatiseerde eenheden +Improves [resourceFilter] resource in this tile = Verbetert [resourceFilter] hulpbron in deze tegel +Will not build [baseUnitFilter/buildingFilter] = Zal [baseUnitFilter/buildingFilter] niet bouwen. every [positiveAmount] turns = elke [positiveAmount] beurten - # Requires translation! -before turn number [amount] = - # Requires translation! -after turn number [amount] = - # Requires translation! -on [speed] game speed = - # Requires translation! -on [difficulty] difficulty = - # Requires translation! -when [victoryType] Victory is enabled = - # Requires translation! -when [victoryType] Victory is disabled = - # Requires translation! -when religion is enabled = - # Requires translation! -when religion is disabled = - # Requires translation! -when espionage is enabled = - # Requires translation! -when espionage is disabled = +before turn number [amount] = voor beurt nummer [amount] +after turn number [amount] = na beurt nummer [amount] +on [speed] game speed = op [speed] spel snelheid +on [difficulty] difficulty = op [difficulty] moeilijkheid +when [victoryType] Victory is enabled = wanneer [victoryType] Overwinning is ingeschakeld +when [victoryType] Victory is disabled = wanneer [victoryType] Overwinning is uitgeschakeld +when religion is enabled = Wanneer religie ingeschakeld is +when religion is disabled = Wanneer religie uitgeschakeld is +when espionage is enabled = Wanneer spionage ingeschakeld is +when espionage is disabled = Wanneer spionage uitgeschakeld is with [amount]% chance = met [amount]% kans - # Requires translation! -for [civFilter] Civilizations = +for [civFilter] Civilizations = voor [civFilter] Civilizatie when at war = Tijdens een oorlog when not at war = Tijdens vrede during a Golden Age = tijdens een Gouden Tijdperk during We Love The King Day = tijdens Wij Houden Van De Koning Dag while the empire is happy = terwijl het rijk gelukkig is when between [amount] and [amount2] Happiness = wanneer tussen [amount] en [amount2] Geluk - # Requires translation! -when above [amount] Happiness = +when above [amount] Happiness = wanneer boven [amount] Geluk when below [amount] Happiness = wanneer onder [amount] Geluk during the [era] = tijdens het [era] before the [era] = voor het [era] @@ -2497,8 +2384,7 @@ if starting in the [era] = indien men start in het [era] if no other Civilization has researched this = als geen andere Beschavingen dit reeds ontdekt hebben after discovering [tech] = na ontdekking van [tech] before discovering [tech] = voor het ontdekken van [tech] - # Requires translation! -while researching [tech] = +while researching [tech] = terwijl [tech] onderzoeken if no other Civilization has adopted this = Als geen andere Beschaving dit aangenomen heeft after adopting [policy/belief] = Na het aannemen van [policy/belief] before adopting [policy/belief] = voor het aannemen van [policy/belief] @@ -2508,41 +2394,29 @@ before founding a religion = voor het stichten van een religie after founding a religion = na het stichten van een religie before enhancing a religion = voor het verbeteren van een religie after enhancing a religion = na het verbeteren van een religie - # Requires translation! -after generating a Great Prophet = +after generating a Great Prophet = na het genereren van een Grote Profeet if [buildingFilter] is constructed = als [buildingFilter] is gebouwd - # Requires translation! -if [buildingFilter] is not constructed = - # Requires translation! -if [buildingFilter] is constructed in all [cityFilter] cities = - # Requires translation! -if [buildingFilter] is constructed in at least [positiveAmount] of [cityFilter] cities = - # Requires translation! -if [buildingFilter] is constructed by anybody = +if [buildingFilter] is not constructed = als [buildingFilter] niet is gebouwd +if [buildingFilter] is constructed in all [cityFilter] cities = als [buildingFilter] gebouwd is in alle [cityFilter] steden +if [buildingFilter] is constructed in at least [positiveAmount] of [cityFilter] cities = als [buildingFilter] gebouwd is in tenminste [positiveAmount] van [cityFilter] steden +if [buildingFilter] is constructed by anybody = als [buildingFilter] is gebouwd door iemand with [resource] = met [resource] without [resource] = zonder [resource] when above [amount] [stat/resource] = boven [amount] [stat/resource] when below [amount] [stat/resource] = onder [amount] [stat/resource] - # Requires translation! -when between [amount] and [amount2] [stat/resource] = +when between [amount] and [amount2] [stat/resource] = wanneer er tussen [amount] en [amount2] [stat/resource] in this city = in deze stad in [cityFilter] cities = in [cityFilter] steden in cities connected to the capital = in steden verbonden met de hoofdstad - # Requires translation! -in cities with a major religion = - # Requires translation! -in cities with an enhanced religion = - # Requires translation! -in cities following our religion = +in cities with a major religion = in steden met een belangrijke religie +in cities with an enhanced religion = in steden met een verbeterde religie +in cities following our religion = in steden die onze religie volgen in cities with a [buildingFilter] = in steden met een [buildingFilter] in cities without a [buildingFilter] = in steden zonder een [buildingFilter] in cities with at least [amount] [populationFilter] = in steden met minstens [amount] [populationFilter] - # Requires translation! -in cities with [amount] [populationFilter] = - # Requires translation! -in cities with between [amount] and [amount2] [populationFilter] = - # Requires translation! -in cities with less than [amount] [populationFilter] = +in cities with [amount] [populationFilter] = in steden met [amount] [populationFilter] +in cities with between [amount] and [amount2] [populationFilter] = in steden met tussen [amount] en [amount2] [populationFilter] +in cities with less than [amount] [populationFilter] = in steden met minder dan [amount] [populationFilter] with a garrison = met een garnizoen for [mapUnitFilter] units = voor [mapUnitFilter] eenheden when [mapUnitFilter] = als [mapUnitFilter] @@ -2563,23 +2437,16 @@ with [amount] to [amount2] neighboring [tileFilter] tiles = met [amount] tot [am in [tileFilter] tiles = in [tileFilter] tegels in tiles without [tileFilter] = in tegels zonder [tileFilter] within [amount] tiles of a [tileFilter] = binnen [amount] tegels van een [tileFilter] - # Requires translation! -in tiles adjacent to [tileFilter] tiles = - # Requires translation! -in tiles not adjacent to [tileFilter] tiles = +in tiles adjacent to [tileFilter] tiles = in tegels aangrenzend aan [tileFilter] tegels +in tiles not adjacent to [tileFilter] tiles = in tegels niet aangrenzend aan [tileFilter] tegels on water maps = op waterkaarten in [regionType] Regions = in [regionType] Regionen in all except [regionType] Regions = in alle Regionen behalve [regionType] - # Requires translation! -when number of [countable] is equal to [countable2] = - # Requires translation! -when number of [countable] is different than [countable2] = - # Requires translation! -when number of [countable] is more than [countable2] = - # Requires translation! -when number of [countable] is less than [countable2] = - # Requires translation! -when number of [countable] is between [countable2] and [countable3] = +when number of [countable] is equal to [countable2] = wanneer het aantal van [countable] gelijk is aan [countable2] +when number of [countable] is different than [countable2] = wanneer het aantal van [countable] verschillend is van [countable2] +when number of [countable] is more than [countable2] = wanneer het aantal van [countable] meer is dan [countable2] +when number of [countable] is less than [countable2] = wanneer het aantal van [countable] minder is dan [countable2] +when number of [countable] is between [countable2] and [countable3] = wanneer het aantal van [countable] tussen [countable2] en [countable3] is Free [unit] appears = Gratis [unit] verschijnt [positiveAmount] free [unit] units appear = [positiveAmount] gratis [unit] eenheden verschijnen Free [unit] found in the ruins = Gratis [unit] gevonden in de ruïnes @@ -2592,10 +2459,8 @@ Free Great Person = Gratis Groot Persoon [amount] population in a random city = [amount] bevolking in een willekeurige stad Discover [tech] = Ontdek [tech] Adopt [policy] = Neem [policy] aan - # Requires translation! -Remove [policy] = - # Requires translation! -Remove [policy] and refund [amount]% of its cost = +Remove [policy] = Verwijder [policy] +Remove [policy] and refund [amount]% of its cost = Verwijder [policy] en krijg [amount]% of de kosten terug Free Technology = Gratis Technologie [positiveAmount] Free Technologies = [positiveAmount] Gratis Technologieën [positiveAmount] free random researchable Tech(s) from the [era] = [positiveAmount] gratis ontdekbare Technologie(ën) uit de [era] @@ -2608,53 +2473,34 @@ Gain [amount] [stat] = Krijg [amount] [stat] Gain [amount]-[amount2] [stat] = Krijg [amount]-[amount2] [stat] Gain enough Faith for a Pantheon = Krijg genoeg Geloof voor een Pantheon Gain enough Faith for [amount]% of a Great Prophet = Krijg genoeg Geloof voor [amount]% van een Grote Profeet - # Requires translation! -Gain control over [tileFilter] tiles in a [amount]-tile radius = +Gain control over [tileFilter] tiles in a [amount]-tile radius = Krijg controle over [tileFilter] tegels in een straal van [amount] tegels Reveal up to [positiveAmount/'all'] [tileFilter] within a [positiveAmount] tile radius = Onthul tot [positiveAmount/'all'] [tileFilter] binnen een omtrek van [positiveAmount] tegels From a randomly chosen tile [positiveAmount] tiles away from the ruins, reveal tiles up to [positiveAmount2] tiles away with [positiveAmount3]% chance = Vanaf een willekeurig gekozen tegel [positiveAmount] tegels weg van de ruïnes, onthul tegels tot [positiveAmount2] tegels afstand met een kans van [positiveAmount3]% Triggers the following global alert: [comment] = Activeert de volgende globale waarschuwing: [comment] Every major Civilization gains a spy once a civilization enters this era = Elke grote Beschaving krijgt een spion als een beschaving dit tijdperk betreedt - # Requires translation! -Promotes all spies [amount] time(s) = - # Requires translation! -Gain an extra spy = +Promotes all spies [amount] time(s) = Promoveert alle spionnen [amount] keer +Gain an extra spy = Krijg een extra spion Doing so will consume this opportunity to choose a Promotion = Door dit te doen gebruik je deze mogelijkheid om een Promotie te kiezen This Promotion is free = Deze Promotie is gratis - # Requires translation! -Turn this tile into a [terrainName] tile = +Turn this tile into a [terrainName] tile = Verander deze tegel naar een [terrainName] tegel Provides the cheapest [stat] building in your first [positiveAmount] cities for free = Geeft het goedkoopste [stat] gebouw gratis in je eerste [positiveAmount] steden Provides a [buildingName] in your first [positiveAmount] cities for free = Geeft een gratis [buildingName] in je eerste [positiveAmount] steden - # Requires translation! -Triggers a [event] event = - # Requires translation! -[unitTriggerTarget] heals [positiveAmount] HP = - # Requires translation! -[unitTriggerTarget] takes [positiveAmount] damage = - # Requires translation! -[unitTriggerTarget] gains [amount] XP = - # Requires translation! -[unitTriggerTarget] upgrades for free = - # Requires translation! -[unitTriggerTarget] upgrades for free including special upgrades = - # Requires translation! -[unitTriggerTarget] gains the [promotion] promotion = - # Requires translation! -[unitTriggerTarget] loses the [promotion] promotion = - # Requires translation! -[unitTriggerTarget] gains [amount] movement = - # Requires translation! -[unitTriggerTarget] loses [amount] movement = - # Requires translation! -[unitTriggerTarget] gains the [promotion] status for [positiveAmount] turn(s) = - # Requires translation! -[unitTriggerTarget] loses the [promotion] status = - # Requires translation! -[unitTriggerTarget] is destroyed = - # Requires translation! -upon discovering [techFilter] technology = +Triggers a [event] event = Activeert een [event] evenement +[unitTriggerTarget] heals [positiveAmount] HP = [unitTriggerTarget] geneest [positiveAmount] HP +[unitTriggerTarget] takes [positiveAmount] damage = [unitTriggerTarget] neemt [positiveAmount] schade +[unitTriggerTarget] gains [amount] XP = [unitTriggerTarget] krijgt [amount] XP +[unitTriggerTarget] upgrades for free = [unitTriggerTarget] krijgt verbeteringen gratis +[unitTriggerTarget] upgrades for free including special upgrades = [unitTriggerTarget] krijgt verbeteringen gratis inclusief speciale verbeteringen +[unitTriggerTarget] gains the [promotion] promotion = [unitTriggerTarget] krijgt de [promotion] promotie +[unitTriggerTarget] loses the [promotion] promotion = [unitTriggerTarget] verliest de [promotion] promotie +[unitTriggerTarget] gains [amount] movement = [unitTriggerTarget] krijgt [amount] beweging +[unitTriggerTarget] loses [amount] movement = [unitTriggerTarget] krijgt [amount] beweging +[unitTriggerTarget] gains the [promotion] status for [positiveAmount] turn(s) = [unitTriggerTarget] krijgt de [promotion] status voor [positiveAmount] beurt(en) +[unitTriggerTarget] loses the [promotion] status = [unitTriggerTarget] verliest de [promotion] status +[unitTriggerTarget] is destroyed = [unitTriggerTarget] is vernietigd +upon discovering [techFilter] technology = bij het ontdekken van [techFilter] technology upon entering the [era] = bij het betreden van [era] - # Requires translation! -upon entering a new era = +upon entering a new era = bij het betreden van een nieuw tijdperk upon adopting [policy/belief] = bij het aannemen van [policy/belief] upon declaring war with a major Civilization = bij het verklaren van oorlog op een grote Beschaving upon declaring friendship = bij het sluiten van een vriendschapspact @@ -2671,63 +2517,45 @@ upon turn end = na het beëindigen van de beurt upon founding a Pantheon = na het stichten van een Pantheon upon founding a Religion = na het stichten van een Religie upon enhancing a Religion = na het verbeteren van een Religie - # Requires translation! -upon damaging a [mapUnitFilter] unit = +upon damaging a [mapUnitFilter] unit = na de beschadiging van een [mapUnitFilter] eenheid upon defeating a [mapUnitFilter] unit = na het verslaan van een [mapUnitFilter] eenheid - # Requires translation! -upon expending a [mapUnitFilter] unit = +upon expending a [mapUnitFilter] unit = na de uitbreiding van een [mapUnitFilter] eenheid upon being defeated = na verslagen te worden upon being promoted = na gepromoveerd te worden - # Requires translation! -upon gaining the [promotion] promotion = - # Requires translation! -upon losing the [promotion] promotion = - # Requires translation! -upon gaining the [promotion] status = - # Requires translation! -upon losing the [promotion] status = +upon gaining the [promotion] promotion = bij het krijgen van de [promotion] promotie +upon losing the [promotion] promotion = bij het verliezen van de [promotion] promotie +upon gaining the [promotion] status = bij het krijgen van de [promotion] status +upon losing the [promotion] status = bij het verliezen van de [promotion] status upon losing at least [amount] HP in a single attack = na minstens [amount] HP te verliezen in een enkele aanval upon ending a turn in a [tileFilter] tile = na het beindigen van een beurt in een [tileFilter] tegel upon discovering a [tileFilter] tile = na het ontdekken van een [tileFilter] tegel for [amount] turns = voor [amount] beurten hidden from users = Verborgen voor gebruikers - # Requires translation! -for every [countable] = - # Requires translation! -for every adjacent [tileFilter] = - # Requires translation! -for every [amount] [countable] = - # Requires translation! -(modified by game speed) = +for every [countable] = voor elke [countable] +for every adjacent [tileFilter] = voor elke aangrenzende [tileFilter] +for every [amount] [countable] = voor elke [amount] [countable] +(modified by game speed) = (gemodificeerd door spel snelheid) Comment [comment] = [comment] Diplomatic relationships cannot change = Diplomatieke relaties kunnen niet veranderen Can convert gold to science with sliders = Kan goud omzetten naar wetenschap via sliders Allow City States to spawn with additional units = Laat toe dat Stadstaten met extra eenheden beginnen - # Requires translation! -Can trade civilization introductions for [positiveAmount] Gold = +Can trade civilization introductions for [positiveAmount] Gold = Kan handel civilizatie introducties voor [positiveAmount] Goud Disable religion = Schakel religie uit - # Requires translation! -Can only start games from the starting era = - # Requires translation! -Allow raze capital = - # Requires translation! -Allow raze holy city = +Can only start games from the starting era = Kan alleen spellen starten van het beginnend tijdperk +Allow raze capital = Hoofdstad laten slopen +Allow raze holy city = Heilige stad laten slopen Mod is incompatible with [modFilter] = Mod is niet compatibel met [modFilter] Mod requires [modFilter] = Mod vereist [modFilter] Should only be used as permanent audiovisual mod = Wordt best enkel gebruikt als een permanente audiovisuele mod Can be used as permanent audiovisual mod = Kan gebruikt worden als een permanente audiovisuele mod Cannot be used as permanent audiovisual mod = Kan niet gebruikt worden als een permanente audiovisuele mod - # Requires translation! -Mod preselects map [comment] = - # Requires translation! -if [modFilter] is enabled = - # Requires translation! -if [modFilter] is not enabled = +Mod preselects map [comment] = Mod preselecteert kaart [comment] +if [modFilter] is enabled = als [modFilter] is ingeschakeld +if [modFilter] is not enabled = als [modFilter] niet is ingeschakeld ######### countable ########### - # Requires translation! -year = +year = jaar ######### 'all' ########### @@ -2769,15 +2597,12 @@ Air = Lucht ######### civFilter ########### - # Requires translation! -AI player = - # Requires translation! -Human player = +AI player = AI speler +Human player = Menselijke speler ######### nationFilter ########### - # Requires translation! -Major = +Major = Belangrijk ######### City filters ########### @@ -2793,8 +2618,7 @@ Non-occupied = Niet-bezette in all cities with a world wonder = in alle steden met een wereldwonder in all cities connected to capital = in alle steden verbonden met de hoofdstad in all cities with a garrison = in alle steden met een garnizoen - # Requires translation! -Garrisoned = +Garrisoned = in garnizoen in all cities in which the majority religion is a major religion = in alle steden waar de meest-voorkomende religie een grote religie is in all cities in which the majority religion is an enhanced religion = in alle steden waarin de meest voorkomende religie een verbeterde religie is in non-enemy foreign cities = in niet-vijandige buitenlandse steden @@ -2802,19 +2626,13 @@ in enemy cities = in vijandige steden in foreign cities = in buitenlandse steden Foreign = Vreemd in annexed cities = in geannexeerde steden - # Requires translation! -Annexed = +Annexed = geannexeerd in puppeted cities = in vazalsteden - # Requires translation! -Puppeted = - # Requires translation! -in resisting cities = - # Requires translation! -Resisting = - # Requires translation! -in cities being razed = - # Requires translation! -Razing = +Puppeted = vazalstad gemaakte stad +in resisting cities = in verzettende steden +Resisting = verzetten +in cities being razed = in steden die gesloopt worden +Razing = slopen in holy cities = in heilige steden Holy = Heilige in City-State cities = in Stadstaat-steden @@ -2822,13 +2640,10 @@ in cities following this religion = in steden die deze religie volgen ######### buildingFilter ########### -Building = Building - # Requires translation! -National = - # Requires translation! -World Wonder = - # Requires translation! -World = +Building = Gebouw +National = Nationaal +World Wonder = Wereld Wonder +World = Wereld ######### Population Filters ########### @@ -2863,8 +2678,7 @@ All Road = Alle Weg ######### simpleTerrain ########### - # Requires translation! -Elevated = +Elevated = verhoogd ######### Region Types ########### @@ -2882,16 +2696,14 @@ Great = Groot ######### resourceFilter ########### - # Requires translation! -any = +any = elke ######### beliefType ########### Founder = Stichter Follower = Volger Enhancer = Hervormer - # Requires translation! -Any = +Any = Elke ######### Prophet Action Filters ########### @@ -2909,10 +2721,8 @@ enhancing = verbeteren ######### unitTriggerTarget ########### - # Requires translation! -This Unit = - # Requires translation! -Target Unit = +This Unit = Deze eenheid +Target Unit = doel eenheid ######### Unique Specials ########### @@ -2921,35 +2731,32 @@ all healing effects doubled = alle geneeseffecten zijn verdubbeld The Spaceship = Het ruimteschip Units ending their turn on [Mountain] tiles take [50] damage = Eenheden die hun beurt beëindigen op [Mountain] tegels krijgen [50] schade Maya Long Count calendar cycle = Maya Lange Telling kalendercyclus - # Requires translation! -Meet another civilization = -Triggerable = Triggerable -UnitTriggerable = UnitTriggerable -Global = Global -Nation = Nation -Era = Era +Meet another civilization = Maak kennis met een andere civilizatie +Triggerable = Activeerbare +UnitTriggerable = EenheidActiveerbare +Global = Globaal +Nation = Natie +Era = Tijdperk Tech = Tech -Policy = Policy -FounderBelief = FounderBelief -FollowerBelief = FollowerBelief -UnitAction = UnitAction -Unit = Unit -UnitType = UnitType -Promotion = Promotion -Resource = Resource -Ruins = Ruins -Speed = Speed +Policy = Beleid +FounderBelief = OprichterGeloof +FollowerBelief = VolgerGeloof +UnitAction = EenheidActie +Unit = Eenheid +UnitType = EenheidType +Promotion = Promotie +Resource = Hulpbron +Ruins = Ruïnes +Speed = Snelheid Tutorial = Tutorial -CityState = CityState -ModOptions = ModOptions - # Requires translation! -Event = - # Requires translation! -EventChoice = -Conditional = Conditional -TriggerCondition = TriggerCondition -UnitTriggerCondition = UnitTriggerCondition -UnitActionModifier = UnitActionModifier +CityState = StadStaat +ModOptions = ModOpties +Event = Evenement +EventChoice = EvenementKeuze +Conditional = Conditioneel +TriggerCondition = ActiveerConditie +UnitTriggerCondition = EenheidActiveerConditie +UnitActionModifier = EenheidActieModifier MetaModifier = MetaModifier @@ -2959,10 +2766,8 @@ Establishing Network = Netwerk aan het Opzetten Observing City = Stad aan het Observeren Stealing Tech = Technologie aan het Stelen Rigging Elections = Verkiezingen aan het Vervalsen - # Requires translation! -Coup = - # Requires translation! -Counter-intelligence = +Coup = Staatsgreep +Counter-intelligence = Contraspionage Dead = Dood @@ -2978,24 +2783,19 @@ Your so-called 'defensive pact' is worth nothing. = Je zogenaamde 'defensief ver You have publicly denounced us! = Je hebt ons publiekelijk beschuldigd! You have denounced our allies = Je hebt onze bondgenoten beschuldigd. You refused to stop settling cities near us = Je hebt geweigerd om te stoppen steden dicht bij ons te bouwen. - # Requires translation! -You refused to stop spreading religion to us = +You refused to stop spreading religion to us = Je hebt geweigert om te stoppen met religie verspreiden naar ons You betrayed your promise to not settle cities near us = Je hebt je belofte gebroken om geen steden dicht bij ons te bouwen. - # Requires translation! -You betrayed your promise to not spread your religion to us = +You betrayed your promise to not spread your religion to us = Je hebt je belofte gebroken om geen religie te verspreiden naar ons Your arrogant demands are in bad taste = Je arrogante eisen vallen niet in de smaak. Your use of nuclear weapons is disgusting! = Je gebruik van nucleaire wapens is walgelijk! You have stolen our lands! = Je hebt land van ons gestolen! You destroyed City-States that were under our protection! = Je hebt Stadstaten die onder onze bescherming stonden vernietigd! You attacked City-States that were under our protection! = Je hebt Stadstaten die onder onze bescherming stonden aangevallen! - # Requires translation! -You attacked our allied City-States! = +You attacked our allied City-States! = Je hebt de Stad-Staten aangevallen die onze bondgenoten zijn! You demanded tribute from City-States that were under our protection! = Je hebt betalingen geëist van Stadstaten die onder onze bescherming stonden! You sided with a City-State over us = Je hebt de kant gekozen van een Stadstaat boven ons. - # Requires translation! -You spied on us! = - # Requires translation! -You took the alliance we had with a City-State = +You spied on us! = Je hebt ons bespied! +You took the alliance we had with a City-State = Je nam de alliantie die we hadden met een Stad-staat Years of peace have strengthened our relations. = Jaren van vrede heeft onze relatie versterkt. Our mutual military struggle brings us closer together. = Onze gezamenlijke militaire strijd brengt ons dichter bij elkaar. We applaud your liberation of conquered cities! = We juichen je bevrijding van bezette steden toe! @@ -3006,37 +2806,30 @@ You have declared a defensive pact with our allies = Je hebt een defensief verbo You have denounced our enemies = Je hebt onze vijanden beschuldigd. Our open borders have brought us closer together. = Onze open grenzen hebben ons dichter bij elkaar gebracht. You fulfilled your promise to stop settling cities near us! = Je hebt je belofte gehouden om geen steden dicht bij ons te bouwen! - # Requires translation! -You fulfilled your promise to stop spreading religion to us! = +You fulfilled your promise to stop spreading religion to us! = Je bent de belofte om te stoppen met je religie verspreiden naar ons nagekomen! You gave us units! = Je hebt ons eenheden gegeven! We appreciate your gifts = We waarderen je geschenken. You returned captured units to us = Je hebt ons gevangen eenheden teruggegeven. - # Requires translation! -We believe in the same religion = +We believe in the same religion = We geloven in dezelfde religie #################### Lines from key bindings ####################### Main Menu = Hoofdmenu World Screen = Wereldscherm - # Requires translation! -AutoPlay menu = - # Requires translation! -NextTurn menu = +AutoPlay menu = AutoPlay menu +NextTurn menu = VolgendeBeurt menu Map Panning = Kaart Pannen Unit Actions = Eenheidacties City Screen = Stadsscherm City Screen Construction Menu = Stadsscherm Bouwmenu Popups = Popups - # Requires translation! -Quit = - # Requires translation! -Deselect then Quit = +Quit = Stoppen +Deselect then Quit = Deselecteer dan Stoppen Menu = Menu Next Turn = Volgende Beurt Next Turn Alternate = Alternatieve Volgende Beurt - # Requires translation! -Open AutoPlay menu = +Open AutoPlay menu = Open AutoPlay menu Empire Overview = Rijksoverzicht Music Player = Muziekspeler Developer Console = Ontwikkelaar Console @@ -3075,8 +2868,7 @@ Pan Right Alternate = Alternatieve Pan Rechts Connect road = Verbind weg Transform = Transformeer Repair = Herstel - # Requires translation! -Move Automated Units = +Move Automated Units = Beweeg geautomatiseerde eenheden Add to or remove from queue = Voeg toe aan of verwijder uit de wachtrij Raise queue priority = Verhoog prioriteit binnen de wachtrij Lower queue priority = Verlaag prioriteit binnen de wachtrij @@ -3401,10 +3193,8 @@ It appears that you do have a reason for existing – to make this deal with me. Greetings. = Gegroet. What do YOU want?! = Wat wil JIJ?! Ingenuity = Vindingrijkheid - # Requires translation! -May the gods bless you, great Nebuchadnezzar, ruler of ancient Babylon! Built 5000 years ago, Babylon emerged as an empire in 1800 BC, thanks to godlike Hammurabi, The Giver of Law. Falling under the Kassites assaults then the Assyrian domination, Babylon was reborn from its ashes, gaining back its independance, and became the beacon for Arts and Learning in the ancient world. O Nebuchadnezzar, after your death, Babylon quickly fell, conquered by the mighty Persians, and then by the Greeks, until the great city disappeared forever in 141 BC. = - # Requires translation! -Great Nebuchadnezzar, Babylon's glory still lives through you and your people. Will you create a spark to enlighten the world again? Will your new empire shine through the ages of history? = +May the gods bless you, great Nebuchadnezzar, ruler of ancient Babylon! Built 5000 years ago, Babylon emerged as an empire in 1800 BC, thanks to godlike Hammurabi, The Giver of Law. Falling under the Kassites assaults then the Assyrian domination, Babylon was reborn from its ashes, gaining back its independance, and became the beacon for Arts and Learning in the ancient world. O Nebuchadnezzar, after your death, Babylon quickly fell, conquered by the mighty Persians, and then by the Greeks, until the great city disappeared forever in 141 BC. = Mogen de goden met u zijn, Grote Nebuchadnezzar, heerser van oud Babylon! 5000 jaar geleden gebouwd, Babylon ontstond als een imperium 1800 v.Chr, dankzij de goddelijke Hammurabi, De Wetgever. Babylon, dat ten onder ging aan de aanvallen van de Kassieten en vervolgens aan de Assyrische overheersing, herrees uit zijn as en werd het baken voor kunst en leren in de oude wereld. Oh O Nebuchadnezzar, na uw dood viel Babylon snel, veroverd door de machtige Perzen en vervolgens door de Grieken, totdat de grote stad in 141 v.Chr voorgoed verdween. +Great Nebuchadnezzar, Babylon's glory still lives through you and your people. Will you create a spark to enlighten the world again? Will your new empire shine through the ages of history? = Grote Nebuchadnezzar, De glorie van Babylon leeft nog steeds door u en uw volk. Zal u een vonk creëren om de wereld opnieuw te verlichten? Zal uw nieuwe rijk de eeuwen van de geschiedenis doorschijnen? Babylon = Babylon Akkad = Akkad Dur-Kurigalzu = Dur-Kurigalzu @@ -3455,8 +3245,7 @@ My friend, does this seem reasonable to you? = Mijn vriend, lijkt dit jouw redel Greetings! = Gegroet! What? = Wat? Hellenic League = Helleense bond - # Requires translation! -Great King Alexander, leader of the mighty Greek nation, you are truly blessed by the gods. In 480 BC, quarrelsome city-states such as Athens, Sparta, Thebes, found a way to join their forces, allowing Greece to defeat the mighty Persia in the 5th century BC, both on land and sea. Following their example, you lead a Greek coalition and finally struck down the Persian Empire in 331 BC. You conquered almost all the known world, and from Europe to Africa to India, you built an empire unmatched by any before it. = +Great King Alexander, leader of the mighty Greek nation, you are truly blessed by the gods. In 480 BC, quarrelsome city-states such as Athens, Sparta, Thebes, found a way to join their forces, allowing Greece to defeat the mighty Persia in the 5th century BC, both on land and sea. Following their example, you lead a Greek coalition and finally struck down the Persian Empire in 331 BC. You conquered almost all the known world, and from Europe to Africa to India, you built an empire unmatched by any before it. = Grote Koning Alexander, leider van de machtige Grieken, u bent echt gezegend door de goden. In 400 v.Chr, ruziezoekende stad-staten zoals Athene, Sparta en Thebe vonden een manier om samen te werken, daardoor kon Griekenland de sterke Persen verslaan in 500 v.Chr, zowel op land en op zee. Naar aanleiding van dit voorbeeld, leid u een Griekse Coalitie naar het verslaan van het Perzische Rijk in 331 v.Chr. U versloeg bijna de hele bekende Wereld, van Europa tot Afrika tot Indië, u bouwde een rijk groter dan elk ander. Megalexandros, son of Zeus, will you ride Bucephalas again, to gift the world with the brightness of the Greek culture? Will your new empire shine through the ages of history? = Megalexandros, zoon van Zeus, zal u Bucephalas weer berijden en de wereld het geglans van de Griekse cultuur schenken? Zal uw nieuwe rijk schitteren door de eeuwen der geschiedenis heen? Athens = Athene Sparta = Sparta @@ -3510,10 +3299,8 @@ My friend, do you think you can accept this request? = Mijn vriend, denk je dat How are you today? = Hoe gaat het vandaag met u? Oh. It's you? = Oh. Ben jij het? Art of War = De kunst van het oorlogvoeren - # Requires translation! -Heaven itself bends before your beauty, Empress Wu Zetian, ruler of eternal China! You lead one of the oldest and greatest civilization of humanity. In your time, China stood at the forefront of science and technology, bringing the world such contributions as gunpowder, the printing press, and the world of Confucius, and this, long before the rest of the world was mature enough to make the same discoveries! = - # Requires translation! -Great Queen, can you make China prevail again, using your divine intelligence and beauty? China stands for greatness, and all its enemies will be dazzled soon enough! Will your new empire shine through the ages of history? = +Heaven itself bends before your beauty, Empress Wu Zetian, ruler of eternal China! You lead one of the oldest and greatest civilization of humanity. In your time, China stood at the forefront of science and technology, bringing the world such contributions as gunpowder, the printing press, and the world of Confucius, and this, long before the rest of the world was mature enough to make the same discoveries! = De hemel zelf buigt voor uw schoonheid, Keizerin Wu Zetian, heerser van eeuwig China! U leidt een van de oudste en grootste civilizaties van de mensheid. In uw tijd, was China de voorloper in de wetenschap en technologie, als uitvinder van buskruit, de drukpers en de wereld van Confucius. En dit allemaal, Voordat de rest van de wereld volwassen genoeg was voor dezelfde ontdekkingen! +Great Queen, can you make China prevail again, using your divine intelligence and beauty? China stands for greatness, and all its enemies will be dazzled soon enough! Will your new empire shine through the ages of history? = Grote Koningin, kan u China weer groot maken, door uw goddelijke intelligentie en schoonheid? China staat voor grootheid, al de vijanden zullen snel genoeg verblind worden! Zal uw nieuwe rijk schitteren door de eeuwen der geschiedenis heen? Beijing = Beijing Shanghai = Shanghai Guangzhou = Kanton @@ -3564,12 +3351,10 @@ Strike me down and my soul will torment yours forever, you have won nothing. = V Greetings, I am Ramesses the god. I am the living embodiment of Egypt, mother and father of all civilizations. = Gegroet, ik ben Ramses de god. De belichaming van Egypte, moeder en vader van alle beschaving. Generous Egypt makes you this offer. = Vrijgevig Egypte doet je dit aanbod. Good day. = Goede dag. -Oh, it's you. = O, het ben jij. +Oh, it's you. = Oh, jij bent het. Monument Builders = Bouwers van monumenten - # Requires translation! -O great Ramesses, Pharaoh of Egypt, bright as the Sun and mighty as the Nile! Lord of all living things, you lead the greatest of all civilizations, which has gifted the world with writing, advanced mathematics, sculpture, and architecture. Egyptian monuments and culture will continue to amaze the world for thousands of years. = - # Requires translation! -Mighty and eternal Ramesses, Egypt lasted for millenia, whereas other civilisations disappeared into dust after a few centuries. Amun-Ra blesses you again to lead Egypt and its people on the path of light. Will your new empire shine through the ages of history? = +O great Ramesses, Pharaoh of Egypt, bright as the Sun and mighty as the Nile! Lord of all living things, you lead the greatest of all civilizations, which has gifted the world with writing, advanced mathematics, sculpture, and architecture. Egyptian monuments and culture will continue to amaze the world for thousands of years. = Oh Grote Ramses, Farao van Egypte, helder als de Zon en machtig als de Nijl! Heer van alle levende dingen, u leidt de grootste civilizatie, die de wereld het schrijven, geavanceerde wiskunde, sculpturen en architectuur heeft geschonken. Egyptische monumenten en cultuur zullen de rest van de wereld blijven verbazen voor duizende jaren. +Mighty and eternal Ramesses, Egypt lasted for millenia, whereas other civilisations disappeared into dust after a few centuries. Amun-Ra blesses you again to lead Egypt and its people on the path of light. Will your new empire shine through the ages of history? = Machtige Ramses, Egypte hield duizende jaren stand, terwijl andere civilizaties na een paar eeuwen al verwoest waren. Amun-Ra zegent je opnieuw om Egypte en zijn volk op het pad van licht te leiden. Zal uw nieuwe rijk schitteren door de eeuwen der geschiedenis heen? Thebes = Thebe Memphis = Memphis Heliopolis = Heliopolis @@ -3629,10 +3414,8 @@ Would you be interested in a trade agreement with England? = Ben je geïnteresse Hello, again. = Hallo, alweer. Oh, it's you! = O, het ben jij! Sun Never Sets = De Zon Gaat Nooit Onder - # Requires translation! -Long live to Your Highness, Queen Elizabeth Gloriana, leader and protector of the glorious England! Through history, enduring many invasions, England strengthened its will, playing smartly with diplomacy, cunning, and military power, to eventually rose as one of the most dominant Empires the world has ever known. Their matchless navy, brilliant scientists and artists, and powerful merchants, have shaped the known world for centuries. = - # Requires translation! -Queen Elizabeth, will England cast once more its brightness upon all lands and seas of the world? Will your new empire shine through the ages of history? = +Long live to Your Highness, Queen Elizabeth Gloriana, leader and protector of the glorious England! Through history, enduring many invasions, England strengthened its will, playing smartly with diplomacy, cunning, and military power, to eventually rose as one of the most dominant Empires the world has ever known. Their matchless navy, brilliant scientists and artists, and powerful merchants, have shaped the known world for centuries. = Lang leve uwe Hoogheid, koningin Elizabeth Gloriana, leider en beschermer van het glorieuze Engeland! Die door de eeuwen heen vele invasies doorstaan, Engeland versterkte zijn wil, slim spelend met diplomatie, slimheid en militaire macht, om uiteindelijk uit te groeien tot een van de meest dominante rijken die de wereld ooit heeft gekend. Hun weergaloze zeemacht, briljante wetenschappers en kunstenaars, en machtige kooplieden hebben de bekende wereld eeuwenlang vormgegeven. +Queen Elizabeth, will England cast once more its brightness upon all lands and seas of the world? Will your new empire shine through the ages of history? = Koningin Elizabeth, zal Engeland opnieuw zijn glans werpen op alle landen en zeeën in de wereld? Zal uw nieuwe rijk schitteren door de eeuwen der geschiedenis heen? London = Londen York = York Nottingham = Nottingham @@ -3682,10 +3465,8 @@ France offers you this exceptional proposition. = Frankrijk biedt jou dit uitzon Hello. = Hallo. It's you. = Jij bent het. Ancien Régime = Ancien Régime - # Requires translation! -Vive Napoleon I, First Consul and Emperor of France! After the glorious Revolution which suppressed the centuries-old monarchy, the French nation stood at the heart of Europe as a Republic, and intended to export its ideals to the entire European continent, either by diplomacy or war. The French Capital Paris was more than ever the world center of Culture, Arts, and Letters. With its Great Army, reputed as one of the greatest in the History, France fought gloriously all surrounding enemies, but eventually fell against the coalition of other European powers. = - # Requires translation! -Napoleon Bonaparte, ruler of the French people, will you rebuild the Empire to take revenge on your foes, and make again of its Capital the City of Lights? Will your new empire shine through the ages of history? = +Vive Napoleon I, First Consul and Emperor of France! After the glorious Revolution which suppressed the centuries-old monarchy, the French nation stood at the heart of Europe as a Republic, and intended to export its ideals to the entire European continent, either by diplomacy or war. The French Capital Paris was more than ever the world center of Culture, Arts, and Letters. With its Great Army, reputed as one of the greatest in the History, France fought gloriously all surrounding enemies, but eventually fell against the coalition of other European powers. = Leve Napoleon I, eerste consul en keizer van Frankrijk! Na de glorieuze Revolutie die de eeuwenoude monarchie onderdrukte, de Franse natie die als republiek in het hart van Europa stond, was van plan was haar idealen naar het hele Europese continent te exporteren, door diplomatie of oorlog. De Franse hoofdstad Parijs was meer dan ooit het wereldcentrum van cultuur en kunst. Met zijn grote leger, dat bekend staat als een van de grootste in de geschiedenis, vocht Frankrijk glorieus tegen alle omringende vijanden, maar viel uiteindelijk tegen de coalitie van andere Europese machten. +Napoleon Bonaparte, ruler of the French people, will you rebuild the Empire to take revenge on your foes, and make again of its Capital the City of Lights? Will your new empire shine through the ages of history? = Napoleon Bonaparte, heerser van het Franse volk, wilt u het keizerrijk opnieuw opbouwen om wraak te nemen op uw vijanden en van zijn hoofdstad weer de stad van licht maken? Zal uw nieuwe rijk schitteren door de eeuwen der geschiedenis heen? Paris = Parijs Orleans = Orleans Lyon = Lyon @@ -3735,10 +3516,8 @@ How would you like it if I propose this kind of exchange? = Wat vind je ervan al Hello! = Hallo! What do you need?! = Wat heb je nodig?! Siberian Riches = Siberische Rijkdommen - # Requires translation! -Hail to Imperial Majesty Catherine, Empress of all Russians. Living in the largest country in the world, from the Pacific Ocean in the east to the Baltic Sea in the west, your people endured wars, droughts, and many disasters, imbuing the Russian society with heroism and tenacity, and producing artists and scientists among the best in the world. Russia is a powerful empire which rightfully claims its place in the world concert of superpowers. = - # Requires translation! -Empress Catherine, your people are eager for Russian glory, to revive the sacred light of the Motherland. Will your new empire shine through the ages of history? = +Hail to Imperial Majesty Catherine, Empress of all Russians. Living in the largest country in the world, from the Pacific Ocean in the east to the Baltic Sea in the west, your people endured wars, droughts, and many disasters, imbuing the Russian society with heroism and tenacity, and producing artists and scientists among the best in the world. Russia is a powerful empire which rightfully claims its place in the world concert of superpowers. = Heil aan keizerlijke majesteit Catharina, keizerin van alle Russen. Uw volk, dat in het grootste land ter wereld woont, van de Stille Oceaan in het oosten tot de Baltische Zee in het westen, heeft oorlogen, droogtes en vele rampen doorstaan, waardoor de Russische samenleving werd doordrenkt met heldenmoed en vasthoudendheid, waardoor kunstenaars en wetenschappers werden voortgebracht die tot de beste ter wereld behoorden. +Empress Catherine, your people are eager for Russian glory, to revive the sacred light of the Motherland. Will your new empire shine through the ages of history? = Keizerin Catharina, uw volk verlangt naar Russische glorie, om het heilige licht van het moederland te doen herleven. Zal uw nieuwe rijk schitteren door de eeuwen der geschiedenis heen? Moscow = Moskou St. Petersburg = St. Petersburg Novgorod = Novgorod @@ -3785,13 +3564,11 @@ So brave, yet so stupid! If only you had a brain similar to your courage. = Zo d The gods have deprived Rome of their favour. We have been defeated. = De goden hebben Rome verlaten. We zijn verslagen. I greet you. I am Augustus, Imperator and Pontifex Maximus of Rome. If you are a friend of Rome, you are welcome. = Ik groet je, ik ben Augustus, Imperator en Pontifex Maximus van Rome. Als je een vriend van Rome bent, heet ik je welkom. I offer this, for your consideration. = Ik bied je dit aan, ter overweging. -Hail. = Hail +Hail. = Heil What do you want? = Wat wil je? -The Glory of Rome = The Glorie van Rome - # Requires translation! -Ave Caesar Augustus, Emperor of Rome and Dominus of the Roman Empire! Your empire was the most powerful and feared of all in Western civilization. The Roman people crafted so brilliantly its culture, law, art, and warfare, that no one could contest the supremacy of Rome. Force and Honor led to glorious conquests, a domination of all the lands from Spain in the west to Syria in the east, even reaching the remote barbarian lands of England and Germany. Roman art and architecture have been praised for millenia and have been envied by all lesser civilizations who have followed. = - # Requires translation! -O glorious Imperator, your people celebrate you and ask for the glory of Rome! In these times of darkness, the Pax Romana will be a beacon of light for all! Will your new empire shine through the ages of history? = +The Glory of Rome = De Glorie van Rome +Ave Caesar Augustus, Emperor of Rome and Dominus of the Roman Empire! Your empire was the most powerful and feared of all in Western civilization. The Roman people crafted so brilliantly its culture, law, art, and warfare, that no one could contest the supremacy of Rome. Force and Honor led to glorious conquests, a domination of all the lands from Spain in the west to Syria in the east, even reaching the remote barbarian lands of England and Germany. Roman art and architecture have been praised for millenia and have been envied by all lesser civilizations who have followed. = Ave Caesar Augustus, keizer van Rome en Dominus van het Romeinse Rijk! Uw rijk was het machtigste en meest gevreesde van alle in de Westerse beschaving. Het Romeinse volk maakte zijn cultuur, recht, kunst en oorlogvoering zo briljant dat niemand de suprematie van Rome kon betwisten. Kracht en eer leidden tot glorieuze veroveringen, een overheersing van alle landen van Spanje in het westen tot Syrië in het oosten, en bereikten zelfs de afgelegen barbaarse gebieden van Engeland en Duitsland. De Romeinse kunst en architectuur worden al duizenden jaren geprezen en benijd door alle mindere beschavingen die volgden. +O glorious Imperator, your people celebrate you and ask for the glory of Rome! In these times of darkness, the Pax Romana will be a beacon of light for all! Will your new empire shine through the ages of history? = Oh glorieuze Imperator, uw volk viert u en vraagt om de glorie van Rome! In deze tijden van duisternis zal de Pax Romana een baken van licht zijn voor iedereen! Zal uw nieuwe rijk schitteren door de eeuwen der geschiedenis heen? Rome = Rome Antium = Antium Cumae = Cumae @@ -3840,10 +3617,8 @@ Welcome foreigner, I am Harun Al-Rashid, Caliph of the Arabs. Come and tell me a Come forth, let's do business. = Kom, en laat ons zaken doen. Peace be upon you. = Vrede zij met je. Trade Caravans = Handelskaravanen - # Requires translation! -Blessings of the Great God be upon you, O great caliph Harun al-Rashid, leader of the mighty Arabian people! The Muslim Empire, the Caliphate, born from chaos after the death of the prophet Muhammad in 632 AD, intended to apply the rule of God to all Earth. And by the will of God, the caliphate reached its full power, ruling Spain, North Africa, the Middle East, Anatolia, the Balkans and Persia, to even surpass the Great Roman Empire. The arts and sciences were a holy gift of Arabia during the Middle Ages, as the infidel lands of Europe delved deep into ignorance and chaos. Lasting for six hundred years, the Caliphate finally fell before the Mongols, the plague of the civilized world. = - # Requires translation! -Great Caliph Harun al Rashid, all Arabian people long for greatness! Arabia must be once again the land of arts and knowledge, which under the radiant law of God, will fear no enemy! Will your new empire shine through the ages of history? = +Blessings of the Great God be upon you, O great caliph Harun al-Rashid, leader of the mighty Arabian people! The Muslim Empire, the Caliphate, born from chaos after the death of the prophet Muhammad in 632 AD, intended to apply the rule of God to all Earth. And by the will of God, the caliphate reached its full power, ruling Spain, North Africa, the Middle East, Anatolia, the Balkans and Persia, to even surpass the Great Roman Empire. The arts and sciences were a holy gift of Arabia during the Middle Ages, as the infidel lands of Europe delved deep into ignorance and chaos. Lasting for six hundred years, the Caliphate finally fell before the Mongols, the plague of the civilized world. = Mag de grote god u zegenen, oh grote kalief Harun al-Rashid, leider van het machtige Arabische volk! Het moslimrijk, het kalifaat, ontstaan uit chaos na de dood van de profeet Mohammed in 632 na Christus, was bedoeld om de heerschappij van God toe te passen op de hele aarde. En door de wil van God bereikte het kalifaat zijn volle macht en heerste het over Spanje, Noord-Afrika, het Midden-Oosten, Anatolië, de Balkan en Perzië, om zelfs het Grote Romeinse Rijk te overtreffen. De kunsten en wetenschappen waren een heilig geschenk van Arabië tijdens de Middeleeuwen, toen de ongelovige landen van Europa diep wegzakten in onwetendheid en chaos. Het Kalifaat duurde zeshonderd jaar en viel uiteindelijk voor de Mongolen, de plaag van de beschaafde wereld. +Great Caliph Harun al Rashid, all Arabian people long for greatness! Arabia must be once again the land of arts and knowledge, which under the radiant law of God, will fear no enemy! Will your new empire shine through the ages of history? = Grote Kalief Harun al Rashid, alle Arabieren verlangen naar grootsheid! Arabië moet weer het land van kunst en kennis worden, dat onder de stralende wet van God geen vijand zal vrezen! Zal uw nieuwe rijk schitteren door de eeuwen der geschiedenis heen? Mecca = Mekka Medina = Medina Damascus = Damaskus @@ -3887,10 +3662,8 @@ The people of the United States of America welcome you. = De bevolking van de Ve Is the following trade of interest to you? = Interesseert jou de volgende handelsovereenkomst? Well? = Nou? Manifest Destiny = Manifest Destiny - # Requires translation! -President Washington, we salute you and the proud American civilization! Freed from the British dominion in the 18th century, then cleansed and reborn after a terrible civil war, the United States nation was ready to play its great role in the 20th century. At the height of its power, triumphant after two terrible world wars, United States of America, a land of immigration, opportunities, optimism and determination, has risen above all other weakening nations, unable to equal such power. = - # Requires translation! -President Washington, will you show to the world the legitimacy of the American way of life, and spread the flame of liberty to all mankind? Will your new empire shine through the ages of history? = +President Washington, we salute you and the proud American civilization! Freed from the British dominion in the 18th century, then cleansed and reborn after a terrible civil war, the United States nation was ready to play its great role in the 20th century. At the height of its power, triumphant after two terrible world wars, United States of America, a land of immigration, opportunities, optimism and determination, has risen above all other weakening nations, unable to equal such power. = President Washington, we groeten u en de trotse Amerikaanse beschaving! Bevrijd van de Britse overheersing in de 18e eeuw, vervolgens gereinigd en herboren na een verschrikkelijke burgeroorlog, was de natie van de Verenigde Staten klaar om haar grote rol te spelen in de 20e eeuw. Op het hoogtepunt van hun macht, triomfantelijk na twee verschrikkelijke wereldoorlogen, hebben de Verenigde Staten van Amerika, een land van immigratie, kansen, optimisme en vastberadenheid, zich verheven boven alle andere verzwakkende naties, die niet in staat waren om deze macht te evenaren. +President Washington, will you show to the world the legitimacy of the American way of life, and spread the flame of liberty to all mankind? Will your new empire shine through the ages of history? = President Washington, wilt u de legitimiteit van de Amerikaanse manier van leven aan de wereld tonen en de vlam van de vrijheid verspreiden naar de hele mensheid? Zal uw nieuwe rijk schitteren door de eeuwen der geschiedenis heen? Washington = Washington New York = New York Boston = Boston @@ -3952,10 +3725,8 @@ We hope for a fair and just relationship with you, who are renowned for military I would be grateful if you agreed on the following proposal. = Ik zal dankbaar zijn als je de volgende overeenkomst wil tekenen. Oh, it's you... = Oh, ben jij het... Bushido = Bushido - # Requires translation! -Lord Oda Nobunaga, ruler of Japan, the land of the Rising Sun is at your command! Through history, Japanese people lived and died with honor, proud of their rich culture of arts and letters. Years of bloody civil wars, invasions of foreign powers, wealth but also great poverty, have never altered the strong will of the Rising Sun island, as the Bushido spirit has imbued the fields of battle and the Japanese society for millenia. At the end of the 19th century, under foreign influence, your people took the path of modernity, and in a few decades, made of Japan a land of technological innovation and powerful industry, with which only few nations can compete. = - # Requires translation! -O great daimyo, will you take on your hands the Japan destiny, for the Rising Sun to light the world? Will your new empire shine through the ages of history? = +Lord Oda Nobunaga, ruler of Japan, the land of the Rising Sun is at your command! Through history, Japanese people lived and died with honor, proud of their rich culture of arts and letters. Years of bloody civil wars, invasions of foreign powers, wealth but also great poverty, have never altered the strong will of the Rising Sun island, as the Bushido spirit has imbued the fields of battle and the Japanese society for millenia. At the end of the 19th century, under foreign influence, your people took the path of modernity, and in a few decades, made of Japan a land of technological innovation and powerful industry, with which only few nations can compete. = Heer Oda Nobunaga, heerser van Japan, het land van de Rijzende Zon staat tot uw beschikking! Door de geschiedenis heen leefden en stierven Japanse mensen met eer, trots op hun rijke cultuur van kunst en literatuur. Jaren van bloedige burgeroorlogen, invasies van vreemde grootmachten, rijkdom maar ook grote armoede, hebben nooit iets veranderd aan de sterke wil van het eiland van de Rijzende Zon, aangezien de Bushido-geest al duizenden jaren de strijdvelden en de Japanse samenleving doordrenkt. Aan het einde van de 19e eeuw sloeg uw volk onder buitenlandse invloed de weg van de moderniteit in en maakte van Japan in een paar decennia een land van technologische innovatie en krachtige industrie, waarmee maar weinig naties kunnen concurreren. +O great daimyo, will you take on your hands the Japan destiny, for the Rising Sun to light the world? Will your new empire shine through the ages of history? = Oh grote daimyo, wilt u het lot van Japan in handen nemen, zodat de Rijzende Zon de wereld kan verlichten? Zal uw nieuwe rijk schitteren door de eeuwen der geschiedenis heen? Kyoto = Kyoto Osaka = Osaka Tokyo = Tokyo @@ -5823,8 +5594,7 @@ You have achieved victory through mastery of Science! You have conquered the mys Complete 5 policy branches and\nbuild the Utopia Project to win! = Voltooi 5 beleidsgroepen en\nbouw het Utopia Project om te winnen! You have achieved victory through the awesome power of your Culture. Your civilization's greatness - the magnificence of its monuments and the power of its artists - have astounded the world! Poets will honor you as long as beauty brings gladness to a weary heart. = Je hebt een overwinning bekomen dankzij de fantastische kracht van je cultuur. Jouw beschaving's grootheid - de grootsheid van zijn monumenten en de kracht van zijn artiesten - heeft de wereld met verstomming geslagen. Poëten zullen je eren, zolang schoonheid blijdschap geeft aan een vermoeid hart. - # Requires translation! -Capture all enemy Capitals\nto win! = +Capture all enemy Capitals\nto win! = Verover alle vijandige Hoofdsteden\nom te winnen! The world has been convulsed by war. Many great and powerful civilizations have fallen, but you have survived - and emerged victorious! The world will long remember your glorious triumph! = De wereld is verscheurd door oorlog. Vele grote en krachtige beschavingen zijn gevallen, maar jij hebt overleefd - en kwam als overwinnaar tevoorschijn! De wereld zal lang je glorieuze triomf herinneren. Build the UN and be voted\nworld leader to win! = Bouw de UN en wordt de\nwereldleider om te winnen! @@ -5999,8 +5769,7 @@ Coffee House = Koffiehuis Police Station = Politiebureau - # Requires translation! -National Intelligence Agency = +National Intelligence Agency = Nationale Inlichtingendienst Neuschwanstein = Neuschwanstein @@ -6455,7 +6224,7 @@ Utrecht = Utrecht Groningen = Groningen Breda = Breda Nijmegen = Nijmegen -Den Haag = Den Haag +The Hague = Den Haag Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen diff --git a/android/assets/jsons/translations/English.properties b/android/assets/jsons/translations/English.properties index 89165bc30878c..ebf5776b24dee 100644 --- a/android/assets/jsons/translations/English.properties +++ b/android/assets/jsons/translations/English.properties @@ -11127,7 +11127,7 @@ Breda = # Requires translation! Nijmegen = # Requires translation! -Den Haag = +The Hague = # Requires translation! Haarlem = # Requires translation! diff --git a/android/assets/jsons/translations/Filipino.properties b/android/assets/jsons/translations/Filipino.properties index 99dc0645abda6..4c8ebf5f2dec1 100644 --- a/android/assets/jsons/translations/Filipino.properties +++ b/android/assets/jsons/translations/Filipino.properties @@ -6504,7 +6504,7 @@ Utrecht = Utrecht Groningen = Groningen Breda = Breda Nijmegen = Nijmegen -Den Haag = Den Haag +The Hague = Den Haag Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen diff --git a/android/assets/jsons/translations/Finnish.properties b/android/assets/jsons/translations/Finnish.properties index dccdbeb09d818..4706dd1cce4aa 100644 --- a/android/assets/jsons/translations/Finnish.properties +++ b/android/assets/jsons/translations/Finnish.properties @@ -9002,7 +9002,7 @@ Breda = # Requires translation! Nijmegen = # Requires translation! -Den Haag = +The Hague = # Requires translation! Haarlem = # Requires translation! diff --git a/android/assets/jsons/translations/French.properties b/android/assets/jsons/translations/French.properties index 7929d91351d3a..a9bcea34fff9c 100644 --- a/android/assets/jsons/translations/French.properties +++ b/android/assets/jsons/translations/French.properties @@ -6149,7 +6149,7 @@ Utrecht = Utrecht Groningen = Groningue Breda = Bréda Nijmegen = Nimègue -Den Haag = La Haye +The Hague = La Haye Haarlem = Harlem Arnhem = Arnhem Zutphen = Zutphen diff --git a/android/assets/jsons/translations/Galician.properties b/android/assets/jsons/translations/Galician.properties index 45476fc868379..bf474943dece7 100644 --- a/android/assets/jsons/translations/Galician.properties +++ b/android/assets/jsons/translations/Galician.properties @@ -6163,7 +6163,7 @@ Utrecht = Utrecht Groningen = Groninga Breda = Breda Nijmegen = Nimega -Den Haag = A Haia +The Hague = A Haia Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen diff --git a/android/assets/jsons/translations/German.properties b/android/assets/jsons/translations/German.properties index 556f4acd7a608..845f83a8f4705 100644 --- a/android/assets/jsons/translations/German.properties +++ b/android/assets/jsons/translations/German.properties @@ -6149,7 +6149,7 @@ Utrecht = Utrecht Groningen = Groningen Breda = Breda Nijmegen = Nijmegen -Den Haag = Den Haag +The Hague = Den Haag Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen diff --git a/android/assets/jsons/translations/Greek.properties b/android/assets/jsons/translations/Greek.properties index c58819e7e3232..edb3bd53458d0 100644 --- a/android/assets/jsons/translations/Greek.properties +++ b/android/assets/jsons/translations/Greek.properties @@ -10345,7 +10345,7 @@ Breda = # Requires translation! Nijmegen = # Requires translation! -Den Haag = +The Hague = # Requires translation! Haarlem = # Requires translation! diff --git a/android/assets/jsons/translations/Hungarian.properties b/android/assets/jsons/translations/Hungarian.properties index 87634b3bd2bb1..70c07484fb954 100644 --- a/android/assets/jsons/translations/Hungarian.properties +++ b/android/assets/jsons/translations/Hungarian.properties @@ -6859,7 +6859,7 @@ Breda = # Requires translation! Nijmegen = # Requires translation! -Den Haag = +The Hague = # Requires translation! Haarlem = # Requires translation! diff --git a/android/assets/jsons/translations/Indonesian.properties b/android/assets/jsons/translations/Indonesian.properties index 1d05983a2acbb..9e5750ae0144f 100644 --- a/android/assets/jsons/translations/Indonesian.properties +++ b/android/assets/jsons/translations/Indonesian.properties @@ -6149,7 +6149,7 @@ Utrecht = Utrecht Groningen = Groningen Breda = Breda Nijmegen = Nijmegen -Den Haag = Den Haag +The Hague = Den Haag Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen diff --git a/android/assets/jsons/translations/Italian.properties b/android/assets/jsons/translations/Italian.properties index 43bdb9b5930c0..005cbd4c41e2f 100644 --- a/android/assets/jsons/translations/Italian.properties +++ b/android/assets/jsons/translations/Italian.properties @@ -6156,7 +6156,7 @@ Utrecht = Utrecht Groningen = Groningen Breda = Breda Nijmegen = Nijmegen -Den Haag = Den Haag +The Hague = Den Haag Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen diff --git a/android/assets/jsons/translations/Japanese.properties b/android/assets/jsons/translations/Japanese.properties index 5f3acc5d2a7d7..caf2a1553e3df 100644 --- a/android/assets/jsons/translations/Japanese.properties +++ b/android/assets/jsons/translations/Japanese.properties @@ -6859,7 +6859,7 @@ Utrecht = ユトレヒト Groningen = フローニンゲン Breda = ブレダ Nijmegen = ネイメーヘン -Den Haag = デンハーグ +The Hague = デンハーグ Haarlem = ハールレム Arnhem = アルンヘム Zutphen = ズトフェン diff --git a/android/assets/jsons/translations/Korean.properties b/android/assets/jsons/translations/Korean.properties index 001ad853bdc6a..99d04cd4764f0 100644 --- a/android/assets/jsons/translations/Korean.properties +++ b/android/assets/jsons/translations/Korean.properties @@ -6420,7 +6420,7 @@ Utrecht = 위트레흐트 Groningen = 흐로닝언 Breda = 브레다 Nijmegen = 네이메헨 -Den Haag = 헤이그 +The Hague = 헤이그 Haarlem = 하를럼 Arnhem = 아른험 Zutphen = 주트펜 diff --git a/android/assets/jsons/translations/Latin.properties b/android/assets/jsons/translations/Latin.properties index d40e4c21d5800..2d406b8c0f80a 100644 --- a/android/assets/jsons/translations/Latin.properties +++ b/android/assets/jsons/translations/Latin.properties @@ -577,8 +577,7 @@ Marathon = Marathon Starting Era = Aetas initialis It looks like we can't make a map with the parameters you requested! = Videtur quod tabulam facere cum parametris, quæ velis, non possimus! - # Requires translation! -Maybe you put too many players into too small a map? = +Maybe you put too many players into too small a map? = Fortasse imposuisti lusores nimis multos in tabulam nimis parvam? No human players selected! = Nullus homo lusor electus est! Invalid Player ID! = Identitas lusoris est irrita! No victory conditions were selected! = Nulla regula victoriae electa est! @@ -646,12 +645,9 @@ Tile Matching Criteria = Complete match = # Requires translation! Except improvements = - # Requires translation! -Base and terrain features = - # Requires translation! -Base terrain only = - # Requires translation! -Land or water only = +Base and terrain features = Fundamentalis et adjuncta humi +Base terrain only = Sola forma humi fundamentalis +Land or water only = Sola terra vel aqua # Requires translation! Import a Wesnoth map = @@ -666,22 +662,17 @@ Map saved successfully! = Tabulam servare successit! # Requires translation! Current map RNG seed: [amount] = Map copy and paste = Tabulam duplicare et glutinare - # Requires translation! -Position: [param] = +Position: [param] = Positus: [param] Starting location(s): [param] = Locus initialis / loci initiales: [param] Continent: [param] ([amount] tiles) = Continens: [param] ([amount] tegulæ) Resource abundance = Copia mercium Change map to fit selected ruleset? = Muto·ne tabulam ut adaptetur regulis compactis electis? Area: [amount] tiles, [amount2]% water, [amount3]% impassable, [amount4] continents/islands = Zona: [amount] tegulæ, [amount2] centesimæ aquæ, [amount3] centesimæ inviæ, [amount4] continentes/insulæ - # Requires translation! -Do you want to leave without saving the recent changes? = +Do you want to leave without saving the recent changes? = Visne exire etsi non servavimus mutatûs recentes? Leave = Exeo - # Requires translation! -Do you want to load another map without saving the recent changes? = - # Requires translation! -River generation failed! = - # Requires translation! -Please don't use step 'Landmass' with map type 'Empty', create a new empty map instead. = +Do you want to load another map without saving the recent changes? = Visne inferre aliam tabulam etsi non servavimus mutatûs recentes? +River generation failed! = Non potui generare fluvios! +Please don't use step 'Landmass' with map type 'Empty', create a new empty map instead. = Ne utaris gressum 'terrae' cum genere tabulae 'nihili', sed crees tabulam inanem novam. This map has errors: = Hæc tabula est cum erroribus: # Requires translation! The incompatible elements have been removed. = @@ -697,7 +688,7 @@ World wrap is incompatible with an overlay and was deactivated. = # Requires translation! An overlay image is incompatible with world wrap and was deactivated. = Choose a Wesnoth map file = Eligas documentum tabulæ de Wesnoth -That map is invalid! = Illa tabula non est valida! +That map is invalid! = Ista tabula non est valida! # Requires translation! ("[code]" does not conform to TerrainCodesWML) = # Requires translation! @@ -834,8 +825,7 @@ Skip turn of current player = # Requires translation! Are you sure you want to skip the turn of the current player? = - # Requires translation! -Last refresh: [duration] ago = +Last refresh: [duration] ago = Renovatio postrema: [duration](is) ante # Requires translation! Current Turn: [civName] since [duration] ago = Seconds = Secundæ @@ -848,31 +838,20 @@ Days = Dies [amount] Days = [amount] dies # Requires translation! Server limit reached! Please wait for [time] seconds = - # Requires translation! -File could not be found on the multiplayer server = +File could not be found on the multiplayer server = Documentum non potuit in machina serviente lusorum multorum inveniri # Requires translation! Unhandled problem, [errorMessage] = - # Requires translation! -Please enter your server password = - # Requires translation! -Set password = - # Requires translation! -Password must be at least 6 characters long = - # Requires translation! -Failed to set password! = - # Requires translation! -Password set successfully for server [serverURL] = - # Requires translation! -Password = - # Requires translation! -Your userId is password secured = - # Requires translation! -Set a password to secure your userId = +Please enter your server password = Inseras verbum occultum tuum machinae servientis +Set password = Pone verbum occulendum +Password must be at least 6 characters long = Verbum occulendum necesse sit non paucioribus quam 6 litteris longum +Failed to set password! = Non potui ponere verbum occulendum! +Password set successfully for server [serverURL] = Verbum occulendum ponere successit pro machina serviente de [serverURL] +Password = Verbum occultum +Your userId is password secured = Identitas usoris tua est per verbum occultum facta secura +Set a password to secure your userId = Ponas verbum occulendum ut identitas usoris tua fiat secura Authenticate = Auctorizo - # Requires translation! -This server does not support authentication = - # Requires translation! -Authentication failed = +This server does not support authentication = Haec machina serviens non potest juvare auctorizare +Authentication failed = Non potuimus auctorizare # Save game menu @@ -902,8 +881,7 @@ Delete save = Dele servatum [saveFileName] deleted successfully. = [saveFileName](m/um) delere successit. # Requires translation! Insufficient permissions to delete [saveFileName]. = - # Requires translation! -Failed to delete [saveFileName]. = +Failed to delete [saveFileName]. = Non potui delere [saveFileName](m/um). Saved at = Servatus in Saving... = Noto... Overwrite existing file? = Superscribo·ne documentum ut indicia ex eo emoveantur? @@ -1425,7 +1403,7 @@ We have looted [amount] from a [improvement] which has been sent to [cityName] = An enemy [unitName] has pillaged our [improvement] = Centuria hostilis, quæ erat [unitName], diripuit meliorationem nostram, quæ erat [improvement] Create [improvement] = Crea [improvement] Trigger unique = Unicam vegere -Show more = Alterae operae +Show more = Plures Yes = Ita No = Minime Acquire = Acquirere @@ -1488,7 +1466,7 @@ Buy for [amount] gold = [amount] solidis emo Buy = Emo Currently you have [amount] [stat]. = Tu habes [amount] [stat](m/s/um/os) nunc. Would you like to purchase [constructionName] for [buildingGoldCost] [stat]? = Visne [buildingGoldCost] [stat](o/is) emere [constructionName](m/s/um/os)? -You are buying a religious unit in a city that doesn't follow the religion you founded ([yourReligion]). This means that the unit is tied to that foreign religion ([majorityReligion]) and will be less useful. = Emis centuriam religiosam in urbe quae non sequitur religionem quam fundavisti ([yourReligion]). Hoc indicat istam centuriam esse devinctam de illa religione aliena ([majorityReligion]) et minus utilem esse. +You are buying a religious unit in a city that doesn't follow the religion you founded ([yourReligion]). This means that the unit is tied to that foreign religion ([majorityReligion]) and will be less useful. = Emis centuriam religiosam in urbe quae non sequitur religionem quam fundavisti ([yourReligion]). Hoc indicat istam centuriam esse devinctam de illa religione aliena ([majorityReligion]) ac minus utilem. Are you really sure you want to purchase this unit? = Vero visne hanc centuriam emere? Purchase = Emo No space available to place [unit] near [city] = Nullum spatium est parabile ad ponendum [unit](m/um) prope [city](m/um) @@ -1765,29 +1743,24 @@ Demographic = Demographicus Rank = Ordo Value = Aestimatio Best = Optimus - # Requires translation! -Average = +Average = Mediocris Worst = Pessimus # The \n here means: put a newline (enter) here. If this is omitted, the sidebox in the diplomacy overview will become _really_ wide. # Feel free to replace it with a space and put it between other words in your translation Turns until the next\ndiplomacy victory vote: [amount] = Gressûs ad posterius suffragium victoriae diplomaticae: [amount] -Choose a civ to vote for = Eligas civilizationem, quam suffragabis - # Requires translation! -Choose who should become the world leader and win a Diplomatic Victory! = +Choose a civ to vote for = Eligas civilizationem quam suffragas +Choose who should become the world leader and win a Diplomatic Victory! = Eligas eum qui debetur fieri dux mundi et ferre victoriam diplomaticam! Vote for [civilizationName] = Suffrago [civilizationName](m/s/um/os) Vote for World Leader = Suffragare ducem mundi - # Requires translation! -Abstain = +Abstain = Abstineo Continue = Continuem - # Requires translation! -Abstained = +Abstained = Abstinuit Voted for = Suffragavit pro [number] votes = [number] suffragia [number] vote = [number] suffragium No valid votes were cast. = Nullum suffragium validum est Minimum votes for electing a world leader: [number] = Paucissima suffragia ad electum ducis mundi: [number] - # Requires translation! -Tied in first position: [civNames] = +Tied in first position: [civNames] = In aequo ac primo steterunt: [civNames] No world leader was elected. = Nullus dux mundi electus est. You have been elected world leader! = Electus es sic dux mundi factus es! [leaderName] of [civ] has been elected world leader! = [leaderName] de [civ](o/is) est electus/electa dux mundi! @@ -2129,10 +2102,8 @@ Server address = Check connection to server = # Requires translation! Awaiting response... = - # Requires translation! -Success! = - # Requires translation! -Failed! = +Success! = Successit! +Failed! = Non potuimus facere! # Requires translation! Sound notification for when it's your turn in your currently open game: = # Requires translation! @@ -2142,8 +2113,7 @@ Notification [number] = Nuntium [number] Chimes = # Requires translation! Choir = - # Requires translation! -[unit] Attack Sound = +[unit] Attack Sound = Vox oppugnationis de [unit] # Mods @@ -4339,12 +4309,10 @@ You have won, congratulations. My palace is now in your possession, and I beg th Welcome foreigner, I am Harun Al-Rashid, Caliph of the Arabs. Come and tell me about your empire. = # Requires translation! Come forth, let's do business. = - # Requires translation! -Peace be upon you. = +Peace be upon you. = Pax tibi. Trade Caravans = Caravannae Commerciales -Blessings of the Great God be upon you, O great caliph Harun al-Rashid, leader of the mighty Arabian people! The Muslim Empire, the Caliphate, born from chaos after the death of the prophet Muhammad in 632 AD, intended to apply the rule of God to all Earth. And by the will of God, the caliphate reached its full power, ruling Spain, North Africa, the Middle East, Anatolia, the Balkans and Persia, to even surpass the Great Roman Empire. The arts and sciences were a holy gift of Arabia during the Middle Ages, as the infidel lands of Europe delved deep into ignorance and chaos. Lasting for six hundred years, the Caliphate finally fell before the Mongols, the plague of the civilized world. = Beatum Dei Magni fiat tibi, O magne calipha Aaron Rascide, ductor potentis populi Arabici! Imperium Musulmanum, Caliphatus, erat ortus ex congerie post mortem Mahometi in DCXXXII a.C.n., intendebat applicare rectionem Dei ad omnem terram. Et per voluntatem Dei, caliphatus attingit omnem potentiam suam, regebat Hispaniam, Africam Septentrionalem, Orientem Medium, Anatoliam, Balcaniam et Persiam, et ad antecedendum Imperium Romanum magnum. Ars et scientia erant praemia sancta Arabiae intra medium aevum, cum terra infidelis Europae defodiebat in ignorantiam et congeriem. In sexcentis annis permanserat, Caliphatus tandem ruit ante Mongalos, plagam mundi eruditi. - # Requires translation! -Great Caliph Harun al Rashid, all Arabian people long for greatness! Arabia must be once again the land of arts and knowledge, which under the radiant law of God, will fear no enemy! Will your new empire shine through the ages of history? = +Blessings of the Great God be upon you, O great caliph Harun al-Rashid, leader of the mighty Arabian people! The Muslim Empire, the Caliphate, born from chaos after the death of the prophet Muhammad in 632 AD, intended to apply the rule of God to all Earth. And by the will of God, the caliphate reached its full power, ruling Spain, North Africa, the Middle East, Anatolia, the Balkans and Persia, to even surpass the Great Roman Empire. The arts and sciences were a holy gift of Arabia during the Middle Ages, as the infidel lands of Europe delved deep into ignorance and chaos. Lasting for six hundred years, the Caliphate finally fell before the Mongols, the plague of the civilized world. = Beatum Dei Magni fiat tibi, O magne calipha Aaron Rascide, ductor potentis populi Arabici! Imperium Musulmanum, Caliphatus, erat ortus ex congerie post mortem Mahometi in DCXXXII AD, intendebat applicare rectionem Dei ad omnem terram. Et per voluntatem Dei, caliphatus attingit omnem potentiam suam, regebat Hispaniam, Africam Septentrionalem, Orientem Medium, Anatoliam, Balcaniam et Persiam, et ad antecedendum Imperium Romanum magnum. Ars et scientia erant praemia sancta Arabiae intra medium aevum, cum terra infidelis Europae defodiebat in ignorantiam et congeriem. In sescentis annis permanserat, Caliphatus tandem ruit ante Mongalos, plagam mundi eruditi. +Great Caliph Harun al Rashid, all Arabian people long for greatness! Arabia must be once again the land of arts and knowledge, which under the radiant law of God, will fear no enemy! Will your new empire shine through the ages of history? = Magne Calipha Aaron Rascide, populus Arabicus omnis longinquitate expetit magnitatem. Arabia necesse denuo fiat terra artis et scientiae, quae, sub jure radiante Dei, metuet de nullo hoste! Per aetates historiae lucebitne tuum novum imperium? # Requires translation! Mecca = # Requires translation! @@ -4531,8 +4499,7 @@ Oda Nobunaga = I hereby inform you of our intention to wipe out your civilization from this world. = # Requires translation! Pitiful fool! Now we shall destroy you! = - # Requires translation! -You were much wiser than I thought. = +You were much wiser than I thought. = Magis sapientior eras quam censebam. # Requires translation! We hope for a fair and just relationship with you, who are renowned for military bravery. = # Requires translation! @@ -4631,8 +4598,7 @@ Gandhi = I have just received a report that large numbers of my troops have crossed your borders. = # Requires translation! My attempts to avoid violence have failed. An eye for an eye only makes the world blind. = - # Requires translation! -You can chain me, you can torture me, you can even destroy this body, but you will never imprison my mind. = +You can chain me, you can torture me, you can even destroy this body, but you will never imprison my mind. = Potes nectere me, potes cruciare me, tu etiam potes rumpere hoc corpus, sed meum animum incarcerare numquam potes. # Requires translation! Hello, I am Mohandas Gandhi. My people call me Bapu, but please, call me friend. = # Requires translation! @@ -5079,8 +5045,7 @@ Peace be on you! I am Darius, the great and outstanding king of kings of great P In my endless magnanimity, I am making you this offer. You agree, of course? = # Requires translation! Good day to you! = - # Requires translation! -Ahh... you... = +Ahh... you... = A... tu... Achaemenid Legacy = Hereditas Achaemenidarum # Requires translation! Great King Darius of Persia, the heaven casts its light upon you! Persian people are strong and wise, as their leader. In old ages, the great Persian king Cyrus fought back the mighty Median empire and finally destroyed the Medes in 550 BC. Cunning diplomacy and military achievements helped then to conquer the wealthy Lydia and the powerful Babylon, Cyrus' son conquering the eternal Egypt some years later. At the height of its power, the Persian Empire reached the shores of Macedonia, at the very door of the upstart Greek city-states. Persia would have prospered for centuries if Alexander of Macedon hadn't brutally destroyed the great empire in one violent strike. = @@ -5228,8 +5193,7 @@ The hard-shelled crab yields, and the lion lies down to sleep. Kanaloa comes for Aloha! Greetings and blessings upon you, friend. I am Kamehameha, Great King of this strand of islands. = # Requires translation! Come, let our people feast together! = - # Requires translation! -Welcome, friend! = +Welcome, friend! = Salve, amice! Wayfinding = Inventio Viae # Requires translation! Aloha to Kamehameha the Great, who the heavens allowed to unite your people! O great King, under your reign, the Big Island of Hawai'i became one in 1791 AD, and many other islands joined your vision of union in 1810. As the first King of Hawai'i, law and taxation systems were stabilized, and you promoted the Kanawai Mamalahoe, an edict to protect civilian people in times of war. Unification and sovereignty of all the islands continued thanks to your fair laws and deeds, even after you joined your ancestors in paradise in 1819. = @@ -5329,8 +5293,7 @@ Although I lost, my honor shall endure. I wish you good luck. = I, Pho Kun Ramkhamhaeng, King of Siam, consider it a great honor that you have walked to visit my country of Siam. = # Requires translation! Greetings. I believe this is a fair proposal for both parties. What do you think? = - # Requires translation! -Welcome. = +Welcome. = Salve. Father Governs Children = Pater Praesidet Liberos # Requires translation! O Great King Ramkhamhaeng, the Siamese people obey you with respect and fear! The beautiful and mysterious land of Siam is an ancient country in the heart of Southeast Asia, which was besieged by many foes, plagued by bloody war and great poverty, but eventually the smart and loyal Siamese people have endured and triumphed. Siam was a part of the Khmer Empire until the 13th century AD, before its brave people took arms and led a revolution to form the small Sukhothai kingdom. After many battles and diplomacy prowess, this tiny kingdom became a mighty empire, which would dominate South East Asia for more than a century. = @@ -5404,8 +5367,7 @@ God will probably forgive you... but I shall not. Prepare for war. = Deus probab Repugnant spawn of the devil! You will pay! = # Requires translation! If my defeat is, without any doubt, the will of God, then I will accept it. = - # Requires translation! -God blesses those who deserve it. I am Isabel of Spain. = +God blesses those who deserve it. I am Isabel of Spain. = Deus beat eos qui mereant. Isabella de Hispania sum. # Requires translation! I hope this deal will receive your blessing. = Seven Cities of Gold = Septem Urbes Aureae @@ -5655,12 +5617,9 @@ Mongolia = # Requires translation! Montezuma I = - # Requires translation! -Xi-miqa-can! Xi-miqa-can! Xi-miqa-can! (Die, die, die!) = - # Requires translation! -Excellent! Let the blood flow in raging torrents! = - # Requires translation! -Monster! Who are you to destroy my greatness? = +Xi-miqa-can! Xi-miqa-can! Xi-miqa-can! (Die, die, die!) = Xi-miqa-can! Xi-miqa-can! Xi-miqa-can! (Morere, morere, morere!) +Excellent! Let the blood flow in raging torrents! = Perbene! Cruor torrentibus saevis fluat! +Monster! Who are you to destroy my greatness? = Monstrum! Quis es, et rupisti magnitatem meam? # Requires translation! What do I see before me? Another beating heart for my sacrificial fire. = # Requires translation! @@ -5748,18 +5707,14 @@ Aztecs = Azteci Pachacuti = # Requires translation! Resistance is futile! You cannot hope to stand against the mighty Incan empire. If you will not surrender immediately, then prepare for war! = - # Requires translation! -Declare war on me?!? You can't, because I declare war on you first! = - # Requires translation! -How did you darken the sun? I ruled with diligence and mercy—see that you do so as well. = +Declare war on me?!? You can't, because I declare war on you first! = Bellum contra me indicere?!? Tu non potes, quia ego primitus indico bellum contra te! +How did you darken the sun? I ruled with diligence and mercy—see that you do so as well. = Ut obscuravisti solem? Cum diligentia et clementia regebam—videam te ita facere. # Requires translation! How are you? You stand before Pachacuti Inca Yupanqui. = # Requires translation! The Incan people offer this fair trade. = - # Requires translation! -How are you doing? = - # Requires translation! -What do you want now? = +How are you doing? = Ut facis? +What do you want now? = Quod vis jam? Great Andean Road = Via Magna Andium # Requires translation! King Pachacuti Sapa Inca, maker of the world and ruler of Tawantinsuyu and the Inca people, your loyal subjects greet you! In the beginning, the small state of Cusco already showed the Incans were promised for greatness. They won many wars against powerful enemies, relentlessly crushing any army that dared oppose them, and forged a mighty empire stretching from Ecuador to Chile, the greatest ever seen in pre-Columbian America. Not just undaunted soldiers, Inca people were accomplished builders and artists, their magnificient and unequalled culture still fascinating the world today. = @@ -6361,37 +6316,32 @@ Mining = Fodinae Sailing = Velificatio 'So teach us to number our days, so that we may apply our hearts unto wisdom.' - Bible Psalms 90:12 = 'Dexteram tuam sic notam fac, et eruditos corde in sapientia' - Psalmi 89:12 Calendar = Calendarium - # Requires translation! -'He who destroys a good book kills reason itself.' - John Milton = +'He who destroys a good book kills reason itself.' - John Milton = 'Is qui perdit librum bonum interficit sapientiam.' - Ioannes Miltonus Writing = Scriptura 'Even brute beasts and wandering birds do not fall into the same traps or nets twice.' - Saint Jerome = 'Bruta quoque animalia et vagae aves, in easdem pedicas retiaque non incidunt.' - Hieronymus Trapping = Devinctio - # Requires translation! -'Wisdom and virtue are like the two wheels of a cart.' - Japanese proverb = +'Wisdom and virtue are like the two wheels of a cart.' - Japanese proverb = 'Sapientia et virtus sunt similes duabus rotis currûs.' - Proverbium Iaponicum The Wheel = Rota 'How happy are those whose walls already rise!' - Virgil = 'O fortunati, quorum iam moenia surgunt!' - Publius Vergilius Maro Masonry = Structuræ # Requires translation! 'Here Hector entered, with a spear eleven cubits long in his hand; the bronze point gleamed in front of him, and was fastened to the shaft of the spear by a ring of gold.' - Homer = -Bronze Working = Opere Aeris +Bronze Working = Opus Aeris - # Requires translation! -'He made an instrument to know if the moon shine at full or no.' - Samuel Butler = +'He made an instrument to know if the moon shine at full or no.' - Samuel Butler = 'Instrumentum fecerat, ut sciret num lunam esse plenam.' - Samuel Butler Optics = Lenses # Requires translation! 'There is only one good, knowledge, and one evil, ignorance.' - Socrates = Philosophy = Philosophia 'A Horse! A Horse! My kingdom for a horse!' - Shakespeare (Richard III) = 'Equus! Equus! Regnum meum pro uno equo!' - Shakespearius (Richard III) Horseback Riding = Equitatio - # Requires translation! -'Mathematics is the gate and key to the sciences.' - Roger Bacon = +'Mathematics is the gate and key to the sciences.' - Roger Bacon = 'Mathematica est porta atque clavis ad scientiam.' - Rogerius Bacon Mathematics = Mathematica # Requires translation! 'Three things are to be looked to in a building: that it stands on the right spot; that it be securely founded; that it be successfully executed.' - Johann Wolfgang von Goethe = Construction = Constructio - # Requires translation! -'Do not wait to strike til the iron is hot, but make it hot by striking.' - William Butler Yeats = -Iron Working = Opere Ferri +'Do not wait to strike til the iron is hot, but make it hot by striking.' - William Butler Yeats = 'Ne maneas donec ferrum calidum est, tum verberes, sed per verberandum facias id calidum.' - William Butler Yeats +Iron Working = Opus Ferri 'Three things are necessary for the salvation of man: to know what he ought to believe; to know what he ought to desire; and to know what he ought to do' - St. Thomas Aquinas = 'Tria sunt homini necessaria ad salutem: scilicit scientia credendorum, scientia desiderandorum, et scientia operandorum.' - Thomas Aquinas Theology = Theologia @@ -6403,7 +6353,7 @@ Civil Service = Officium Civilis Currency = Nummularia # Requires translation! 'Instrumental or mechanical science is the noblest and, above all others, the most useful.' - Leonardo da Vinci = -Engineering = Opere Mechanici +Engineering = Ingeniaria # Requires translation! 'When pieces of bronze or gold or iron break, the metal-smith welds them together again in the fire, and the bond is established.' - Sri Guru Granth Sahib = Metal Casting = Conflatorium @@ -6803,7 +6753,7 @@ Volley = Grando Telorum Extended Range = Ambitus Extentus -Indirect Fire = Iaculum Ambagiosum +Indirect Fire = Circumjectio Shock I = Impulsus I @@ -7374,8 +7324,7 @@ Grand Temple = Templum Magnum # Requires translation! Alhambra = - # Requires translation! -'Justice is an unassailable fortress, built on the brow of a mountain which cannot be overthrown by the violence of torrents, nor demolished by the force of armies.' - Joseph Addison = +'Justice is an unassailable fortress, built on the brow of a mountain which cannot be overthrown by the violence of torrents, nor demolished by the force of armies.' - Joseph Addison = 'Iustitia est castellum, non potens assiliri, aedificatum in apice montis qui non potest violentiâ torrentis deici nec potest potentiâ copiarum deleri.' - Joseph Addison # Requires translation! @@ -8096,7 +8045,7 @@ Breda = # Requires translation! Nijmegen = # Requires translation! -Den Haag = +The Hague = # Requires translation! Haarlem = # Requires translation! @@ -9431,7 +9380,7 @@ Additionally, the city where you used your great prophet will become the holy ci Once you have founded a religion, great prophets will keep being born every so often, though the amount of Faith☮ you have to save up will be higher. = Postquam fundas religionem, prophetae magni nonnumquam oriantur, autem fides☮, quantam necesse retineat, sit major. One of these great prophets can then be used to enhance your religion. = Unus de his prophetis magnis tum possit religionem tuam amplificare. This will allow you to choose another follower belief, as well as an enhancer belief, that only applies to you. = Hoc permittat tibi eligere aliam opinionem assectatorum, et opinionem amplificatoris, quae modo applicetur tibi. -Do take care founding a religion soon, only about half the players in the game are able to found a religion! = Cures ut celeriter fundes religionem. Solummodo ferme dimidii lusores in ludo possint religionem fundare! +Do take care founding a religion soon, only about half the players in the game are able to found a religion! = Cures ut celeriter fundes religionem. Tantum ferme dimidii lusores in ludo possint religionem fundare! Beliefs = Opiniones There are four types of beliefs: Pantheon, Founder, Follower and Enhancer beliefs. = Quattuor sunt genera opinionum: opiniones Panthei, institutorum, assectatorum et amplificatorum. diff --git a/android/assets/jsons/translations/Lithuanian.properties b/android/assets/jsons/translations/Lithuanian.properties index 05449492c9ebb..f44c6d358a1de 100644 --- a/android/assets/jsons/translations/Lithuanian.properties +++ b/android/assets/jsons/translations/Lithuanian.properties @@ -6917,7 +6917,7 @@ Utrecht = Utreht Groningen = Groningen Breda = Breda Nijmegen = Nejmegen -Den Haag = Gaaga +The Hague = Gaaga Haarlem = Harlem Arnhem = Arnem Zutphen = Zjutfen diff --git a/android/assets/jsons/translations/Malay.properties b/android/assets/jsons/translations/Malay.properties index bf338a735f4ac..511117b6e8df8 100644 --- a/android/assets/jsons/translations/Malay.properties +++ b/android/assets/jsons/translations/Malay.properties @@ -9724,7 +9724,7 @@ Breda = # Requires translation! Nijmegen = # Requires translation! -Den Haag = +The Hague = # Requires translation! Haarlem = # Requires translation! diff --git a/android/assets/jsons/translations/Norwegian.properties b/android/assets/jsons/translations/Norwegian.properties index 549d61016589e..bdad1a24afde8 100644 --- a/android/assets/jsons/translations/Norwegian.properties +++ b/android/assets/jsons/translations/Norwegian.properties @@ -8022,7 +8022,7 @@ Utrecht = Utrecht Groningen = Groningen Breda = Breda Nijmegen = Nijmegen -Den Haag = Den Haag +The Hague = Den Haag Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen diff --git a/android/assets/jsons/translations/Persian_(Pinglish-DIN).properties b/android/assets/jsons/translations/Persian_(Pinglish-DIN).properties index 90051fd6ca077..31a473f613e94 100644 --- a/android/assets/jsons/translations/Persian_(Pinglish-DIN).properties +++ b/android/assets/jsons/translations/Persian_(Pinglish-DIN).properties @@ -10443,7 +10443,7 @@ Breda = # Requires translation! Nijmegen = # Requires translation! -Den Haag = +The Hague = # Requires translation! Haarlem = # Requires translation! diff --git a/android/assets/jsons/translations/Persian_(Pinglish-UN).properties b/android/assets/jsons/translations/Persian_(Pinglish-UN).properties index 633f53db47573..7cdbfc42bb9d9 100644 --- a/android/assets/jsons/translations/Persian_(Pinglish-UN).properties +++ b/android/assets/jsons/translations/Persian_(Pinglish-UN).properties @@ -9587,7 +9587,7 @@ Breda = # Requires translation! Nijmegen = # Requires translation! -Den Haag = +The Hague = # Requires translation! Haarlem = # Requires translation! diff --git a/android/assets/jsons/translations/Polish.properties b/android/assets/jsons/translations/Polish.properties index 62fa4ea518fda..5b5a0a0e31a7f 100644 --- a/android/assets/jsons/translations/Polish.properties +++ b/android/assets/jsons/translations/Polish.properties @@ -6157,7 +6157,7 @@ Utrecht = Utrecht Groningen = Groningen Breda = Breda Nijmegen = Nijmegen -Den Haag = Den Haag +The Hague = Den Haag Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen diff --git a/android/assets/jsons/translations/Portuguese.properties b/android/assets/jsons/translations/Portuguese.properties index f9c3a752a38dc..070aab771b13e 100644 --- a/android/assets/jsons/translations/Portuguese.properties +++ b/android/assets/jsons/translations/Portuguese.properties @@ -7124,7 +7124,7 @@ Breda = # Requires translation! Nijmegen = # Requires translation! -Den Haag = +The Hague = # Requires translation! Haarlem = # Requires translation! diff --git a/android/assets/jsons/translations/Romanian.properties b/android/assets/jsons/translations/Romanian.properties index 7fe22612719f2..7d23517b83eea 100644 --- a/android/assets/jsons/translations/Romanian.properties +++ b/android/assets/jsons/translations/Romanian.properties @@ -7223,7 +7223,7 @@ Utrecht = Utrecht Groningen = Groningen Breda = Breda Nijmegen = Nijmegen -Den Haag = Den Haag +The Hague = Den Haag Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen diff --git a/android/assets/jsons/translations/Russian.properties b/android/assets/jsons/translations/Russian.properties index 336c14cb5f099..885ad4b3aa51e 100644 --- a/android/assets/jsons/translations/Russian.properties +++ b/android/assets/jsons/translations/Russian.properties @@ -6149,7 +6149,7 @@ Utrecht = Утрехт Groningen = Гронинген Breda = Бреда Nijmegen = Неймеген -Den Haag = Гаага +The Hague = Гаага Haarlem = Харлем Arnhem = Арнем Zutphen = Зютфен diff --git a/android/assets/jsons/translations/Rusyn.properties b/android/assets/jsons/translations/Rusyn.properties index daa5d498b41c6..c80c79517312b 100644 --- a/android/assets/jsons/translations/Rusyn.properties +++ b/android/assets/jsons/translations/Rusyn.properties @@ -8049,7 +8049,7 @@ Utrecht = Утрехт Groningen = Гронінген Breda = Бреда Nijmegen = Неймеген -Den Haag = Гаага +The Hague = Гаага Haarlem = Гарлем Arnhem = Арнем Zutphen = Зютфен diff --git a/android/assets/jsons/translations/Simplified_Chinese.properties b/android/assets/jsons/translations/Simplified_Chinese.properties index 71b47b9ab8b97..f5c3892d22768 100644 --- a/android/assets/jsons/translations/Simplified_Chinese.properties +++ b/android/assets/jsons/translations/Simplified_Chinese.properties @@ -6175,7 +6175,7 @@ Utrecht = 乌得勒支 Groningen = 格罗宁根 Breda = 布雷达 Nijmegen = 奈梅亨 -Den Haag = 海牙 +The Hague = 海牙 Haarlem = 哈勒姆 Arnhem = 阿纳姆 Zutphen = 聚特芬 diff --git a/android/assets/jsons/translations/Spanish.properties b/android/assets/jsons/translations/Spanish.properties index 464e0d1608083..66057fba549bc 100644 --- a/android/assets/jsons/translations/Spanish.properties +++ b/android/assets/jsons/translations/Spanish.properties @@ -6152,7 +6152,7 @@ Utrecht = Utrecht Groningen = Groninga Breda = Breda Nijmegen = Nimega -Den Haag = La Haya +The Hague = La Haya Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen diff --git a/android/assets/jsons/translations/Swedish.properties b/android/assets/jsons/translations/Swedish.properties index cdb6c08b4dfe7..80ecbc6f6c5d3 100644 --- a/android/assets/jsons/translations/Swedish.properties +++ b/android/assets/jsons/translations/Swedish.properties @@ -7196,7 +7196,7 @@ Utrecht = Utrecht Groningen = Groningen Breda = Breda Nijmegen = Nijmegen -Den Haag = Haag +The Hague = Haag Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen diff --git a/android/assets/jsons/translations/Thai.properties b/android/assets/jsons/translations/Thai.properties index b17b8c9acbb30..d5afec9ad613d 100644 --- a/android/assets/jsons/translations/Thai.properties +++ b/android/assets/jsons/translations/Thai.properties @@ -12,12 +12,12 @@ StartWithCapitalLetter = false # Diacritics Support: # See https://yairm210.github.io/Unciv/Other/Translating/#diacritics-support for details! # Most languages will not need these, feel free to ignore, or use "" to avoid the "requires translation" mark. Do NOT translate the "key" to the left of the equals sign! -diacritics_support = การสนับสนุนการออกเสียง -unicode_block_start_character = อักขระเริ่มต้นบล็อกยูนิโค้ด -unicode_block_end_character = อักขระบล็อกสิ้นสุดยูนิโค้ด -left_joining_diacritics = การเข้าร่วมทางด้านซ้าย -right_joining_diacritics = การเข้าร่วมการออกเสียงด้านขวา -left_and_right_joiners = ผู้เข้าร่วมซ้ายและขวา +diacritics_support = true +unicode_block_start_character = "" +unicode_block_end_character = ู้่ีิ็ั +left_joining_diacritics = ู้่ีิ็ั +right_joining_diacritics = "" +left_and_right_joiners = "" # Fastlane # These will be automatically copied to the fastlane descriptions used by F-Droid. Their keys are not as usual the english original, please read those directly as linked. @@ -10893,7 +10893,7 @@ Breda = # Requires translation! Nijmegen = # Requires translation! -Den Haag = +The Hague = # Requires translation! Haarlem = # Requires translation! diff --git a/android/assets/jsons/translations/Traditional_Chinese.properties b/android/assets/jsons/translations/Traditional_Chinese.properties index dc306c0fd08c5..022b563e2073c 100644 --- a/android/assets/jsons/translations/Traditional_Chinese.properties +++ b/android/assets/jsons/translations/Traditional_Chinese.properties @@ -6232,7 +6232,7 @@ Utrecht = 烏特勒支 Groningen = 格羅寧根 Breda = 布雷達 Nijmegen = 奈梅亨 -Den Haag = 海牙 +The Hague = 海牙 Haarlem = 哈倫 Arnhem = 阿納姆 Zutphen = 聚特芬 diff --git a/android/assets/jsons/translations/Turkish.properties b/android/assets/jsons/translations/Turkish.properties index e8fd63e35be5d..609ebbf13614c 100644 --- a/android/assets/jsons/translations/Turkish.properties +++ b/android/assets/jsons/translations/Turkish.properties @@ -6312,7 +6312,7 @@ Utrecht = Utrecht Groningen = Groningen Breda = Breda Nijmegen = Nijmegen -Den Haag = Den Haag +The Hague = Den Haag Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen diff --git a/android/assets/jsons/translations/Ukrainian.properties b/android/assets/jsons/translations/Ukrainian.properties index be0328554b84e..48f860246ba30 100644 --- a/android/assets/jsons/translations/Ukrainian.properties +++ b/android/assets/jsons/translations/Ukrainian.properties @@ -6152,7 +6152,7 @@ Utrecht = Утрехт Groningen = Гронінген Breda = Бреда Nijmegen = Неймеген -Den Haag = Гаага +The Hague = Гаага Haarlem = Гарлем Arnhem = Арнем Zutphen = Зютфен diff --git a/android/assets/jsons/translations/Vietnamese.properties b/android/assets/jsons/translations/Vietnamese.properties index cb7e5d2a8c285..fd18d79ba6661 100644 --- a/android/assets/jsons/translations/Vietnamese.properties +++ b/android/assets/jsons/translations/Vietnamese.properties @@ -6184,7 +6184,7 @@ Utrecht = Utrecht Groningen = Groningen Breda = Breda Nijmegen = Nijmegen -Den Haag = Den Haag +The Hague = Den Haag Haarlem = Haarlem Arnhem = Arnhem Zutphen = Zutphen diff --git a/android/assets/jsons/translations/Zulu.properties b/android/assets/jsons/translations/Zulu.properties index 5bdcc181563e7..5358754bdd6b1 100644 --- a/android/assets/jsons/translations/Zulu.properties +++ b/android/assets/jsons/translations/Zulu.properties @@ -10584,7 +10584,7 @@ Breda = # Requires translation! Nijmegen = # Requires translation! -Den Haag = +The Hague = # Requires translation! Haarlem = # Requires translation! diff --git a/android/assets/jsons/translations/completionPercentages.properties b/android/assets/jsons/translations/completionPercentages.properties index bbe01c3caf21b..2cc315b02f317 100644 --- a/android/assets/jsons/translations/completionPercentages.properties +++ b/android/assets/jsons/translations/completionPercentages.properties @@ -5,9 +5,9 @@ Bosnian = 3 Brazilian_Portuguese = 99 Bulgarian = 47 Catalan = 99 -Croatian = 92 +Croatian = 99 Czech = 79 -Dutch = 92 +Dutch = 96 English = 0 Filipino = 89 Finnish = 36 @@ -20,7 +20,7 @@ Indonesian = 100 Italian = 99 Japanese = 81 Korean = 92 -Latin = 56 +Latin = 57 Lithuanian = 83 Malay = 24 Norwegian = 59 diff --git a/buildSrc/src/main/kotlin/BuildConfig.kt b/buildSrc/src/main/kotlin/BuildConfig.kt index 40edbe782bc2d..67c69271c5517 100644 --- a/buildSrc/src/main/kotlin/BuildConfig.kt +++ b/buildSrc/src/main/kotlin/BuildConfig.kt @@ -4,8 +4,8 @@ package com.unciv.build object BuildConfig { const val kotlinVersion = "1.9.24" const val appName = "Unciv" - const val appCodeNumber = 1080 - const val appVersion = "4.14.13" + const val appCodeNumber = 1083 + const val appVersion = "4.14.15" const val gdxVersion = "1.12.1" const val ktorVersion = "2.3.12" diff --git a/changelog.md b/changelog.md index cd17a7a350707..273015f73829f 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,41 @@ +## 4.14.15 + +UI improvements: + +- Tile Info Table +- Changed Black to Charcoal +- Unit description table + +Fixed cities built on pillages roads colored red + +Fixed scroll position indicator + +Fixed Thai diacritic support + +Added "exit" button in world screen popup menu + +Fixed AI religion belief assessment + +Increase starting Luxury amount to match Civ 5 - By SeventhM + +UI fixes: dividers, checkbox-to-text spacing, multiplayer tab connection button - By Toxile (new contributor!) + +## 4.14.14 + +Automated air units respect "Cannot move" unique + +Resolved rare New Game Screen "application not responding" errors + +AI: +- Don't pick most expensive tech as free tech, if it's marked as "0 weight for AI decisions" +- Decreased base Fort value to not build it instead of useful improvements + +Remove images of expended units + +Display city state type name for battle bonuses + +"Unit built" notification selects the built unit + ## 4.14.13 SIGNIFICANT memory performance improvements for large maps diff --git a/core/src/com/unciv/UncivGame.kt b/core/src/com/unciv/UncivGame.kt index 92bf170a63994..9a4fd85430d88 100644 --- a/core/src/com/unciv/UncivGame.kt +++ b/core/src/com/unciv/UncivGame.kt @@ -306,7 +306,7 @@ open class UncivGame(val isConsoleMode: Boolean = false) : Game(), PlatformSpeci screen = screenStack.last(), question = "Do you want to exit the game?", confirmText = "Exit", - restoreDefault = { musicController.resume() }, + restoreDefault = { musicController.resumeFromShutdown() }, action = { Gdx.app.exit() } ).open(force = true) return null @@ -386,7 +386,7 @@ open class UncivGame(val isConsoleMode: Boolean = false) : Game(), PlatformSpeci override fun resume() { super.resume() if (!isInitialized) return // The stuff from Create() is still happening, so the main screen will load eventually - musicController.resume() + musicController.resumeFromShutdown() // This is also needed in resume to open links and notifications // correctly when the app was already running. The handling in onCreate @@ -486,7 +486,7 @@ open class UncivGame(val isConsoleMode: Boolean = false) : Game(), PlatformSpeci companion object { //region AUTOMATICALLY GENERATED VERSION DATA - DO NOT CHANGE THIS REGION, INCLUDING THIS COMMENT - val VERSION = Version("4.14.13", 1080) + val VERSION = Version("4.14.15", 1083) //endregion /** Global reference to the one Gdx.Game instance created by the platform launchers - do not use without checking [isCurrentInitialized] first. */ @@ -510,7 +510,7 @@ open class UncivGame(val isConsoleMode: Boolean = false) : Game(), PlatformSpeci } } -private class GameStartScreen : BaseScreen() { +class GameStartScreen : BaseScreen() { init { val logoImage = ImageGetter.getExternalImage("banner.png") logoImage.center(stage) diff --git a/core/src/com/unciv/logic/BackwardCompatibility.kt b/core/src/com/unciv/logic/BackwardCompatibility.kt index fc4ac55f86e22..a92d1644b7990 100644 --- a/core/src/com/unciv/logic/BackwardCompatibility.kt +++ b/core/src/com/unciv/logic/BackwardCompatibility.kt @@ -5,7 +5,6 @@ import com.unciv.logic.city.CityConstructions import com.unciv.logic.civilization.diplomacy.DiplomacyFlags import com.unciv.logic.civilization.diplomacy.DiplomacyManager import com.unciv.logic.civilization.managers.TechManager -import com.unciv.logic.map.tile.RoadStatus import com.unciv.models.ruleset.ModOptions import com.unciv.models.ruleset.PerpetualConstruction import com.unciv.models.ruleset.Ruleset @@ -61,8 +60,7 @@ object BackwardCompatibility { if (!ruleset.tileImprovements.containsKey(Constants.repair)) for (tile in tileMap.values) { if (tile.roadIsPillaged) { - tile.roadStatus = RoadStatus.None - tile.roadIsPillaged = false + tile.removeRoad() } if (tile.improvementIsPillaged) { tile.improvement = null diff --git a/core/src/com/unciv/logic/GameStarter.kt b/core/src/com/unciv/logic/GameStarter.kt index faeb24f92fecc..f56241aa52947 100644 --- a/core/src/com/unciv/logic/GameStarter.kt +++ b/core/src/com/unciv/logic/GameStarter.kt @@ -349,7 +349,12 @@ object GameStarter { .map { it.key } .filter { it in usedCivNames } - for (player in chosenPlayers) { + val playersToAdd = if (newGameParameters.shufflePlayerOrder) { + chosenPlayers.toMutableList().apply { shuffle() } + } else { + chosenPlayers + } + for (player in playersToAdd) { val civ = Civilization(player.chosenCiv) when (player.chosenCiv) { in usedMajorCivs, Constants.spectator -> { diff --git a/core/src/com/unciv/logic/automation/Automation.kt b/core/src/com/unciv/logic/automation/Automation.kt index a4aef7bb6fc5c..0fbe2433783a9 100644 --- a/core/src/com/unciv/logic/automation/Automation.kt +++ b/core/src/com/unciv/logic/automation/Automation.kt @@ -46,7 +46,34 @@ object Automation { return rank } + // More complicated logic to properly weigh Food vs other Stats (esp Production) + private fun getFoodModWeight(city: City, surplusFood: Float): Float { + val speed = city.civ.gameInfo.speed.modifier + // Zero out Growth if close to Unhappiness limit + if (city.civ.getHappiness() < -8) + return 0f + if (city.civ.isAI()) { + // When Happy, 2 production is better than 1 growth, + // but setting such by default worsens AI civ citizen assignment, + // probably due to badly configured personalities not properly weighing food vs non-food yields + if (city.population.population < 5) + return 2f + if (surplusFood > city.population.getFoodToNextPopulation() / (10 * speed)) + return 0.75f // get Growth just under Production + return 1.5f + } + // Human weights. May be different since AI Happiness is always "easier" + // Only apply these for Default to not interfere with Focus weights + if (city.getCityFocus() == CityFocus.NoFocus) { + if (city.population.population < 5) + return 2f + if (surplusFood > city.population.getFoodToNextPopulation() / (10 * speed)) + return 0.75f // get Growth just under Production + } + return 1f + } + fun rankStatsForCityWork(stats: Stats, city: City, areWeRankingSpecialist: Boolean, localUniqueCache: LocalUniqueCache): Float { val cityAIFocus = city.getCityFocus() val yieldStats = stats.clone() @@ -116,16 +143,8 @@ object Automation { newGrowthFood += growthFood / 4 } newGrowthFood = newGrowthFood.coerceAtLeast(0f) // floor to 0 for safety - - // When Happy, 2 production is better than 1 growth, - // but setting such by default worsens AI civ citizen assignment, - // probably due to badly configured personalities not properly weighing food vs non-food yields - - // Zero out Growth if close to Unhappiness limit as well - val baseFocusWeight = if (city.civ.getHappiness() < -8) 0 else { - if (cityAIFocus in CityFocus.zeroFoodFocuses) 1 else 2 - } - yieldStats.food += newGrowthFood * foodBaseWeight * baseFocusWeight + + yieldStats.food += newGrowthFood * foodBaseWeight * getFoodModWeight(city, surplusFood) } if (city.population.population < 10) { diff --git a/core/src/com/unciv/logic/automation/civilization/NextTurnAutomation.kt b/core/src/com/unciv/logic/automation/civilization/NextTurnAutomation.kt index ec3f8288011f3..3350baf5f2b1f 100644 --- a/core/src/com/unciv/logic/automation/civilization/NextTurnAutomation.kt +++ b/core/src/com/unciv/logic/automation/civilization/NextTurnAutomation.kt @@ -262,11 +262,14 @@ object NextTurnAutomation { } val stateForConditionals = civInfo.state - while(civInfo.tech.freeTechs > 0) { + while (civInfo.tech.freeTechs > 0) { val costs = getGroupedResearchableTechs() if (costs.isEmpty()) return - - val mostExpensiveTechs = costs[costs.size - 1] + + val mostExpensiveTechs = costs.lastOrNull{ + // Ignore rows where all techs have 0 weight + it.any { it.getWeightForAiDecision(stateForConditionals) > 0 } + } ?: costs.last() val chosenTech = mostExpensiveTechs.randomWeighted { it.getWeightForAiDecision(stateForConditionals) } civInfo.tech.getFreeTechnology(chosenTech.name) } @@ -274,7 +277,9 @@ object NextTurnAutomation { val costs = getGroupedResearchableTechs() if (costs.isEmpty()) return - val cheapestTechs = costs[0] + val cheapestTechs = costs.firstOrNull{ + // Ignore rows where all techs have 0 weight + it.any { it.getWeightForAiDecision(stateForConditionals) > 0 } }?: costs.first() //Do not consider advanced techs if only one tech left in cheapest group val techToResearch: Technology = if (cheapestTechs.size == 1 || costs.size == 1) { diff --git a/core/src/com/unciv/logic/automation/civilization/ReligionAutomation.kt b/core/src/com/unciv/logic/automation/civilization/ReligionAutomation.kt index c43939da84e86..313d157d8b5d8 100644 --- a/core/src/com/unciv/logic/automation/civilization/ReligionAutomation.kt +++ b/core/src/com/unciv/logic/automation/civilization/ReligionAutomation.kt @@ -208,15 +208,15 @@ object ReligionAutomation { // region rate beliefs fun rateBelief(civInfo: Civilization, belief: Belief): Float { - var score = 0f + var score = 0f // Roughly equivalent to the sum of stats gained across all cities for (city in civInfo.cities) { for (tile in city.getCenterTile().getTilesInDistance(city.getWorkRange())) { val tileScore = beliefBonusForTile(belief, tile, city) score += tileScore * when { - city.workedTiles.contains(tile.position) -> 8 - tile.getCity() == city -> 5 - else -> 3 + city.workedTiles.contains(tile.position) -> 1f // worked + tile.getCity() == city -> 0.7f // workable + else -> 0.5f // unavailable - for now } * (Random.nextFloat() * 0.05f + 0.975f) } @@ -237,14 +237,15 @@ object ReligionAutomation { var bonusYield = 0f for (unique in belief.uniqueObjects) { when (unique.type) { - UniqueType.StatsFromObject -> if (tile.matchesFilter(unique.params[1])) + UniqueType.StatsFromObject -> if ((tile.matchesFilter(unique.params[1]) + && !(tile.lastTerrain.hasUnique(UniqueType.ProductionBonusWhenRemoved) && tile.lastTerrain.matchesFilter(unique.params[1])) //forest pantheons are bad, as we want to remove the forests + || (tile.resource != null && (tile.tileResource.matchesFilter(unique.params[1]) || tile.tileResource.isImprovedBy(unique.params[1]))))) //resource pantheons are good, as we want to work the tile anyways bonusYield += unique.stats.values.sum() UniqueType.StatsFromTilesWithout -> if (city.matchesFilter(unique.params[3]) && tile.matchesFilter(unique.params[1]) && !tile.matchesFilter(unique.params[2]) ) bonusYield += unique.stats.values.sum() - // ToDo: Also calculate add stats for improvements that will be buildable else -> {} } } @@ -261,7 +262,7 @@ object ReligionAutomation { // If obsoleted, continue score += modifier * when (unique.type) { UniqueType.GrowthPercentBonus -> unique.params[0].toFloat() / 3f - UniqueType.BorderGrowthPercentage -> -unique.params[0].toFloat() * 2f / 10f + UniqueType.BorderGrowthPercentage -> -unique.params[0].toFloat() / 10f UniqueType.StrengthForCities -> unique.params[0].toFloat() / 10f // Modified by personality UniqueType.CityHealingUnits -> unique.params[1].toFloat() / 10f UniqueType.PercentProductionBuildings -> unique.params[0].toFloat() / 3f @@ -275,8 +276,8 @@ object ReligionAutomation { when { ruleSet.buildings.containsKey(unique.params[1]) -> { unique.stats.values.sum() * - if (ruleSet.buildings[unique.params[1]]!!.isNationalWonder) 0.5f //there's at most 1 copy of each of these in our empire - else 1.5f //yields for buildings are usually more desireable than faith-purchased buildings, as we might not need an upfront investment + if (ruleSet.buildings[unique.params[1]]!!.isNationalWonder) 0.25f //there's at most 1 copy of each of these in our empire, and the AI is slow at getting it + else 1f // Yields from regular buildings won't need the upfront purchase cost as is the case with religion buildings, but they may have weird requirements (gardens etc.) } ruleSet.specialists.containsKey(unique.params[1]) -> { @@ -284,17 +285,17 @@ object ReligionAutomation { if (city.population.population > 8f) 2f else 1f } - else -> unique.stats.values.sum() * 1f //should account for most edge cases here + else -> unique.stats.values.sum() * 0f //yields from world wonders and great improvements - the latter needs additional AI logic to be used correctly } UniqueType.StatsFromTradeRoute -> unique.stats.values.sum() * - if (city.isConnectedToCapital()) 2f - else 1f + if (city.isConnectedToCapital()) 1f + else 0f //no yields from the belief yet, also for pantheons it's quite low-tempo UniqueType.StatPercentFromReligionFollowers -> min(unique.params[0].toFloat() * city.population.population, unique.params[2].toFloat()) UniqueType.StatsPerCity -> if (city.matchesFilter(unique.params[1])) - unique.stats.values.sum() * 2f //free yields + unique.stats.values.sum() * 1f //free yields else 0f else -> 0f } @@ -344,27 +345,28 @@ object ReligionAutomation { // Some city-filters are modified by personality (non-enemy foreign cities) score += modifier * when (unique.type) { UniqueType.KillUnitPlunderNearCity -> - unique.params[0].toFloat() * 0.5f * //can be very strong, but a low weight for now as the AI currently isn't farming barb camp - if (civInfo.wantsToFocusOn(Victory.Focus.Military)) 2f - else 1f + unique.params[0].toFloat() * //can be very strong, but a low weight for now as the AI currently isn't farming barb camp + if (civInfo.wantsToFocusOn(Victory.Focus.Military)) 0.5f + else 0.25f UniqueType.BuyUnitsForAmountStat, UniqueType.BuyBuildingsForAmountStat -> if (civInfo.religionManager.religion != null && civInfo.religionManager.religion!!.followerBeliefUniqueMap.getUniques(unique.type).any() ) 0f // This is something completely different from the original, but I have no idea // what happens over there - else civInfo.stats.statsForNextTurn[Stat.valueOf(unique.params[2])] * 200f / unique.params[1].toFloat() //the costs of these are probably similar to the baseUnitBuyCost + else civInfo.stats.statsForNextTurn[Stat.valueOf(unique.params[2])] * 300f / unique.params[1].toFloat() //the costs of these are probably similar to the baseUnitBuyCost UniqueType.BuyUnitsWithStat, UniqueType.BuyBuildingsWithStat -> if (civInfo.religionManager.religion != null && civInfo.religionManager.religion!!.followerBeliefUniqueMap.getUniques(unique.type).any() ) 0f // This is something completely different from the original, but I have no idea // what happens over there - else civInfo.stats.statsForNextTurn[Stat.valueOf(unique.params[1])] * 200f / civInfo.getEra().baseUnitBuyCost //baseUnitBuyCost is 200 in Standard speed pre-Renaissance + else civInfo.stats.statsForNextTurn[Stat.valueOf(unique.params[1])] * 300f / civInfo.getEra().baseUnitBuyCost + //baseUnitBuyCost is 200 in Standard speed pre-Renaissance, but overvalue such as to let the high-faith civs pick the good faith sinks UniqueType.BuyUnitsByProductionCost -> 0f //Holy Warriors is a waste if we don't buy units with it, and if we buy units with it'll cost us great persons UniqueType.StatsWhenSpreading -> - unique.params[0].toFloat() / 10f + unique.params[0].toFloat() / 15f UniqueType.StatsWhenAdoptingReligion -> unique.stats.values.sum() / 50f UniqueType.RestingPointOfCityStatesFollowingReligionChange -> @@ -377,13 +379,13 @@ object ReligionAutomation { UniqueType.StatsFromGlobalFollowers -> 10f * (unique.stats.values.sum() / unique.params[1].toFloat()) UniqueType.Strength -> - unique.params[0].toFloat() * 2f//combat strength from beliefs is very strong + unique.params[0].toFloat() * 3f//combat strength from beliefs is very strong UniqueType.ReligionSpreadDistance -> (10f + unique.params[0].toFloat()) * goodEarlyModifier UniqueType.NaturalReligionSpreadStrength -> - unique.params[0].toFloat() * goodEarlyModifier / 5f //We should weigh this according to cityFilter; Religious Texts is way stronger than Religious Unity + unique.params[0].toFloat() * goodEarlyModifier / 10f //We should weigh this according to cityFilter; Religious Texts is way stronger than Religious Unity UniqueType.SpreadReligionStrength -> - unique.params[0].toFloat() * goodLateModifier / 5f + unique.params[0].toFloat() * goodLateModifier / 10f //Cheaper missionaries are generally better than stronger missionaries UniqueType.FaithCostOfGreatProphetChange -> -unique.params[0].toFloat() * goodLateModifier / 10f //It's only about 1 more prophet, due to the increasing costs. UniqueType.BuyBuildingsDiscount, UniqueType.BuyUnitsDiscount -> diff --git a/core/src/com/unciv/logic/automation/unit/AirUnitAutomation.kt b/core/src/com/unciv/logic/automation/unit/AirUnitAutomation.kt index d81f9a80233d1..f63daf93f1177 100644 --- a/core/src/com/unciv/logic/automation/unit/AirUnitAutomation.kt +++ b/core/src/com/unciv/logic/automation/unit/AirUnitAutomation.kt @@ -51,6 +51,8 @@ object AirUnitAutomation { if (BattleHelper.tryAttackNearbyEnemy(unit)) return + if (unit.cache.cannotMove) return // from here on it's all "try to move somewhere else" + if (tryRelocateToCitiesWithEnemyNearBy(unit)) return val pathsToCities = unit.movement.getAerialPathsToCities() @@ -76,7 +78,6 @@ object AirUnitAutomation { // no city needs fighters to defend, so let's attack stuff from the closest possible location tryMoveToCitiesToAerialAttackFrom(pathsToCities, unit) - } private fun tryAirSweep(unit: MapUnit, tilesWithEnemyUnitsInRange: List): Boolean { @@ -97,6 +98,8 @@ object AirUnitAutomation { return // Wait and heal } + if (unit.cache.cannotMove) return // from here on it's all "try to move somewhere else" + if (tryRelocateToCitiesWithEnemyNearBy(unit)) return val pathsToCities = unit.movement.getAerialPathsToCities() diff --git a/core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt b/core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt index 9218ada39c202..07bee1b2f78aa 100644 --- a/core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt +++ b/core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt @@ -100,7 +100,9 @@ class WorkerAutomation( // If we have reached a fort tile that is in progress and shouldn't be there, cancel it. // TODO: Replace this code entirely and change [chooseImprovement] to not continue building the improvement by default - if (reachedTile == tileToWork && reachedTile.improvementInProgress == Constants.fort && evaluateFortSurroundings(currentTile, false) <= 0) { + if (reachedTile == tileToWork + && reachedTile.improvementInProgress == Constants.fort + && evaluateFortSurroundings(currentTile, false) <= 0) { debug("Replacing fort in progress with new improvement") reachedTile.stopWorkingOnImprovement() } @@ -525,6 +527,7 @@ class WorkerAutomation( * @return Yes the location is good for a Fort here */ private fun evaluateFortSurroundings(tile: Tile, isCitadel: Boolean): Float { + // build on our land only if (tile.owningCity?.civ != civInfo && // except citadel which can be built near-by @@ -535,7 +538,7 @@ class WorkerAutomation( // no potential enemies if (enemyCivs.none()) return 0f - var valueOfFort = 2f + var valueOfFort = 1f if (civInfo.isCityState && civInfo.getAllyCiv() != null) valueOfFort -= 1f // Allied city states probably don't need to build forts diff --git a/core/src/com/unciv/logic/battle/AirInterception.kt b/core/src/com/unciv/logic/battle/AirInterception.kt index f87031b2af5b7..3cbd41da3fb2e 100644 --- a/core/src/com/unciv/logic/battle/AirInterception.kt +++ b/core/src/com/unciv/logic/battle/AirInterception.kt @@ -1,6 +1,5 @@ package com.unciv.logic.battle -import com.unciv.UncivGame import com.unciv.logic.civilization.Civilization import com.unciv.logic.civilization.LocationAction import com.unciv.logic.civilization.NotificationCategory @@ -38,7 +37,7 @@ object AirInterception { // Make giant sequence of all potential Interceptors from all Civs isAtWarWith() var potentialInterceptors = sequence { } - for (interceptingCiv in UncivGame.Current.gameInfo!!.civilizations + for (interceptingCiv in attacker.getCivInfo().gameInfo.civilizations .filter {attacker.getCivInfo().isAtWarWith(it)}) { potentialInterceptors += interceptingCiv.units.getCivUnits() .filter { it.canIntercept(attackedTile) } diff --git a/core/src/com/unciv/logic/city/City.kt b/core/src/com/unciv/logic/city/City.kt index 2c4b4473dd7dc..1a22019cc3aa6 100644 --- a/core/src/com/unciv/logic/city/City.kt +++ b/core/src/com/unciv/logic/city/City.kt @@ -91,7 +91,7 @@ class City : IsPartOfGameInfoSerialization, INamed { civ.gameInfo.getCities().filter { it != this && it.getCenterTile().isExplored(civ) && it.getCenterTile().aerialDistanceTo(getCenterTile()) <= 12 }.toList() } - var cityAIFocus: String = CityFocus.NoFocus.name + private var cityAIFocus: String = CityFocus.NoFocus.name fun getCityFocus() = CityFocus.entries.firstOrNull { it.name == cityAIFocus } ?: CityFocus.NoFocus fun setCityFocus(cityFocus: CityFocus){ cityAIFocus = cityFocus.name } @@ -385,15 +385,12 @@ class City : IsPartOfGameInfoSerialization, INamed { CityConquestFunctions(this).moveToCiv(newCivInfo) internal fun tryUpdateRoadStatus() { - if (getCenterTile().roadStatus == RoadStatus.None) { - val roadImprovement = getRuleset().roadImprovement - if (roadImprovement != null && roadImprovement.techRequired in civ.tech.techsResearched) - getCenterTile().roadStatus = RoadStatus.Road - } else if (getCenterTile().roadStatus != RoadStatus.Railroad) { - val railroadImprovement = getRuleset().railroadImprovement - if (railroadImprovement != null && railroadImprovement.techRequired in civ.tech.techsResearched) - getCenterTile().roadStatus = RoadStatus.Railroad + val requiredRoad = when{ + getRuleset().railroadImprovement?.let { it.techRequired == null || it.techRequired in civ.tech.techsResearched } == true -> RoadStatus.Railroad + getRuleset().roadImprovement?.let { it.techRequired == null || it.techRequired in civ.tech.techsResearched } == true -> RoadStatus.Road + else -> RoadStatus.None } + getCenterTile().setRoadStatus(requiredRoad, civ) } fun getGoldForSellingBuilding(buildingName: String) = diff --git a/core/src/com/unciv/logic/city/CityConstructions.kt b/core/src/com/unciv/logic/city/CityConstructions.kt index 4a1934962ae75..63cda4ab334df 100644 --- a/core/src/com/unciv/logic/city/CityConstructions.kt +++ b/core/src/com/unciv/logic/city/CityConstructions.kt @@ -12,6 +12,7 @@ import com.unciv.logic.civilization.MapUnitAction import com.unciv.logic.civilization.NotificationCategory import com.unciv.logic.civilization.NotificationIcon import com.unciv.logic.civilization.PopupAlert +import com.unciv.logic.map.mapunit.MapUnit import com.unciv.logic.map.tile.Tile import com.unciv.logic.multiplayer.isUsersTurn import com.unciv.models.ruleset.Building @@ -457,21 +458,25 @@ class CityConstructions : IsPartOfGameInfoSerialization { /** Returns false if we tried to construct a unit but it has nowhere to go */ fun completeConstruction(construction: INonPerpetualConstruction): Boolean { - val managedToConstruct = construction.postBuildEvent(this) - if (!managedToConstruct) return false + var unit: MapUnit? = null + if (construction is Building) construction.construct(this) + else if (construction is BaseUnit) { + unit = construction.construct(this, null) + ?: return false // unable to place unit + } if (construction.name in inProgressConstructions) inProgressConstructions.remove(construction.name) if (construction.name == currentConstructionFromQueue) removeCurrentConstruction() - validateConstructionQueue() // if we've build e.g. the Great Lighthouse, then Lighthouse is no longer relevant in the queue + validateConstructionQueue() // if we've built e.g. the Great Lighthouse, then Lighthouse is no longer relevant in the queue construction as IRulesetObject // Always OK for INonPerpetualConstruction, but compiler doesn't know val buildingIcon = "BuildingIcons/${construction.name}" val pediaAction = CivilopediaAction(construction.makeLink()) - val locationAction = if (construction is BaseUnit) MapUnitAction(city.location) + val locationAction = if (construction is BaseUnit) MapUnitAction(unit!!) else LocationAction(city.location) val locationAndPediaActions = listOf(locationAction, pediaAction) @@ -665,8 +670,11 @@ class CityConstructions : IsPartOfGameInfoSerialization { // postBuildEvent does the rest by calling cityConstructions.applyCreateOneImprovement } - if (!construction.postBuildEvent(this, stat)) - return false // nothing built - no pay + if (construction is Building) construction.construct(this) + else if (construction is BaseUnit) { + construction.construct(this, stat) + ?: return false // nothing built - no pay + } if (!city.civ.gameInfo.gameParameters.godMode) { val constructionCost = construction.getStatBuyCost(city, stat) diff --git a/core/src/com/unciv/logic/city/CityFocus.kt b/core/src/com/unciv/logic/city/CityFocus.kt index 110c81254b901..3a844cd2f7797 100644 --- a/core/src/com/unciv/logic/city/CityFocus.kt +++ b/core/src/com/unciv/logic/city/CityFocus.kt @@ -41,13 +41,15 @@ enum class CityFocus( FaithFocus("${Stat.Faith.character}", true, Stat.Faith), GoldGrowthFocus("${Stat.Gold.character} ${Stat.Food.character}", true) { override fun getStatMultiplier(stat: Stat) = when (stat) { - Stat.Gold, Stat.Food -> 2f + Stat.Gold -> 2f + Stat.Food -> 1.5f else -> 1f } }, ProductionGrowthFocus("${Stat.Production.character} ${Stat.Food.character}", true) { override fun getStatMultiplier(stat: Stat) = when (stat) { - Stat.Production, Stat.Food -> 2f + Stat.Production -> 2f + Stat.Food -> 1.5f else -> 1f } }, diff --git a/core/src/com/unciv/logic/city/CityStats.kt b/core/src/com/unciv/logic/city/CityStats.kt index 4a0c251876a29..96159b84f9ea0 100644 --- a/core/src/com/unciv/logic/city/CityStats.kt +++ b/core/src/com/unciv/logic/city/CityStats.kt @@ -351,8 +351,8 @@ class CityStats(val city: City) { city.location == it.position || city.isWorked(it) || it.owningCity == city && (it.getUnpillagedTileImprovement() - ?.hasUnique(UniqueType.TileProvidesYieldWithoutPopulation) == true - || it.terrainHasUnique(UniqueType.TileProvidesYieldWithoutPopulation)) + ?.hasUnique(UniqueType.TileProvidesYieldWithoutPopulation, it.stateThisTile) == true + || it.terrainHasUnique(UniqueType.TileProvidesYieldWithoutPopulation, it.stateThisTile)) } for (tile in workedTiles) { if (tile.isBlockaded() && city.isWorked(tile)) { diff --git a/core/src/com/unciv/logic/civilization/NotificationActions.kt b/core/src/com/unciv/logic/civilization/NotificationActions.kt index 953bebde4dce1..5810dd531b521 100644 --- a/core/src/com/unciv/logic/civilization/NotificationActions.kt +++ b/core/src/com/unciv/logic/civilization/NotificationActions.kt @@ -124,7 +124,7 @@ class MapUnitAction( ) : NotificationAction { constructor(unit: MapUnit) : this(unit.currentTile.position, unit.id) override fun execute(worldScreen: WorldScreen) { - val selectUnit = id == Constants.NO_ID // This is the unspecific "select any unit on that tile", specific works without this being on + val selectUnit = id != Constants.NO_ID // This is the unspecific "select any unit on that tile", specific works without this being on val unit = if (selectUnit) null else worldScreen.gameInfo.tileMap[location].getUnits().firstOrNull { it.id == id } worldScreen.mapHolder.setCenterPosition(location, selectUnit = selectUnit, forceSelectUnit = unit) @@ -185,9 +185,7 @@ class EspionageAction : NotificationAction { class LinkAction(private val url: String = "") : NotificationAction { override fun execute(worldScreen: WorldScreen) { - if (url.isNotEmpty()) { - Gdx.net.openURI(url); - } + if (url.isNotEmpty()) Gdx.net.openURI(url) } } diff --git a/core/src/com/unciv/logic/map/TileMap.kt b/core/src/com/unciv/logic/map/TileMap.kt index 05fac00eacd49..84b9389e0e9a3 100644 --- a/core/src/com/unciv/logic/map/TileMap.kt +++ b/core/src/com/unciv/logic/map/TileMap.kt @@ -75,8 +75,17 @@ class TileMap(initialCapacity: Int = 10) : IsPartOfGameInfoSerialization { @Transient var ruleset: Ruleset? = null + data class TerrainListData( + val uniques: UniqueMap, + val terrainNameSet: Set + ){ + companion object{ + val EMPTY = TerrainListData(UniqueMap.EMPTY, emptySet()) + } + } + @Transient - var tileUniqueMapCache = ConcurrentHashMap, UniqueMap>() + var tileUniqueMapCache = ConcurrentHashMap, TerrainListData>() @Transient var tileMatrix = ArrayList>() // this works several times faster than a hashmap, the performance difference is really astounding diff --git a/core/src/com/unciv/logic/map/mapgenerator/MapGenerator.kt b/core/src/com/unciv/logic/map/mapgenerator/MapGenerator.kt index 07b6eef0f2b65..fc69d9ec5ff93 100644 --- a/core/src/com/unciv/logic/map/mapgenerator/MapGenerator.kt +++ b/core/src/com/unciv/logic/map/mapgenerator/MapGenerator.kt @@ -185,50 +185,42 @@ class MapGenerator(val ruleset: Ruleset, private val coroutineScope: CoroutineSc private fun flipLeftRight(vector: Vector2): Vector2 = Vector2(vector.y, vector.x) private fun mirror(map: TileMap) { - fun copyTile(tile: Tile, x: Int, y: Int) { - val mirrorTile = map.getIfTileExistsOrNull(x, y) ?: return + fun getMirrorTile(tile: Tile, mirroringType: String): Tile? { + val mirrorTileVector = when (mirroringType) { + MirroringType.topbottom -> if (tile.getRow() <= 0) return null else flipTopBottom(tile.position) + MirroringType.leftright -> if (tile.getColumn() <= 0) return null else flipLeftRight(tile.position) + MirroringType.aroundCenterTile -> if (tile.getRow() <= 0) return null else flipLeftRight(flipTopBottom(tile.position)) + MirroringType.fourway -> when { + tile.getRow() < 0 && tile.getColumn() < 0 -> return null + tile.getRow() < 0 && tile.getColumn() >= 0 -> flipLeftRight(tile.position) + tile.getRow() >= 0 && tile.getColumn() < 0 -> flipTopBottom(tile.position) + else -> flipLeftRight(flipTopBottom(tile.position)) + } + + else -> return null + } + return map.getIfTileExistsOrNull(mirrorTileVector.x.toInt(), mirrorTileVector.y.toInt()) + } + + fun copyTile(tile: Tile, mirroringType: String) { + val mirrorTile = getMirrorTile(tile, mirroringType) ?: return + tile.setBaseTerrain(mirrorTile.getBaseTerrain()) - // todo rivers are a bitch tile.naturalWonder = mirrorTile.naturalWonder tile.setTerrainFeatures(mirrorTile.terrainFeatures) tile.resource = mirrorTile.resource tile.improvement = mirrorTile.improvement - } - - when (map.mapParameters.mirroring){ - MirroringType.none -> return - MirroringType.topbottom -> { - for (tile in map.values) { - if (tile.getRow() <= 0) continue - val flip = flipTopBottom(tile.position) - copyTile(tile, flip.x.toInt(), flip.y.toInt()) - } + + for (neighbor in tile.neighbors){ + val neighborMirror = getMirrorTile(neighbor, mirroringType) ?: continue + if (neighborMirror !in mirrorTile.neighbors) continue // we landed on the edge here + tile.setConnectedByRiver(neighbor, mirrorTile.isConnectedByRiver(neighborMirror)) } - MirroringType.leftright -> { - for (tile in map.values) { - if (tile.getColumn() <= 0) continue - val flip = flipLeftRight(tile.position) - copyTile(tile, flip.x.toInt(), flip.y.toInt()) - } - } - MirroringType.aroundCenterTile -> { - for (tile in map.values) { - if (tile.getRow() <= 0) continue - val flipTopBottom = flipTopBottom(tile.position) - val flipTopBottomLeftRight = flipLeftRight(flipTopBottom) - copyTile(tile, flipTopBottomLeftRight.x.toInt(), flipTopBottomLeftRight.y.toInt()) - } - } - MirroringType.fourway -> { - for (tile in map.values) { - if (tile.getRow() < 0 && tile.getColumn() < 0) continue - var originVector = tile.position - if (tile.getRow() >= 0) originVector = flipTopBottom(originVector) - if (tile.getColumn() >= 0) originVector = flipLeftRight(originVector) - copyTile(tile, originVector.x.toInt(), originVector.y.toInt()) - } - } - else -> return + } + + if (map.mapParameters.mirroring == MirroringType.none) return + for (tile in map.values) { + copyTile(tile, map.mapParameters.mirroring) } } diff --git a/core/src/com/unciv/logic/map/mapgenerator/mapregions/LuxuryResourcePlacementLogic.kt b/core/src/com/unciv/logic/map/mapgenerator/mapregions/LuxuryResourcePlacementLogic.kt index 20824ca689a46..16ebd5451bf22 100644 --- a/core/src/com/unciv/logic/map/mapgenerator/mapregions/LuxuryResourcePlacementLogic.kt +++ b/core/src/com/unciv/logic/map/mapgenerator/mapregions/LuxuryResourcePlacementLogic.kt @@ -366,7 +366,7 @@ object LuxuryResourcePlacementLogic { val averageFertilityDensity = regions.sumOf { it.totalFertility } / regions.sumOf { it.tiles.size }.toFloat() for (region in regions) { - var targetLuxuries = 1 + var targetLuxuries = 2 if (tileMap.mapParameters.getLegendaryStart()) targetLuxuries++ if (region.totalFertility / region.tiles.size.toFloat() < averageFertilityDensity) { diff --git a/core/src/com/unciv/logic/map/mapunit/MapUnit.kt b/core/src/com/unciv/logic/map/mapunit/MapUnit.kt index 7ff9a4b02ad78..bb3280d267048 100644 --- a/core/src/com/unciv/logic/map/mapunit/MapUnit.kt +++ b/core/src/com/unciv/logic/map/mapunit/MapUnit.kt @@ -205,6 +205,7 @@ class MapUnit : IsPartOfGameInfoSerialization { toReturn.baseUnit = baseUnit toReturn.name = name toReturn.civ = civ + toReturn.id = id toReturn.owner = owner toReturn.originalOwner = originalOwner toReturn.instanceName = instanceName diff --git a/core/src/com/unciv/logic/map/mapunit/UnitTurnManager.kt b/core/src/com/unciv/logic/map/mapunit/UnitTurnManager.kt index 70a0d1117a1ee..edc3672aa26d9 100644 --- a/core/src/com/unciv/logic/map/mapunit/UnitTurnManager.kt +++ b/core/src/com/unciv/logic/map/mapunit/UnitTurnManager.kt @@ -88,7 +88,7 @@ class UnitTurnManager(val unit: MapUnit) { && it.getUnpillagedImprovement() != null && unit.civ.isAtWarWith(it.getOwner()!!) }.map { tile -> - tile to tile.getTileImprovement()!!.getMatchingUniques(UniqueType.DamagesAdjacentEnemyUnits) + tile to tile.getTileImprovement()!!.getMatchingUniques(UniqueType.DamagesAdjacentEnemyUnits, tile.stateThisTile) .sumOf { it.params[0].toInt() } }.maxByOrNull { it.second } ?: return diff --git a/core/src/com/unciv/logic/map/tile/Tile.kt b/core/src/com/unciv/logic/map/tile/Tile.kt index 6b82a4bef8daa..8511c715037b0 100644 --- a/core/src/com/unciv/logic/map/tile/Tile.kt +++ b/core/src/com/unciv/logic/map/tile/Tile.kt @@ -34,6 +34,8 @@ import com.unciv.utils.DebugUtils import com.unciv.utils.Log import com.unciv.utils.withItem import com.unciv.utils.withoutItem +import kotlin.collections.ArrayList +import kotlin.collections.HashSet import kotlin.math.abs import kotlin.math.min import kotlin.random.Random @@ -80,6 +82,7 @@ class Tile : IsPartOfGameInfoSerialization, Json.Serializable { private val improvementQueue = ArrayList(1) var roadStatus = RoadStatus.None + var roadIsPillaged = false private var roadOwner: String = "" // either who last built the road or last owner of tile @@ -155,7 +158,7 @@ class Tile : IsPartOfGameInfoSerialization, Json.Serializable { private set @Transient - var terrainUniqueMap = UniqueMap.EMPTY + var cachedTerrainData = TileMap.TerrainListData.EMPTY private set @Transient @@ -369,13 +372,13 @@ class Tile : IsPartOfGameInfoSerialization, Json.Serializable { fun isRoughTerrain() = allTerrains.any { it.isRough() } @Transient - private var stateThisTile: StateForConditionals = StateForConditionals.EmptyState + internal var stateThisTile: StateForConditionals = StateForConditionals.EmptyState /** Checks whether any of the TERRAINS of this tile has a certain unique */ fun terrainHasUnique(uniqueType: UniqueType, state: StateForConditionals = stateThisTile) = - terrainUniqueMap.getMatchingUniques(uniqueType, state).any() + cachedTerrainData.uniques.hasMatchingUnique(uniqueType, state) /** Get all uniques of this type that any TERRAIN on this tile has */ fun getTerrainMatchingUniques(uniqueType: UniqueType, stateForConditionals: StateForConditionals = stateThisTile ): Sequence { - return terrainUniqueMap.getMatchingUniques(uniqueType, stateForConditionals) + return cachedTerrainData.uniques.getMatchingUniques(uniqueType, stateForConditionals) } /** Get all uniques of this type that any part of this tile has: terrains, improvement, resource */ @@ -429,7 +432,7 @@ class Tile : IsPartOfGameInfoSerialization, Json.Serializable { if (getCity() == null) return false return isCityCenter() || isWorked() - || getUnpillagedTileImprovement()?.hasUnique(UniqueType.TileProvidesYieldWithoutPopulation) == true + || getUnpillagedTileImprovement()?.hasUnique(UniqueType.TileProvidesYieldWithoutPopulation, stateThisTile) == true || terrainHasUnique(UniqueType.TileProvidesYieldWithoutPopulation) } @@ -834,8 +837,11 @@ class Tile : IsPartOfGameInfoSerialization, Json.Serializable { val terrainNameList = allTerrains.map { it.name }.toList() // List hash is function of all its items, so the same items in the same order will always give the same hash - terrainUniqueMap = tileMap.tileUniqueMapCache.getOrPut(terrainNameList) { - UniqueMap(allTerrains.flatMap { it.uniqueObjects }) + cachedTerrainData = tileMap.tileUniqueMapCache.getOrPut(terrainNameList) { + TileMap.TerrainListData( + UniqueMap(allTerrains.flatMap { it.uniqueObjects }), + terrainNameList.toSet() + ) } } @@ -885,11 +891,16 @@ class Tile : IsPartOfGameInfoSerialization, Json.Serializable { fun setImprovement(improvementStr: String, civToHandleCompletion: Civilization? = null, unit: MapUnit? = null) = improvementFunctions.setImprovement(improvementStr, civToHandleCompletion, unit) - // function handling when adding a road to the tile - fun addRoad(roadType: RoadStatus, creatingCivInfo: Civilization?) { - roadStatus = roadType + // function handling when removing a road from the tile + fun removeRoad() = setRoadStatus(RoadStatus.None, null) + + fun setRoadStatus(newRoadStatus: RoadStatus, creatingCivInfo: Civilization?) { + roadStatus = newRoadStatus roadIsPillaged = false - if (getOwner() != null) { + + if (newRoadStatus == RoadStatus.None && owningCity == null) + getRoadOwner()?.neutralRoads?.remove(this.position) + else if (getOwner() != null) { roadOwner = getOwner()!!.civName } else if (creatingCivInfo != null) { roadOwner = creatingCivInfo.civName // neutral tile, use building unit @@ -897,15 +908,6 @@ class Tile : IsPartOfGameInfoSerialization, Json.Serializable { } } - // function handling when removing a road from the tile - fun removeRoad() { - roadIsPillaged = false - if (roadStatus == RoadStatus.None) return - roadStatus = RoadStatus.None - if (owningCity == null) - getRoadOwner()?.neutralRoads?.remove(this.position) - } - fun startWorkingOnImprovement(improvement: TileImprovement, civInfo: Civilization, unit: MapUnit) { improvementQueue.clear() queueImprovement(improvement, civInfo, unit) diff --git a/core/src/com/unciv/logic/map/tile/TileImprovementFunctions.kt b/core/src/com/unciv/logic/map/tile/TileImprovementFunctions.kt index be76e27ce7af0..a4d0f4ebe6200 100644 --- a/core/src/com/unciv/logic/map/tile/TileImprovementFunctions.kt +++ b/core/src/com/unciv/logic/map/tile/TileImprovementFunctions.kt @@ -203,8 +203,8 @@ class TileImprovementFunctions(val tile: Tile) { improvementName?.startsWith(Constants.remove) == true -> { activateRemovalImprovement(improvementName, civToActivateBroaderEffects) } - improvementName == RoadStatus.Road.name -> tile.addRoad(RoadStatus.Road, civToActivateBroaderEffects) - improvementName == RoadStatus.Railroad.name -> tile.addRoad(RoadStatus.Railroad, civToActivateBroaderEffects) + improvementName == RoadStatus.Road.name -> tile.setRoadStatus(RoadStatus.Road, civToActivateBroaderEffects) + improvementName == RoadStatus.Railroad.name -> tile.setRoadStatus(RoadStatus.Railroad, civToActivateBroaderEffects) improvementName == Constants.repair -> tile.setRepaired() else -> { tile.improvementIsPillaged = false diff --git a/core/src/com/unciv/logic/simulation/Simulation.kt b/core/src/com/unciv/logic/simulation/Simulation.kt index 5fec82744cc1a..181174e05cb0f 100644 --- a/core/src/com/unciv/logic/simulation/Simulation.kt +++ b/core/src/com/unciv/logic/simulation/Simulation.kt @@ -29,6 +29,7 @@ class Simulation( var steps = ArrayList() var numWins = mutableMapOf() private var winRateByVictory = HashMap>() + private var winTurnByVictory = HashMap>() private var avgSpeed = 0f private var avgDuration: Duration = Duration.ZERO private var totalTurns = 0 @@ -42,6 +43,9 @@ class Simulation( winRateByVictory[civ] = mutableMapOf() for (victory in UncivGame.Current.gameInfo!!.ruleset.victories.keys) winRateByVictory[civ]!![victory] = MutableInt(0) + winTurnByVictory[civ] = mutableMapOf() + for (victory in UncivGame.Current.gameInfo!!.ruleset.victories.keys) + winTurnByVictory[civ]!![victory] = MutableInt(0) } } @@ -98,10 +102,12 @@ class Simulation( // win Rate numWins.values.forEach { it.value = 0 } winRateByVictory.flatMap { it.value.values }.forEach { it.value = 0 } + winTurnByVictory.flatMap { it.value.values }.forEach { it.value = 0 } steps.forEach { if (it.winner != null) { numWins[it.winner!!]!!.inc() winRateByVictory[it.winner!!]!![it.victoryType]!!.inc() + winTurnByVictory[it.winner!!]!![it.victoryType]!!.set(winTurnByVictory[it.winner!!]!![it.victoryType]!!.get() + it.turns) } } totalTurns = steps.sumOf { it.turns } @@ -137,6 +143,12 @@ class Simulation( outString += "$victory: $winsVictory% " } outString += "\n" + for (victory in UncivGame.Current.gameInfo!!.ruleset.victories.keys) { + val winsTurns = + winTurnByVictory[civ]!![victory]!!.value / max(winRateByVictory[civ]!![victory]!!.value, 1) + outString += "$victory: $winsTurns " + } + outString += "avg turns\n" } outString += "\nAverage speed: %.1f turns/s \n".format(avgSpeed) outString += "Average game duration: $avgDuration\n" diff --git a/core/src/com/unciv/models/metadata/GameParameters.kt b/core/src/com/unciv/models/metadata/GameParameters.kt index 429f78fc0956e..67cdbda8478e9 100644 --- a/core/src/com/unciv/models/metadata/GameParameters.kt +++ b/core/src/com/unciv/models/metadata/GameParameters.kt @@ -31,6 +31,7 @@ class GameParameters : IsPartOfGameInfoSerialization { // Default values are the var nuclearWeaponsEnabled = true var espionageEnabled = false var noStartBias = false + var shufflePlayerOrder = false var victoryTypes: ArrayList = arrayListOf() var startingEra = "Ancient era" @@ -71,6 +72,7 @@ class GameParameters : IsPartOfGameInfoSerialization { // Default values are the parameters.nuclearWeaponsEnabled = nuclearWeaponsEnabled parameters.espionageEnabled = espionageEnabled parameters.noStartBias = noStartBias + parameters.shufflePlayerOrder = shufflePlayerOrder parameters.victoryTypes = ArrayList(victoryTypes) parameters.startingEra = startingEra parameters.isOnlineMultiplayer = isOnlineMultiplayer diff --git a/core/src/com/unciv/models/ruleset/Building.kt b/core/src/com/unciv/models/ruleset/Building.kt index 373547379558a..c04b97cac4569 100644 --- a/core/src/com/unciv/models/ruleset/Building.kt +++ b/core/src/com/unciv/models/ruleset/Building.kt @@ -465,16 +465,14 @@ class Building : RulesetStatsObject(), INonPerpetualConstruction { override fun isBuildable(cityConstructions: CityConstructions): Boolean = getRejectionReasons(cityConstructions).none() - override fun postBuildEvent(cityConstructions: CityConstructions, boughtWith: Stat?): Boolean { + fun construct(cityConstructions: CityConstructions) { val civInfo = cityConstructions.city.civ if (civInfo.gameInfo.spaceResources.contains(name)) { civInfo.victoryManager.currentsSpaceshipParts.add(name, 1) - return true } cityConstructions.addBuilding(this) - return true } diff --git a/core/src/com/unciv/models/ruleset/IConstruction.kt b/core/src/com/unciv/models/ruleset/IConstruction.kt index 24f0aac04b576..446d4e2bf1863 100644 --- a/core/src/com/unciv/models/ruleset/IConstruction.kt +++ b/core/src/com/unciv/models/ruleset/IConstruction.kt @@ -40,9 +40,6 @@ interface INonPerpetualConstruction : IConstruction, INamed, IHasUniques { fun getStatBuyCost(city: City, stat: Stat): Int? fun getRejectionReasons(cityConstructions: CityConstructions): Sequence - /** Returns whether was successful - can fail for units if we can't place them */ - fun postBuildEvent(cityConstructions: CityConstructions, boughtWith: Stat? = null): Boolean // Yes I'm hilarious. - /** Only checks if it has the unique to be bought with this stat, not whether it is purchasable at all */ fun canBePurchasedWithStat(city: City?, stat: Stat): Boolean { return canBePurchasedWithStatReasons(city, stat).purchasable diff --git a/core/src/com/unciv/models/ruleset/nation/CityStateType.kt b/core/src/com/unciv/models/ruleset/nation/CityStateType.kt index dde8c4c56bfba..0eefca93de295 100644 --- a/core/src/com/unciv/models/ruleset/nation/CityStateType.kt +++ b/core/src/com/unciv/models/ruleset/nation/CityStateType.kt @@ -14,7 +14,7 @@ class CityStateType: INamed { var allyBonusUniques = ArrayList() val allyBonusUniqueMap by lazy { allyBonusUniques.toUniqueMap() } private fun ArrayList.toUniqueMap() = - UniqueMap(asSequence().map { Unique(it, sourceObjectType = UniqueTarget.CityState) }) + UniqueMap(asSequence().map { Unique(it, sourceObjectType = UniqueTarget.CityState, sourceObjectName = name) }) var color: List = listOf(255,255,255) private val colorObject by lazy { colorFromRGB(color) } diff --git a/core/src/com/unciv/models/ruleset/nation/Nation.kt b/core/src/com/unciv/models/ruleset/nation/Nation.kt index 8546664e6cf8a..1bbde69ad40d2 100644 --- a/core/src/com/unciv/models/ruleset/nation/Nation.kt +++ b/core/src/com/unciv/models/ruleset/nation/Nation.kt @@ -12,6 +12,7 @@ import com.unciv.models.ruleset.unique.UniqueType import com.unciv.models.translations.squareBraceRegex import com.unciv.models.translations.tr import com.unciv.ui.components.extensions.colorFromRGB +import com.unciv.ui.images.ImageGetter import com.unciv.ui.objectdescriptions.BaseUnitDescriptions import com.unciv.ui.objectdescriptions.BuildingDescriptions import com.unciv.ui.objectdescriptions.ImprovementDescriptions @@ -94,7 +95,7 @@ class Nation : RulesetObject() { fun setTransients() { outerColorObject = colorFromRGB(outerColor) - innerColorObject = if (innerColor == null) Color.BLACK + innerColorObject = if (innerColor == null) ImageGetter.CHARCOAL else colorFromRGB(innerColor!!) forestsAndJunglesAreRoads = uniqueMap.hasUnique(UniqueType.ForestsAndJunglesAreRoads) diff --git a/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt b/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt index c1d9c31365279..c23c0f519c729 100644 --- a/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt +++ b/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt @@ -338,10 +338,10 @@ class BaseUnit : RulesetObject(), INonPerpetualConstruction { override fun isBuildable(cityConstructions: CityConstructions): Boolean = getRejectionReasons(cityConstructions).none() - override fun postBuildEvent(cityConstructions: CityConstructions, boughtWith: Stat?): Boolean { + fun construct(cityConstructions: CityConstructions, boughtWith: Stat?): MapUnit? { val civInfo = cityConstructions.city.civ val unit = civInfo.units.addUnit(this, cityConstructions.city) - ?: return false // couldn't place the unit, so there's actually no unit =( + ?: return null // couldn't place the unit, so there's actually no unit =( //movement penalty if (boughtWith != null && !civInfo.gameInfo.gameParameters.godMode && !unit.hasUnique(UniqueType.CanMoveImmediatelyOnceBought)) @@ -349,7 +349,7 @@ class BaseUnit : RulesetObject(), INonPerpetualConstruction { addConstructionBonuses(unit, cityConstructions) - return true + return unit } // This returns the name of the unit this tech upgrades this unit to, diff --git a/core/src/com/unciv/models/ruleset/validation/RulesetValidator.kt b/core/src/com/unciv/models/ruleset/validation/RulesetValidator.kt index 39357fccc52dd..5213271651110 100644 --- a/core/src/com/unciv/models/ruleset/validation/RulesetValidator.kt +++ b/core/src/com/unciv/models/ruleset/validation/RulesetValidator.kt @@ -22,6 +22,7 @@ import com.unciv.models.stats.Stats import com.unciv.models.tilesets.TileSetCache import com.unciv.models.tilesets.TileSetConfig import com.unciv.ui.images.AtlasPreview +import com.unciv.ui.images.ImageGetter import com.unciv.ui.images.Portrait import com.unciv.ui.images.PortraitPromotion @@ -724,9 +725,9 @@ class RulesetValidator(val ruleset: Ruleset) { if (innerColorLuminance > outerColorLuminance) { // inner is brighter innerLerpColor = Color.WHITE - outerLerpColor = Color.BLACK + outerLerpColor = ImageGetter.CHARCOAL } else { - innerLerpColor = Color.BLACK + innerLerpColor = ImageGetter.CHARCOAL outerLerpColor = Color.WHITE } diff --git a/core/src/com/unciv/models/tilesets/TileSetConfig.kt b/core/src/com/unciv/models/tilesets/TileSetConfig.kt index b2fa4f5fe2912..2d626cae76f6f 100644 --- a/core/src/com/unciv/models/tilesets/TileSetConfig.kt +++ b/core/src/com/unciv/models/tilesets/TileSetConfig.kt @@ -2,12 +2,13 @@ package com.unciv.models.tilesets import com.badlogic.gdx.graphics.Color import com.unciv.Constants +import com.unciv.ui.images.ImageGetter class TileSetConfig { var useColorAsBaseTerrain = false var useSummaryImages = false var unexploredTileColor: Color = Color.DARK_GRAY - var fogOfWarColor: Color = Color.BLACK + var fogOfWarColor: Color = ImageGetter.CHARCOAL /** Name of the tileset to use when this one is missing images. Null to disable. */ var fallbackTileSet: String? = Constants.defaultFallbackTileset /** Scale factor for hex images, with hex center as origin. */ diff --git a/core/src/com/unciv/ui/audio/MusicController.kt b/core/src/com/unciv/ui/audio/MusicController.kt index e65e12ca1430d..a3aa7afdd0155 100644 --- a/core/src/com/unciv/ui/audio/MusicController.kt +++ b/core/src/com/unciv/ui/audio/MusicController.kt @@ -133,6 +133,8 @@ class MusicController { Silence(true), /** Music fades to pause or is paused. Continue with chooseTrack or resume. */ Pause(showTrack = true), + /** Indicates that the music should resume when reopened */ + PauseOnShutdown, /** Fade out then [Cleanup] */ Shutdown } @@ -285,7 +287,7 @@ class MusicController { } ControllerState.Cleanup -> shutdown() // stops timer/sets Idle so this will not repeat - ControllerState.Pause -> + ControllerState.Pause, ControllerState.PauseOnShutdown -> current?.timerTick() } } @@ -522,11 +524,11 @@ class MusicController { * * @param speedFactor accelerate (>1) or slow down (<1) the fade-out. Clamped to 1/1000..1000. */ - fun pause(speedFactor: Float = 1f) { + fun pause(speedFactor: Float = 1f, onShutdown: Boolean = false) { Log.debug("MusicTrackController.pause called") - if (!state.canPause) return - state = ControllerState.Pause + if (!state.canPause) return // for example, we're already in "pause" and we activated "pause on shutdown" + state = if (onShutdown) ControllerState.PauseOnShutdown else ControllerState.Pause val fadingStep = defaultFadingStep * speedFactor.coerceIn(0.001f..1000f) current?.startFade(MusicTrackController.State.FadeOut, fadingStep) @@ -535,6 +537,10 @@ class MusicController { pauseOverlay() } + + fun resumeFromShutdown(){ + if (state == ControllerState.PauseOnShutdown) resume() + } /** * Resume playback with fade-in - from a pause will resume where playback left off, @@ -544,8 +550,10 @@ class MusicController { */ fun resume(speedFactor: Float = 1f) { Log.debug("MusicTrackController.resume called") - if (state == ControllerState.Pause && current != null - && current!!.state.canPlay && current!!.music != null) { + if ((state == ControllerState.Pause || state == ControllerState.PauseOnShutdown) + && current != null + && current!!.state.canPlay + && current!!.music != null) { val fadingStep = defaultFadingStep * speedFactor.coerceIn(0.001f..1000f) current!!.startFade(MusicTrackController.State.FadeIn, fadingStep) // this may circumvent a PlaySingle, but - diff --git a/core/src/com/unciv/ui/components/ISortableGridContentProvider.kt b/core/src/com/unciv/ui/components/ISortableGridContentProvider.kt index d3a7c8948eaa4..beea41e250727 100644 --- a/core/src/com/unciv/ui/components/ISortableGridContentProvider.kt +++ b/core/src/com/unciv/ui/components/ISortableGridContentProvider.kt @@ -87,7 +87,7 @@ interface ISortableGridContentProvider { @JvmStatic fun getCircledIcon(path: String, iconSize: Float, circleColor: Color = Color.LIGHT_GRAY) = ImageGetter.getImage(path) - .apply { color = Color.BLACK } + .apply { color = ImageGetter.CHARCOAL } .surroundWithCircle(iconSize, color = circleColor) @JvmStatic diff --git a/core/src/com/unciv/ui/components/extensions/Scene2dExtensions.kt b/core/src/com/unciv/ui/components/extensions/Scene2dExtensions.kt index 4ad273a0a2c77..b496b338a135d 100644 --- a/core/src/com/unciv/ui/components/extensions/Scene2dExtensions.kt +++ b/core/src/com/unciv/ui/components/extensions/Scene2dExtensions.kt @@ -91,7 +91,7 @@ fun colorFromHex(hexColor: Int): Color { fun colorFromRGB(r: Int, g: Int, b: Int) = Color(r / 255f, g / 255f, b / 255f, 1f) /** Create a new [Color] instance from r/g/b given as Integers in the range 0..255 in the form of a 3-element List [rgb] */ fun colorFromRGB(rgb: List) = colorFromRGB(rgb[0], rgb[1], rgb[2]) -/** Linearly interpolates between this [Color] and [BLACK][Color.BLACK] by [t] which is in the range [[0,1]]. +/** Linearly interpolates between this [Color] and [BLACK][ImageGetter.CHARCOAL] by [t] which is in the range [[0,1]]. * The result is returned as a new instance. */ fun Color.darken(t: Float): Color = Color(this).lerp(Color.BLACK, t) /** Linearly interpolates between this [Color] and [WHITE][Color.WHITE] by [t] which is in the range [[0,1]]. @@ -117,7 +117,7 @@ fun Actor.surroundWithCircle( return IconCircleGroup(size, this, resizeActor, color, circleImageLocation) } -fun Actor.surroundWithThinCircle(color: Color=Color.BLACK): IconCircleGroup = surroundWithCircle(width+2f, false, color) +fun Actor.surroundWithThinCircle(color: Color=ImageGetter.CHARCOAL): IconCircleGroup = surroundWithCircle(width+2f, false, color) fun Actor.addBorder(size: Float, color: Color, expandCell: Boolean = false): Table { @@ -206,7 +206,7 @@ private fun getSeparatorImage(color: Color) = Image(ImageGetter.getWhiteDotDrawa * Create a horizontal separator as an empty Container with a colored background. * @param colSpan Optionally override [colspan][Cell.colspan] which defaults to the current column count. */ -fun Table.addSeparator(color: Color = Color.WHITE, colSpan: Int = 0, height: Float = 2f): Cell { +fun Table.addSeparator(color: Color = BaseScreen.skin.getColor("color"), colSpan: Int = 0, height: Float = 1f): Cell { if (!cells.isEmpty && !cells.last().isEndRow) row() val separator = getSeparatorImage(color) val cell = add(separator) @@ -323,7 +323,7 @@ fun String.toCheckBox(startsOutChecked: Boolean = false, changeAction: ((Boolean } // Add a little distance between the icon and the text. 0 looks glued together, // 5 is about half an uppercase letter, and 1 about the width of the vertical line in "P". - imageCell.padRight(1f) + imageCell.padRight(Constants.defaultFontSize / 2.0f) } /** Sets the [font color][Label.LabelStyle.fontColor] on a [Label] and returns it to allow chaining */ diff --git a/core/src/com/unciv/ui/components/fonts/DiacriticSupport.kt b/core/src/com/unciv/ui/components/fonts/DiacriticSupport.kt index 04185c19096f6..e23f696117153 100644 --- a/core/src/com/unciv/ui/components/fonts/DiacriticSupport.kt +++ b/core/src/com/unciv/ui/components/fonts/DiacriticSupport.kt @@ -106,7 +106,8 @@ class DiacriticSupport( val stripCommentRegex = """^"?(.*?)"?(?:\s*#.*)?$""".toRegex() fun String?.parseDiacriticEntry(): String { if (isNullOrEmpty()) return "" - val tokens = stripCommentRegex.matchEntire(this)!!.groupValues[1].splitToSequence(' ').toMutableList() + val tokens = stripCommentRegex.matchEntire(this)!!.groupValues[1] + .splitToSequence(' ').filter { it.isNotEmpty() }.toMutableList() for (index in tokens.indices) { val token = tokens[index] when { @@ -123,7 +124,7 @@ class DiacriticSupport( val rangeStart = translations[TranslationKeys.rangeStart].parseDiacriticEntry() val rangeEnd = translations[TranslationKeys.rangeEnd].parseDiacriticEntry() val range = if (rangeStart.isEmpty() || rangeEnd.isEmpty()) CharRange.EMPTY - else rangeStart.first()..rangeEnd.first() + else rangeStart.min()..rangeEnd.max() val leftDiacritics = translations[TranslationKeys.left].parseDiacriticEntry() val rightDiacritics = translations[TranslationKeys.right].parseDiacriticEntry() val joinerDiacritics = translations[TranslationKeys.joiner].parseDiacriticEntry() diff --git a/core/src/com/unciv/ui/components/tilegroups/CityButton.kt b/core/src/com/unciv/ui/components/tilegroups/CityButton.kt index 6b11d227d0847..9b278132862f1 100644 --- a/core/src/com/unciv/ui/components/tilegroups/CityButton.kt +++ b/core/src/com/unciv/ui/components/tilegroups/CityButton.kt @@ -51,7 +51,7 @@ class InfluenceTable( setSize(width, height) background = BaseScreen.skinStrings.getUiBackground( "WorldScreen/CityButton/InfluenceBar", - tintColor = Color.BLACK) + tintColor = ImageGetter.CHARCOAL) val normalizedInfluence = max(-60f, min(influence, 60f)) / 30f @@ -115,11 +115,11 @@ private class DefenceTable(city: City) : BorderedTable( val selectedCiv = GUI.getSelectedPlayer() borderSize = 4f - bgColor = Color.BLACK + bgColor = ImageGetter.CHARCOAL bgBorderColor = when { city.civ == selectedCiv -> colorFromRGB(255, 237, 200) city.civ.isAtWarWith(selectedCiv) -> Color.RED - else -> Color.BLACK + else -> ImageGetter.CHARCOAL } pad(2f, 3f, 0f, 3f) @@ -216,7 +216,7 @@ private class CityTable(city: City, forPopup: Boolean = false) : BorderedTable( bgBorderColor = when { city.civ == selectedCiv -> colorFromRGB(233, 233, 172) city.civ.isAtWarWith(selectedCiv) -> colorFromRGB(230, 51, 0) - else -> Color.BLACK + else -> ImageGetter.CHARCOAL } borderSize = when { city.civ == selectedCiv -> 4f @@ -269,7 +269,7 @@ private class CityTable(city: City, forPopup: Boolean = false) : BorderedTable( val growthBar = ImageGetter.getProgressBarVertical(4f, 30f, if (city.isStarving()) 1.0f else growthPercentage, - if (city.isStarving()) Color.RED else CityButton.ColorGrowth, Color.BLACK, 1f) + if (city.isStarving()) Color.RED else CityButton.ColorGrowth, ImageGetter.CHARCOAL, 1f) growthBar.color.a = 0.8f val turnLabelText = when { @@ -367,7 +367,7 @@ private class CityTable(city: City, forPopup: Boolean = false) : BorderedTable( } val productionBar = ImageGetter.getProgressBarVertical(4f, 30f, percentage, - CityButton.ColorConstruction, Color.BLACK, 1f) + CityButton.ColorConstruction, ImageGetter.CHARCOAL, 1f) productionBar.setSemiProgress(CityButton.ColorConstruction.cpy().darken(0.4f), nextTurnPercentage, 1f) productionBar.color.a = 0.8f diff --git a/core/src/com/unciv/ui/components/tilegroups/YieldGroup.kt b/core/src/com/unciv/ui/components/tilegroups/YieldGroup.kt index aa3ea89815192..39a0b5df0d090 100644 --- a/core/src/com/unciv/ui/components/tilegroups/YieldGroup.kt +++ b/core/src/com/unciv/ui/components/tilegroups/YieldGroup.kt @@ -32,7 +32,7 @@ class YieldGroup : HorizontalGroup() { fun getIcon(statName: String) = ImageGetter.getStatIcon(statName).surroundWithCircle(12f) - .apply { circle.color = Color.BLACK;circle.color.a = 0.5f } + .apply { circle.color = ImageGetter.CHARCOAL; circle.color.a = 0.5f } private fun getStatIconsTable(statName: String, number: Int): Table { val table = Table() @@ -57,7 +57,7 @@ class YieldGroup : HorizontalGroup() { val group = Group().apply { setSize(22f, 22f) } val largeImage = ImageGetter.getStatIcon(statName).surroundWithCircle(22f) - .apply { circle.color = Color.BLACK;circle.color.a = 0.5f } + .apply { circle.color = ImageGetter.CHARCOAL;circle.color.a = 0.5f } group.addToCenter(largeImage) if (number > 5) { @@ -67,7 +67,7 @@ class YieldGroup : HorizontalGroup() { fontColor = Color.WHITE, alignment = Align.center ) - val amountGroup = label.surroundWithCircle(10f, true, Color.BLACK) + val amountGroup = label.surroundWithCircle(10f, true, ImageGetter.CHARCOAL) label.y -= 0.5f amountGroup.x = group.width - amountGroup.width * 3 / 4 amountGroup.y = -amountGroup.height / 4 diff --git a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayer.kt b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayer.kt index fd1a6801c7103..186d5dd61dc7e 100644 --- a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayer.kt +++ b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayer.kt @@ -18,9 +18,10 @@ abstract class TileLayer(val tileGroup: TileGroup, size: Float) : Group() { @Suppress("LeakingThis") setSize(size, size) } - - fun tile(): Tile = tileGroup.tile - fun strings(): TileSetStrings = tileGroup.tileSetStrings + + // these should not change + val tile: Tile = tileGroup.tile + val strings: TileSetStrings = tileGroup.tileSetStrings fun Image.setHexagonSize(scale: Float? = null): Image { this.setSize(tileGroup.hexagonImageWidth, this.height*tileGroup.hexagonImageWidth/this.width) diff --git a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerBorders.kt b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerBorders.kt index 725760e559393..3096b829e311a 100644 --- a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerBorders.kt +++ b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerBorders.kt @@ -128,7 +128,7 @@ class TileLayerBorders(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, val angle = sign * (atan(sign * relativeWorldPosition.y / relativeWorldPosition.x) * 180 / PI - 90.0).toFloat() val innerBorderImage = ImageGetter.getImage( - strings().orFallback { getBorder(borderShapeString,"Inner") } + strings.orFallback { getBorder(borderShapeString,"Inner") } ).setHexagonSize() addActor(innerBorderImage) @@ -137,7 +137,7 @@ class TileLayerBorders(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, innerBorderImage.color = civOuterColor val outerBorderImage = ImageGetter.getImage( - strings().orFallback { getBorder(borderShapeString, "Outer") } + strings.orFallback { getBorder(borderShapeString, "Outer") } ).setHexagonSize() addActor(outerBorderImage) diff --git a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerCityButton.kt b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerCityButton.kt index 6941f5f028385..0375b08d477d9 100644 --- a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerCityButton.kt +++ b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerCityButton.kt @@ -21,18 +21,18 @@ class TileLayerCityButton(tileGroup: TileGroup, size: Float) : TileLayer(tileGro } override fun act(delta: Float) { - if (tileGroup.tile.isCityCenter()) + if (tile.isCityCenter()) super.act(delta) } override fun hit(x: Float, y: Float, touchable: Boolean): Actor? { - if (tileGroup.tile.isCityCenter()) + if (tile.isCityCenter()) return super.hit(x, y, touchable) return null } override fun draw(batch: Batch?, parentAlpha: Float) { - if (tileGroup.tile.isCityCenter()) + if (tile.isCityCenter()) super.draw(batch, parentAlpha) } @@ -47,7 +47,7 @@ class TileLayerCityButton(tileGroup: TileGroup, size: Float) : TileLayer(tileGro override fun doUpdate(viewingCiv: Civilization?, localUniqueCache: LocalUniqueCache) { if (tileGroup !is WorldTileGroup) return - val city = tile().getCity() + val city = tile.getCity() // There used to be a city here but it was razed if (city == null && cityButton != null) { diff --git a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerFeatures.kt b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerFeatures.kt index 1cb891b8323ba..c66bbef3b8be7 100644 --- a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerFeatures.kt +++ b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerFeatures.kt @@ -51,7 +51,7 @@ class TileLayerFeatures(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup } if (roadStatus == RoadStatus.None) continue // no road image - val image = ImageGetter.getImage(strings().orFallback { roadsMap[roadStatus]!! }) + val image = ImageGetter.getImage(strings.orFallback { roadsMap[roadStatus]!! }) roadImage.image = image val relativeWorldPosition = tile.tileMap.getNeighborTilePositionAsWorldCoords(tile, neighbor) diff --git a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerMisc.kt b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerMisc.kt index 8be1edd463056..853a0aa1277b3 100644 --- a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerMisc.kt +++ b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerMisc.kt @@ -50,7 +50,7 @@ private class MapArrow(val targetTile: Tile, val arrowType: MapArrowType, val st class TileLayerMisc(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, size) { // For different unit views, we want to effectively "ignore" the terrain and color it by special view - private var terrainOverlay: Image? = ImageGetter.getImage(strings().hexagon).setHexagonSize() + private var terrainOverlay: Image? = ImageGetter.getImage(strings.hexagon).setHexagonSize() override fun act(delta: Float) {} override fun hit(x: Float, y: Float, touchable: Boolean): Actor? { @@ -108,11 +108,11 @@ class TileLayerMisc(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, si for (arrowToAdd in arrowsToDraw) { val targetTile = arrowToAdd.targetTile var targetPos = Vector2(targetTile.position) - if (tile().tileMap.mapParameters.worldWrap) + if (tile.tileMap.mapParameters.worldWrap) targetPos = HexMath.getUnwrappedNearestTo(targetPos, - tile().position, tile().tileMap.maxLongitude) + tile.position, tile.tileMap.maxLongitude) val targetRelative = HexMath.hex2WorldCoords(targetPos) - .sub(HexMath.hex2WorldCoords(tile().position)) + .sub(HexMath.hex2WorldCoords(tile.position)) val targetDistance = sqrt(targetRelative.x.pow(2) + targetRelative.y.pow(2)) val targetAngle = atan2(targetRelative.y, targetRelative.x) @@ -139,9 +139,9 @@ class TileLayerMisc(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, si private fun updateImprovementIcon(viewingCiv: Civilization?, show: Boolean) { // If improvement has changed, force new icon next time it is needed - val improvementToShow = tile().getShownImprovement(viewingCiv) + val improvementToShow = tile.getShownImprovement(viewingCiv) val newImprovementPlusPillagedID = if (improvementToShow==null) null - else if (tile().improvementIsPillaged) "$improvementToShow-Pillaged" + else if (tile.improvementIsPillaged) "$improvementToShow-Pillaged" else improvementToShow if (improvementPlusPillagedID != newImprovementPlusPillagedID) { @@ -152,7 +152,7 @@ class TileLayerMisc(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, si // Get new icon when needed if (improvementPlusPillagedID != null && show && improvementIcon == null) { - val icon = ImageGetter.getImprovementPortrait(improvementToShow!!, dim = false, isPillaged = tile().improvementIsPillaged) + val icon = ImageGetter.getImprovementPortrait(improvementToShow!!, dim = false, isPillaged = tile.improvementIsPillaged) icon.center(tileGroup) icon.x -= 22 // left icon.y -= 12 // bottom @@ -168,14 +168,14 @@ class TileLayerMisc(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, si val effectiveVisible = when { tileGroup.isForceVisible -> show show && viewingCiv == null -> true - show && tile().hasViewableResource(viewingCiv!!) -> true + show && tile.hasViewableResource(viewingCiv!!) -> true else -> false } // If resource has changed (e.g. tech researched) - force new icon next time it's needed - if (resourceName != tile().resource || resourceAmount != tile().resourceAmount) { - resourceName = tile().resource - resourceAmount = tile().resourceAmount + if (resourceName != tile.resource || resourceAmount != tile.resourceAmount) { + resourceName = tile.resource + resourceAmount = tile.resourceAmount resourceIcon?.remove() resourceIcon = null } @@ -213,8 +213,8 @@ class TileLayerMisc(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, si return if (DebugUtils.SHOW_TILE_COORDS) { - val label = this.tile().position.toPrettyString() - startingLocationIcons.add(label.toLabel(Color.BLACK.cpy().apply { a = 0.7f }, 14).apply { + val label = this.tile.position.toPrettyString() + startingLocationIcons.add(label.toLabel(ImageGetter.CHARCOAL.cpy().apply { a = 0.7f }, 14).apply { tileGroup.layerMisc.addActor(this) setOrigin(Align.center) center(tileGroup) @@ -228,7 +228,7 @@ class TileLayerMisc(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, si }) } - val tilemap = tile().tileMap + val tilemap = tile.tileMap if (tilemap.startingLocationsByNation.isEmpty()) return @@ -237,7 +237,7 @@ class TileLayerMisc(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, si // Sorted so major get precedence and to make the display deterministic, otherwise you could get // different stacking order of the same nations in the same editing session val nations = tilemap.startingLocationsByNation.asSequence() - .filter { tile() in it.value } + .filter { tile in it.value } .filter { it.key in tilemap.ruleset!!.nations } // Ignore missing nations .map { it.key to tilemap.ruleset!!.nations[it.key]!! } .sortedWith(compareBy({ it.second.isCityState }, { it.first })) @@ -265,7 +265,7 @@ class TileLayerMisc(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, si // Add a Label with the total count for this tile if (nations.size > 3) { // Tons of locations for this tile - display number in red, behind the top three - startingLocationIcons.add(nations.size.tr().toLabel(Color.BLACK.cpy().apply { a = 0.7f }, 14).apply { + startingLocationIcons.add(nations.size.tr().toLabel(ImageGetter.CHARCOAL.cpy().apply { a = 0.7f }, 14).apply { tileGroup.layerMisc.addActor(this) setOrigin(Align.center) center(tileGroup) @@ -295,9 +295,9 @@ class TileLayerMisc(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, si if (effectiveVisible) yields.run { // Update YieldGroup Icon if (tileGroup is CityTileGroup) - setStats(tile().stats.getTileStats(tileGroup.city, viewingCiv, localUniqueCache)) + setStats(tile.stats.getTileStats(tileGroup.city, viewingCiv, localUniqueCache)) else - setStats(tile().stats.getTileStats(viewingCiv, localUniqueCache)) + setStats(tile.stats.getTileStats(viewingCiv, localUniqueCache)) toFront() centerX(tileGroup) isVisible = true @@ -339,7 +339,7 @@ class TileLayerMisc(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, si private fun overlayTerrainInner(color: Color) { if (terrainOverlay == null){ - terrainOverlay = ImageGetter.getImage(strings().hexagon).setHexagonSize() + terrainOverlay = ImageGetter.getImage(strings.hexagon).setHexagonSize() addActor(terrainOverlay) } terrainOverlay?.color = color @@ -354,8 +354,8 @@ class TileLayerMisc(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, si fun addArrow(targetTile: Tile, type: MapArrowType) { - if (targetTile.position != tile().position) - arrowsToDraw.add(MapArrow(targetTile, type, strings())) + if (targetTile.position != tile.position) + arrowsToDraw.add(MapArrow(targetTile, type, strings)) } fun resetArrows() { diff --git a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerOverlay.kt b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerOverlay.kt index e272ec3d1625e..8e8a9d71339b5 100644 --- a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerOverlay.kt +++ b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerOverlay.kt @@ -22,13 +22,13 @@ class TileLayerOverlay(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, private var fog: Image? = null private var unexplored: Image? = null - private fun getHighlight() = ImageGetter.getImage(strings().highlight).setHexagonSize() // for blue and red circles/emphasis on the tile - private fun getCrosshair() = ImageGetter.getImage(strings().crosshair).setHexagonSize() // for when a unit is targeted + private fun getHighlight() = ImageGetter.getImage(strings.highlight).setHexagonSize() // for blue and red circles/emphasis on the tile + private fun getCrosshair() = ImageGetter.getImage(strings.crosshair).setHexagonSize() // for when a unit is targeted private fun getGoodCityLocationIndicator() = ImageGetter.getImage("OtherIcons/Cities").setHexagonSize(0.25f) - private fun getFog() = ImageGetter.getImage(strings().crosshatchHexagon ).setHexagonSize().apply { + private fun getFog() = ImageGetter.getImage(strings.crosshatchHexagon ).setHexagonSize().apply { color = Color.WHITE.cpy().apply { a = 0.2f } } - private fun getUnexplored() = ImageGetter.getImage(strings().unexploredTile ).setHexagonSize() + private fun getUnexplored() = ImageGetter.getImage(strings.unexploredTile ).setHexagonSize() fun orderToFront() { unexplored?.toFront() @@ -100,19 +100,19 @@ class TileLayerOverlay(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, setUnexplored(viewingCiv) - if (tile().getShownImprovement(viewingCiv) == Constants.barbarianEncampment - && tile().isExplored(viewingCiv)) + if (tile.getShownImprovement(viewingCiv) == Constants.barbarianEncampment + && tile.isExplored(viewingCiv)) showHighlight(Color.RED) } private fun setUnexplored(viewingCiv: Civilization) { - val unexploredShouldBeVisible = !viewingCiv.hasExplored(tile()) + val unexploredShouldBeVisible = !viewingCiv.hasExplored(tile) val unexploredIsVisible = unexplored != null if (unexploredIsVisible && !unexploredShouldBeVisible) { unexplored?.remove() determineVisibility() } else if (!unexploredIsVisible && unexploredShouldBeVisible - && ImageGetter.imageExists(strings().unexploredTile)) { + && ImageGetter.imageExists(strings.unexploredTile)) { unexplored = getUnexplored() addActor(unexplored) determineVisibility() diff --git a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerTerrain.kt b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerTerrain.kt index cd27ec9f050a2..cc0cd7bf927d9 100644 --- a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerTerrain.kt +++ b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerTerrain.kt @@ -28,23 +28,23 @@ class TileLayerTerrain(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, private fun getTerrainImageLocations(terrainSequence: Sequence): List { val allTerrains = terrainSequence.joinToString("+") - if (strings().tileSetConfig.ruleVariants.containsKey(allTerrains)) - return strings().tileSetConfig.ruleVariants[allTerrains]!!.map { strings().getTile(it) } - val allTerrainTile = strings().getTile(allTerrains) + if (strings.tileSetConfig.ruleVariants.containsKey(allTerrains)) + return strings.tileSetConfig.ruleVariants[allTerrains]!!.map { strings.getTile(it) } + val allTerrainTile = strings.getTile(allTerrains) return if (ImageGetter.imageExists(allTerrainTile)) listOf(allTerrainTile) - else terrainSequence.map { strings().orFallback { getTile(it) } }.toList() + else terrainSequence.map { strings.orFallback { getTile(it) } }.toList() } private fun getImprovementAndResourceImages(resourceAndImprovementSequence: Sequence): List { - val altogether = resourceAndImprovementSequence.joinToString("+").let { strings().getTile(it) } + val altogether = resourceAndImprovementSequence.joinToString("+").let { strings.getTile(it) } return if (ImageGetter.imageExists(altogether)) listOf(altogether) - else resourceAndImprovementSequence.map { strings().orFallback { getTile(it) } }.toList() + else resourceAndImprovementSequence.map { strings.orFallback { getTile(it) } }.toList() } private fun usePillagedImprovementImage(tile: Tile, viewingCiv: Civilization?): Boolean { if (!tile.improvementIsPillaged || !UncivGame.Current.settings.showPixelImprovements) return false val shownImprovement = tile.getShownImprovement(viewingCiv) ?: return false - return ImageGetter.imageExists(strings().getTile("$shownImprovement-Pillaged")) + return ImageGetter.imageExists(strings.getTile("$shownImprovement-Pillaged")) } private fun getTileBaseImageLocations(viewingCiv: Civilization?): List { @@ -52,10 +52,10 @@ class TileLayerTerrain(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, val isForceVisible = tileGroup.isForceVisible if (viewingCiv == null && !isForceVisible) - return strings().hexagonList + return strings.hexagonList - val baseHexagon = if (strings().tileSetConfig.useColorAsBaseTerrain) - listOf(strings().hexagon) + val baseHexagon = if (strings.tileSetConfig.useColorAsBaseTerrain) + listOf(strings.hexagon) else emptyList() val tile = tileGroup.tile @@ -80,14 +80,14 @@ class TileLayerTerrain(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, else sequenceOf(tile.baseTerrain) + tile.terrainFeatures.asSequence() val edgeImages = getEdgeTileLocations() val allTogether = (terrainImages + resourceAndImprovementSequence).joinToString("+") - val allTogetherLocation = strings().getTile(allTogether) + val allTogetherLocation = strings.getTile(allTogether) // If the tilesetconfig *explicitly* lists the terrains+improvements etc, we can't know where in that list to place the edges // So we default to placing them over everything else. // If there is no explicit list, then we can know to place them between the terrain and the improvement return when { - strings().tileSetConfig.ruleVariants[allTogether] != null -> baseHexagon + - strings().tileSetConfig.ruleVariants[allTogether]!!.map { strings().getTile(it) } + edgeImages + strings.tileSetConfig.ruleVariants[allTogether] != null -> baseHexagon + + strings.tileSetConfig.ruleVariants[allTogether]!!.map { strings.getTile(it) } + edgeImages ImageGetter.imageExists(allTogetherLocation) -> baseHexagon + allTogetherLocation + edgeImages tile.naturalWonder != null -> getNaturalWonderBackupImage(baseHexagon) + edgeImages else -> baseHexagon + getTerrainImageLocations(terrainImages) + edgeImages + getImprovementAndResourceImages(resourceAndImprovementSequence) @@ -95,27 +95,27 @@ class TileLayerTerrain(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, } private fun getEdgeTileLocations(): Sequence { - val tile = tile() if (!tile.isTilemapInitialized()) // fake tile return emptySequence() return tile.neighbors .flatMap { getMatchingEdges(tile, it) } } - private fun getMatchingEdges(originTile: Tile, neighborTile: Tile): List{ + private fun getMatchingEdges(originTile: Tile, neighborTile: Tile): Sequence{ val vectorToNeighbor = neighborTile.position.cpy().sub(originTile.position) val direction = NeighborDirection.fromVector(vectorToNeighbor) - ?: return emptyList() - val possibleEdgeFiles = strings().edgeImagesByPosition[direction] ?: return emptyList() + ?: return emptySequence() + + val possibleEdgeImages = strings.edgeImagesByPosition[direction] ?: return emptySequence() // Required for performance - full matchesFilter is too expensive for something that needs to run every update() fun matchesFilterMinimal(originTile: Tile, filter: String): Boolean { - if (originTile.allTerrains.any { it.name == filter }) return true + if (originTile.cachedTerrainData.terrainNameSet.contains(filter)) return true if (originTile.getBaseTerrain().type.name == filter) return true return false } - return possibleEdgeFiles.filter { + return possibleEdgeImages.asSequence().filter { if (!matchesFilterMinimal(originTile, it.originTileFilter)) return@filter false if (!matchesFilterMinimal(neighborTile, it.destinationTileFilter)) return@filter false return@filter true @@ -140,7 +140,7 @@ class TileLayerTerrain(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, val locationToCheck = if (tileGroup.tile.owningCity != null) - strings().getOwnedTileImageLocation(baseLocation, tileGroup.tile.getOwner()!!) + strings.getOwnedTileImageLocation(baseLocation, tileGroup.tile.getOwner()!!) else baseLocation val existingImages = ArrayList() @@ -160,8 +160,8 @@ class TileLayerTerrain(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, tileBaseImages.add(image) addActor(image) - if (strings().tileSetConfig.tileScales.isNotEmpty()) { - val scale = strings().tileSetConfig.tileScales[baseLocation.takeLastWhile { it != '/' }] + if (strings.tileSetConfig.tileScales.isNotEmpty()) { + val scale = strings.tileSetConfig.tileScales[baseLocation.takeLastWhile { it != '/' }] image.setHexagonSize(scale) } else { image.setHexagonSize() @@ -175,21 +175,21 @@ class TileLayerTerrain(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, val colorPillagedTile = isViewable && tile.isPillaged() && !usePillagedImprovementImage(tile, viewingCiv) val baseTerrainColor = when { - colorPillagedTile && strings().tileSetConfig.useColorAsBaseTerrain -> tile.getBaseTerrain() + colorPillagedTile && strings.tileSetConfig.useColorAsBaseTerrain -> tile.getBaseTerrain() .getColor().lerp(Color.BROWN, 0.6f) colorPillagedTile -> Color.WHITE.cpy().lerp(Color.BROWN, 0.6f) - strings().tileSetConfig.useColorAsBaseTerrain && !isViewable -> tile.getBaseTerrain() - .getColor().lerp(strings().tileSetConfig.fogOfWarColor, 0.6f) - strings().tileSetConfig.useColorAsBaseTerrain -> tile.getBaseTerrain() + strings.tileSetConfig.useColorAsBaseTerrain && !isViewable -> tile.getBaseTerrain() + .getColor().lerp(strings.tileSetConfig.fogOfWarColor, 0.6f) + strings.tileSetConfig.useColorAsBaseTerrain -> tile.getBaseTerrain() .getColor() - !isViewable -> Color.WHITE.cpy().lerp(strings().tileSetConfig.fogOfWarColor, 0.6f) + !isViewable -> Color.WHITE.cpy().lerp(strings.tileSetConfig.fogOfWarColor, 0.6f) else -> Color.WHITE.cpy() } val color = when { colorPillagedTile -> Color.WHITE.cpy().lerp(Color.RED.cpy(), 0.5f) !isViewable -> Color.WHITE.cpy() - .lerp(strings().tileSetConfig.fogOfWarColor, 0.6f) + .lerp(strings.tileSetConfig.fogOfWarColor, 0.6f) else -> Color.WHITE.cpy() } @@ -198,9 +198,9 @@ class TileLayerTerrain(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, } private fun updateRivers(displayBottomRight: Boolean, displayBottom: Boolean, displayBottomLeft: Boolean) { - bottomRightRiverImage = updateRiver(bottomRightRiverImage,displayBottomRight, strings().bottomRightRiver) - bottomRiverImage = updateRiver(bottomRiverImage, displayBottom, strings().bottomRiver) - bottomLeftRiverImage = updateRiver(bottomLeftRiverImage, displayBottomLeft, strings().bottomLeftRiver) + bottomRightRiverImage = updateRiver(bottomRightRiverImage,displayBottomRight, strings.bottomRightRiver) + bottomRiverImage = updateRiver(bottomRiverImage, displayBottom, strings.bottomRiver) + bottomLeftRiverImage = updateRiver(bottomLeftRiverImage, displayBottomLeft, strings.bottomLeftRiver) } private fun updateRiver(currentImage: Image?, shouldDisplay: Boolean, imageName: String): Image? { @@ -244,8 +244,8 @@ class TileLayerTerrain(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, } private fun getNaturalWonderBackupImage(baseHexagon: List): List = - if (strings().tileSetConfig.useSummaryImages) baseHexagon + strings().naturalWonder - else baseHexagon + strings().orFallback{ getTile(tileGroup.tile.naturalWonder!!) } + if (strings.tileSetConfig.useSummaryImages) baseHexagon + strings.naturalWonder + else baseHexagon + strings.orFallback{ getTile(tileGroup.tile.naturalWonder!!) } } @@ -253,14 +253,18 @@ enum class NeighborDirection { Top, TopRight, TopLeft, Bottom, BottomLeft, BottomRight; companion object { - fun fromVector(vector2: Vector2): NeighborDirection? = when { - vector2.x == 1f && vector2.y == 1f -> Top - vector2.x == 0f && vector2.y == 1f -> TopRight - vector2.x == 1f && vector2.y == 0f -> TopLeft - vector2.x == -1f && vector2.y == -1f -> Bottom - vector2.x == 0f && vector2.y == -1f -> BottomLeft - vector2.x == -1f && vector2.y == 0f -> BottomRight - else -> null + fun fromVector(vector2: Vector2): NeighborDirection? { + val x = vector2.x.toInt() + val y = vector2.y.toInt() + return when (x) { + 1 -> if (y == 1) Top // x == 1 && y == 1 + else TopLeft // x == 1 && y == 0 + 0 -> if (y == 1) TopRight // x == 0 && y == 1 + else BottomLeft // x == 0 && y == -1 + -1 -> if (y == -1) Bottom // x == -1 && y == -1 + else BottomRight // x == -1 && y == 0 + else -> null + } } } } diff --git a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerUnitFlag.kt b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerUnitFlag.kt index f4cfe9ba5f460..0c82f5a7da763 100644 --- a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerUnitFlag.kt +++ b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerUnitFlag.kt @@ -19,6 +19,7 @@ import com.unciv.ui.screens.basescreen.BaseScreen /** The unit flag is the synbol that appears behind the map unit - circle regularly, shield when defending, etc */ class TileLayerUnitFlag(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, size) { + private var noIcons = true private var civilianUnitIcon: UnitIconGroup? = null private var militaryUnitIcon: UnitIconGroup? = null @@ -27,14 +28,17 @@ class TileLayerUnitFlag(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup } override fun act(delta: Float) { // No 'snapshotting' since we trust it will remain the same - if (civilianUnitIcon == null && militaryUnitIcon == null) + if (noIcons) return for (child in children) child.act(delta) } // For perf profiling - override fun draw(batch: Batch?, parentAlpha: Float) = super.draw(batch, parentAlpha) + override fun draw(batch: Batch?, parentAlpha: Float) { + if (noIcons) return + super.draw(batch, parentAlpha) + } private fun clearSlots() { civilianUnitIcon?.remove() @@ -139,6 +143,7 @@ class TileLayerUnitFlag(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup civilianUnitIcon = newUnitIcon(0, tileGroup.tile.civilianUnit, isCivilianShown, viewingCiv) militaryUnitIcon = newUnitIcon(1, tileGroup.tile.militaryUnit, isMilitaryShown, viewingCiv) + noIcons = civilianUnitIcon == null && militaryUnitIcon == null } override fun doUpdate(viewingCiv: Civilization?, localUniqueCache: LocalUniqueCache) { @@ -146,7 +151,7 @@ class TileLayerUnitFlag(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup fillSlots(viewingCiv) if (viewingCiv != null) { - val unitsInTile = tile().getUnits() + val unitsInTile = tile.getUnits() val shouldBeHighlighted = unitsInTile.any() && unitsInTile.first().civ.isAtWarWith(viewingCiv) && isViewable(viewingCiv) @@ -159,6 +164,7 @@ class TileLayerUnitFlag(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup fun reset() { clearSlots() + noIcons = true } } diff --git a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerUnitSprite.kt b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerUnitSprite.kt index 2bce5c94304de..fc55f352a19fd 100644 --- a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerUnitSprite.kt +++ b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerUnitSprite.kt @@ -41,12 +41,17 @@ class TileLayerUnitSprite(tileGroup: TileGroup, size: Float) : TileLayer(tileGro var nationName = "" if (unit != null && isShown && UncivGame.Current.settings.showPixelUnits) { - location = strings().getUnitImageLocation(unit) + location = strings.getUnitImageLocation(unit) nationName = "${unit.civ.civName}-" } - if ((currentSlot?.currentImageLocation ?: "") == "$nationName$location") return currentSlot // No-op - if (location == "" || !ImageGetter.imageExists(location)) return null // No such image + if (currentSlot == null && location == "") return null // No-op - had none, has none + if (currentSlot?.currentImageLocation == "$nationName$location") return currentSlot // No-op - had, has + + if (location == "" || !ImageGetter.imageExists(location)){ + currentSlot?.spriteGroup?.remove() + return null + } val slot = currentSlot ?: UnitSpriteSlot() .apply { this@TileLayerUnitSprite.addActor(spriteGroup) } diff --git a/core/src/com/unciv/ui/components/widgets/BorderedTable.kt b/core/src/com/unciv/ui/components/widgets/BorderedTable.kt index 546ebc3016751..9d4065ddab647 100644 --- a/core/src/com/unciv/ui/components/widgets/BorderedTable.kt +++ b/core/src/com/unciv/ui/components/widgets/BorderedTable.kt @@ -4,6 +4,7 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.Batch import com.badlogic.gdx.scenes.scene2d.ui.Table import com.badlogic.gdx.scenes.scene2d.utils.Drawable +import com.unciv.ui.images.ImageGetter import com.unciv.ui.screens.basescreen.BaseScreen /** @@ -22,7 +23,7 @@ open class BorderedTable( * that parser still works! */ - var bgColor: Color = Color.BLACK + var bgColor: Color = ImageGetter.CHARCOAL var bgBorderColor: Color = Color.WHITE var borderSize: Float = 5f diff --git a/core/src/com/unciv/ui/components/widgets/ShadowedLabel.kt b/core/src/com/unciv/ui/components/widgets/ShadowedLabel.kt index db437ba023b02..b3417dd5793bf 100644 --- a/core/src/com/unciv/ui/components/widgets/ShadowedLabel.kt +++ b/core/src/com/unciv/ui/components/widgets/ShadowedLabel.kt @@ -8,6 +8,7 @@ import com.badlogic.gdx.utils.Align import com.unciv.Constants import com.unciv.models.translations.tr import com.unciv.ui.components.extensions.toLabel +import com.unciv.ui.images.ImageGetter /** * A widget containing two [Label]s superimposed with an offset to create a shadow effect. @@ -28,7 +29,7 @@ class ShadowedLabel( text: String, fontSize: Int = Constants.defaultFontSize, labelColor: Color = Color.WHITE, - shadowColor: Color = Color.BLACK, + shadowColor: Color = ImageGetter.CHARCOAL, hideIcons: Boolean = true, shadowOffset: Float = 1f ) : Stack() { diff --git a/core/src/com/unciv/ui/components/widgets/UncivSlider.kt b/core/src/com/unciv/ui/components/widgets/UncivSlider.kt index 9cc463d92b54e..d911d237a049c 100644 --- a/core/src/com/unciv/ui/components/widgets/UncivSlider.kt +++ b/core/src/com/unciv/ui/components/widgets/UncivSlider.kt @@ -27,6 +27,7 @@ import com.unciv.ui.components.extensions.toLabel import com.unciv.ui.components.input.onClick import com.unciv.ui.components.widgets.UncivSlider.Companion.formatPercent import com.unciv.ui.images.IconCircleGroup +import com.unciv.ui.images.ImageGetter import com.unciv.ui.screens.basescreen.BaseScreen import kotlin.math.abs import kotlin.math.sign @@ -155,7 +156,7 @@ class UncivSlider ( stepChanged() // Initialize tip formatting if (plusMinus) { - minusButton = "-".toLabel(Color.BLACK, plusMinusFontSize) + minusButton = "-".toLabel(ImageGetter.CHARCOAL, plusMinusFontSize) .apply { setAlignment(Align.center) } .surroundWithCircle(plusMinusCircleSize) minusButton.onClick { @@ -171,7 +172,7 @@ class UncivSlider ( if (plusMinus) { if (vertical) row() - plusButton = "+".toLabel(Color.BLACK, plusMinusFontSize) + plusButton = "+".toLabel(ImageGetter.CHARCOAL, plusMinusFontSize) .apply { setAlignment(Align.center) } .surroundWithCircle(plusMinusCircleSize) plusButton.onClick { diff --git a/core/src/com/unciv/ui/images/ImageGetter.kt b/core/src/com/unciv/ui/images/ImageGetter.kt index 9dd8a680c02ee..20ca0e7e5c451 100644 --- a/core/src/com/unciv/ui/images/ImageGetter.kt +++ b/core/src/com/unciv/ui/images/ImageGetter.kt @@ -47,6 +47,7 @@ import kotlin.math.sqrt object ImageGetter { const val whiteDotLocation = "OtherIcons/whiteDot" const val circleLocation = "OtherIcons/Circle" + val CHARCOAL = Color(0x111111FF) // We use texture atlases to minimize texture swapping - see https://yairm210.medium.com/the-libgdx-performance-guide-1d068a84e181 lateinit var atlas: TextureAtlas @@ -254,7 +255,7 @@ object ImageGetter { fun getRandomNationPortrait(size: Float): Portrait = PortraitNation(Constants.random, size) - fun getUnitIcon(unit: BaseUnit, color: Color = Color.BLACK): Image = + fun getUnitIcon(unit: BaseUnit, color: Color = CHARCOAL): Image = if (imageExists("UnitIcons/${unit.name}")) getImage("UnitIcons/${unit.name}").apply { this.color = color } else getImage("UnitTypeIcons/${unit.type}").apply { this.color = color } @@ -430,12 +431,12 @@ object ImageGetter { } healthBar.add(healthPartOfBar).size(healthBarSize * healthPercent, height) - val emptyPartOfBar = getDot(Color.BLACK) + val emptyPartOfBar = getDot(CHARCOAL) healthBar.add(emptyPartOfBar).size(healthBarSize * (1 - healthPercent), height) healthBar.pad(1f) healthBar.pack() - healthBar.background = BaseScreen.skinStrings.getUiBackground("General/HealthBar", tintColor = Color.BLACK) + healthBar.background = BaseScreen.skinStrings.getUiBackground("General/HealthBar", tintColor = CHARCOAL) return healthBar } diff --git a/core/src/com/unciv/ui/images/Portrait.kt b/core/src/com/unciv/ui/images/Portrait.kt index 8fa6daa9703c7..4a521943a8752 100644 --- a/core/src/com/unciv/ui/images/Portrait.kt +++ b/core/src/com/unciv/ui/images/Portrait.kt @@ -147,7 +147,7 @@ class PortraitResource(name: String, size: Float, amount: Int = 0) : Portrait(Ty fontSize = 8, fontColor = Color.WHITE, alignment = Align.center) - val amountGroup = label.surroundWithCircle(size/2, true, Color.BLACK) + val amountGroup = label.surroundWithCircle(size/2, true, ImageGetter.CHARCOAL) label.y -= 0.5f amountGroup.x = width - amountGroup.width * 3 / 4 @@ -164,7 +164,7 @@ class PortraitResource(name: String, size: Float, amount: Int = 0) : Portrait(Ty class PortraitTech(name: String, size: Float) : Portrait(Type.Tech, name, size) { override fun getDefaultOuterBackgroundTint(): Color = getDefaultImageTint() override fun getDefaultImageTint(): Color = - ruleset.eras[ruleset.technologies[imageName]?.era()]?.getColor()?.darken(0.6f) ?: Color.BLACK + ruleset.eras[ruleset.technologies[imageName]?.era()]?.getColor()?.darken(0.6f) ?: ImageGetter.CHARCOAL } class PortraitUnit(name: String, size: Float) : Portrait(Type.Unit, name, size) { @@ -180,15 +180,15 @@ class PortraitUnavailableWonderForTechTree(name: String, size: Float) : Portrait } class PortraitUnique(name: String, size: Float) : Portrait(Type.Unique, name, size) { - override fun getDefaultImageTint(): Color = Color.BLACK + override fun getDefaultImageTint(): Color = ImageGetter.CHARCOAL } class PortraitReligion(name: String, size: Float) : Portrait(Type.Religion, name, size) { - override fun getDefaultImageTint(): Color = Color.BLACK + override fun getDefaultImageTint(): Color = ImageGetter.CHARCOAL } class PortraitUnitAction(name: String, size: Float) : Portrait(Type.UnitAction, name, size) { - override fun getDefaultImageTint(): Color = Color.BLACK + override fun getDefaultImageTint(): Color = ImageGetter.CHARCOAL } class PortraitImprovement(name: String, size: Float, dim: Boolean = false, isPillaged: Boolean = false) : Portrait(Type.Improvement, name, size) { @@ -236,7 +236,7 @@ class PortraitNation(name: String, size: Float) : Portrait(Type.Nation, name, si } override fun getDefaultInnerBackgroundTint(): Color = - ruleset.nations[imageName]?.getOuterColor() ?: Color.BLACK + ruleset.nations[imageName]?.getOuterColor() ?: ImageGetter.CHARCOAL override fun getDefaultOuterBackgroundTint(): Color = getDefaultImageTint() override fun getDefaultImageTint(): Color = ruleset.nations[imageName]?.getInnerColor() ?: Color.WHITE diff --git a/core/src/com/unciv/ui/popups/AskNumberPopup.kt b/core/src/com/unciv/ui/popups/AskNumberPopup.kt index 3ef132a5d683a..d7cf8229554a5 100644 --- a/core/src/com/unciv/ui/popups/AskNumberPopup.kt +++ b/core/src/com/unciv/ui/popups/AskNumberPopup.kt @@ -30,7 +30,7 @@ import com.unciv.ui.screens.basescreen.BaseScreen class AskNumberPopup( screen: BaseScreen, label: String = "Please enter a number", - icon: IconCircleGroup = ImageGetter.getImage("OtherIcons/Pencil").apply { this.color = Color.BLACK }.surroundWithCircle(80f), + icon: IconCircleGroup = ImageGetter.getImage("OtherIcons/Pencil").apply { this.color = ImageGetter.CHARCOAL }.surroundWithCircle(80f), defaultValue: String = "", amountButtons: List = listOf(), bounds: IntRange = IntRange(Int.MIN_VALUE, Int.MAX_VALUE), diff --git a/core/src/com/unciv/ui/popups/AskTextPopup.kt b/core/src/com/unciv/ui/popups/AskTextPopup.kt index 4a6ce30160f4a..fa12abf5ca619 100644 --- a/core/src/com/unciv/ui/popups/AskTextPopup.kt +++ b/core/src/com/unciv/ui/popups/AskTextPopup.kt @@ -24,7 +24,7 @@ import com.unciv.ui.components.extensions.toLabel class AskTextPopup( screen: BaseScreen, label: String = "Please enter some text", - icon: Group = ImageGetter.getImage("OtherIcons/Pencil").apply { this.color = Color.BLACK }.surroundWithCircle(80f), + icon: Group = ImageGetter.getImage("OtherIcons/Pencil").apply { this.color = ImageGetter.CHARCOAL }.surroundWithCircle(80f), defaultText: String = "", errorText: String = "Invalid input! Please enter a different string.", maxLength: Int = 32, diff --git a/core/src/com/unciv/ui/popups/options/AdvancedTab.kt b/core/src/com/unciv/ui/popups/options/AdvancedTab.kt index ed8ff68e9dcab..f42f21286fcb8 100644 --- a/core/src/com/unciv/ui/popups/options/AdvancedTab.kt +++ b/core/src/com/unciv/ui/popups/options/AdvancedTab.kt @@ -53,7 +53,7 @@ class AdvancedTab( defaults().pad(5f) addAutosaveTurnsSelectBox() - addSeparator(Color.GRAY) + addSeparator() if (Display.hasCutout()) addCutoutCheckbox() @@ -63,14 +63,14 @@ class AdvancedTab( addFontFamilySelect(onFontChange) addFontSizeMultiplier(onFontChange) - addSeparator(Color.GRAY) + addSeparator() addMaxZoomSlider() addEasterEggsCheckBox() addEnlargeNotificationsCheckBox() - addSeparator(Color.GRAY) + addSeparator() addSetUserId() diff --git a/core/src/com/unciv/ui/popups/options/ModCheckTab.kt b/core/src/com/unciv/ui/popups/options/ModCheckTab.kt index f165833369db7..f05a2c947837a 100644 --- a/core/src/com/unciv/ui/popups/options/ModCheckTab.kt +++ b/core/src/com/unciv/ui/popups/options/ModCheckTab.kt @@ -120,7 +120,7 @@ class ModCheckTab( else -> "OtherIcons/Checkmark" } val icon = ImageGetter.getImage(iconName) - .apply { color = Color.BLACK } + .apply { color = ImageGetter.CHARCOAL } .surroundWithCircle(30f, color = iconColor) val expanderTab = ExpanderTab(mod.name, icon = icon, startsOutOpened = mod.name in openedExpanderTitles) { diff --git a/core/src/com/unciv/ui/popups/options/MultiplayerTab.kt b/core/src/com/unciv/ui/popups/options/MultiplayerTab.kt index 6b41aa7044ff5..f087645805d4e 100644 --- a/core/src/com/unciv/ui/popups/options/MultiplayerTab.kt +++ b/core/src/com/unciv/ui/popups/options/MultiplayerTab.kt @@ -32,19 +32,18 @@ import java.time.temporal.ChronoUnit fun multiplayerTab( optionsPopup: OptionsPopup -): Table { - val tab = Table(BaseScreen.skin) - tab.pad(10f) - tab.defaults().pad(5f) +) = Table(BaseScreen.skin).apply { + pad(10f) + defaults().pad(5f) val settings = optionsPopup.settings optionsPopup.addCheckbox( - tab, "Enable multiplayer status button in singleplayer games", + this, "Enable multiplayer status button in singleplayer games", settings.multiplayer::statusButtonInSinglePlayer, updateWorld = true ) - addSeparator(tab) + addSeparator() val curRefreshSelect = RefreshSelect( "Update status of currently played game every:", @@ -53,7 +52,7 @@ fun multiplayerTab( GameSetting.MULTIPLAYER_CURRENT_GAME_REFRESH_DELAY, settings ) - addSelectAsSeparateTable(tab, curRefreshSelect) + addSelectAsSeparateTable(this, curRefreshSelect) val allRefreshSelect = RefreshSelect( "In-game, update status of all games every:", @@ -62,39 +61,37 @@ fun multiplayerTab( GameSetting.MULTIPLAYER_ALL_GAME_REFRESH_DELAY, settings ) - addSelectAsSeparateTable(tab, allRefreshSelect) + addSelectAsSeparateTable(this, allRefreshSelect) - addSeparator(tab) + addSeparator() // at the moment the notification service only exists on Android val turnCheckerSelect: RefreshSelect? if (Gdx.app.type == Application.ApplicationType.Android) { - turnCheckerSelect = addTurnCheckerOptions(tab, optionsPopup) - addSeparator(tab) + turnCheckerSelect = addTurnCheckerOptions(this, optionsPopup) + addSeparator() } else { turnCheckerSelect = null } val sounds = IMediaFinder.LabeledSounds().getLabeledSounds() - addSelectAsSeparateTable(tab, SettingsSelect("Sound notification for when it's your turn in your currently open game:", + addSelectAsSeparateTable(this, SettingsSelect("Sound notification for when it's your turn in your currently open game:", sounds, GameSetting.MULTIPLAYER_CURRENT_GAME_TURN_NOTIFICATION_SOUND, settings )) - addSelectAsSeparateTable(tab, SettingsSelect("Sound notification for when it's your turn in any other game:", + addSelectAsSeparateTable(this, SettingsSelect("Sound notification for when it's your turn in any other game:", sounds, GameSetting.MULTIPLAYER_OTHER_GAME_TURN_NOTIFICATION_SOUND, settings )) - addSeparator(tab) + addSeparator() - addMultiplayerServerOptions(tab, optionsPopup, + addMultiplayerServerOptions(this, optionsPopup, listOfNotNull(curRefreshSelect, allRefreshSelect, turnCheckerSelect) ) - - return tab } private fun addMultiplayerServerOptions( @@ -155,7 +152,7 @@ private fun addMultiplayerServerOptions( popup.reuseWith("Failed!", true) } } - }).row() + }).colspan(2).row() if (UncivGame.Current.onlineMultiplayer.multiplayerServer.featureSet.authVersion > 0) { val passwordTextField = UncivTextField( @@ -362,6 +359,3 @@ private fun addSelectAsSeparateTable(tab: Table, settingsSelect: SettingsSelect< tab.add(table).growX().fillX().row() } -private fun addSeparator(tab: Table) { - tab.addSeparator(BaseScreen.skinStrings.skinConfig.baseColor.brighten(0.1f)) -} diff --git a/core/src/com/unciv/ui/screens/UniqueBuilderScreen.kt b/core/src/com/unciv/ui/screens/UniqueBuilderScreen.kt index 9717998bf0869..a0a2dc744a202 100644 --- a/core/src/com/unciv/ui/screens/UniqueBuilderScreen.kt +++ b/core/src/com/unciv/ui/screens/UniqueBuilderScreen.kt @@ -85,7 +85,7 @@ class UniqueTable(isMainUnique: Boolean, val ruleset: Ruleset, stage: Stage, .filter { it.modifierType != UniqueTarget.ModifierType.None } defaults().pad(10f) - background = ImageGetter.getWhiteDotDrawable().tint(Color.BLACK.cpy().apply { a=0.3f }) + background = ImageGetter.getWhiteDotDrawable().tint(ImageGetter.CHARCOAL.cpy().apply { a=0.3f }) val uniqueTargetSelectBoxTable = Table().apply { defaults().pad(5f) } uniqueTargetsSelectBox = SelectBox(BaseScreen.skin) uniqueTargetsSelectBox.setItems(uniqueTargets) diff --git a/core/src/com/unciv/ui/screens/basescreen/BaseScreen.kt b/core/src/com/unciv/ui/screens/basescreen/BaseScreen.kt index bbb9eb1a57596..d7bfa5e68d3f9 100644 --- a/core/src/com/unciv/ui/screens/basescreen/BaseScreen.kt +++ b/core/src/com/unciv/ui/screens/basescreen/BaseScreen.kt @@ -15,6 +15,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.TextButton import com.badlogic.gdx.scenes.scene2d.ui.TextField import com.badlogic.gdx.scenes.scene2d.utils.Drawable import com.badlogic.gdx.utils.viewport.ExtendViewport +import com.unciv.GameStartScreen import com.unciv.UncivGame import com.unciv.models.TutorialTrigger import com.unciv.models.metadata.BaseRuleset @@ -60,7 +61,7 @@ abstract class BaseScreen : Screen { /** The ExtendViewport sets the _minimum_(!) world size - the actual world size will be larger, fitted to screen/window aspect ratio. */ stage = UncivStage(ExtendViewport(height, height)) - if (enableSceneDebug && this !is CrashScreen) { + if (enableSceneDebug && this !is CrashScreen && this !is GameStartScreen) { stage.setDebugUnderMouse(true) stage.setDebugTableUnderMouse(true) stage.setDebugParentUnderMouse(true) diff --git a/core/src/com/unciv/ui/screens/cityscreen/BuyButtonFactory.kt b/core/src/com/unciv/ui/screens/cityscreen/BuyButtonFactory.kt index 2057050c4bb64..7c3f6e7c63096 100644 --- a/core/src/com/unciv/ui/screens/cityscreen/BuyButtonFactory.kt +++ b/core/src/com/unciv/ui/screens/cityscreen/BuyButtonFactory.kt @@ -76,7 +76,8 @@ class BuyButtonFactory(val cityScreen: CityScreen) { button.disable() buyButtonOnClick(construction, stat) } - button.isEnabled = cityScreen.canCityBeChanged() && + // allow puppets, since isConstructionPurchaseAllowed handles that and exceptions to that rule + button.isEnabled = cityScreen.canChangeState && city.cityConstructions.isConstructionPurchaseAllowed(construction, stat, constructionBuyCost) preferredBuyStat = stat // Not very intelligent, but the least common currency "wins" } diff --git a/core/src/com/unciv/ui/screens/cityscreen/CityConstructionsTable.kt b/core/src/com/unciv/ui/screens/cityscreen/CityConstructionsTable.kt index ef2c7d655ac0e..3e67358749f0f 100644 --- a/core/src/com/unciv/ui/screens/cityscreen/CityConstructionsTable.kt +++ b/core/src/com/unciv/ui/screens/cityscreen/CityConstructionsTable.kt @@ -93,7 +93,7 @@ class CityConstructionsTable(private val cityScreen: CityScreen) { constructionsQueueScrollPane.setOverscroll(false, false) constructionsQueueTable.background = BaseScreen.skinStrings.getUiBackground( "CityScreen/CityConstructionTable/ConstructionsQueueTable", - tintColor = Color.BLACK + tintColor = ImageGetter.CHARCOAL ) upperTable.defaults().left().top() @@ -106,7 +106,7 @@ class CityConstructionsTable(private val cityScreen: CityScreen) { availableConstructionsScrollPane.setOverscroll(false, false) availableConstructionsTable.background = BaseScreen.skinStrings.getUiBackground( "CityScreen/CityConstructionTable/AvailableConstructionsTable", - tintColor = Color.BLACK + tintColor = ImageGetter.CHARCOAL ) lowerTableScrollCell = lowerTable.add(availableConstructionsScrollPane).bottom() lowerTable.row() @@ -383,7 +383,7 @@ class CityConstructionsTable(private val cityScreen: CityScreen) { else BaseScreen.skinStrings.getUiBackground( "CityScreen/CityConstructionTable/QueueEntry", - tintColor = Color.BLACK + tintColor = ImageGetter.CHARCOAL ) } @@ -442,7 +442,7 @@ class CityConstructionsTable(private val cityScreen: CityScreen) { if (!cannotAddConstructionToQueue(construction, cityScreen.city, cityScreen.city.cityConstructions)) { val addToQueueButton = ImageGetter.getImage("OtherIcons/New") - .apply { color = Color.BLACK }.surroundWithCircle(40f) + .apply { color = ImageGetter.CHARCOAL }.surroundWithCircle(40f) addToQueueButton.onClick(UncivSound.Silent) { // Since the pickConstructionButton.onClick adds the construction if it's selected, // this effectively adds the construction even if it's unselected @@ -502,7 +502,7 @@ class CityConstructionsTable(private val cityScreen: CityScreen) { // Lazy because possibly not needed (highlight true, clearOthers false) and slightly costly BaseScreen.skinStrings.getUiBackground( "CityScreen/CityConstructionTable/PickConstructionButton", - tintColor = Color.BLACK + tintColor = ImageGetter.CHARCOAL ) } @@ -585,7 +585,7 @@ class CityConstructionsTable(private val cityScreen: CityScreen) { movePriority: (Int) -> Int ): Table { val button = Table() - button.add(ImageGetter.getArrowImage(arrowDirection).apply { color = Color.BLACK }.surroundWithCircle(40f)) + button.add(ImageGetter.getArrowImage(arrowDirection).apply { color = ImageGetter.CHARCOAL }.surroundWithCircle(40f)) button.touchable = Touchable.enabled // Don't bind the queue reordering keys here - those should affect only the selected entry, not all of them button.onActivation { diff --git a/core/src/com/unciv/ui/screens/cityscreen/CityStatsTable.kt b/core/src/com/unciv/ui/screens/cityscreen/CityStatsTable.kt index 076111644ab5c..484ae7c523878 100644 --- a/core/src/com/unciv/ui/screens/cityscreen/CityStatsTable.kt +++ b/core/src/com/unciv/ui/screens/cityscreen/CityStatsTable.kt @@ -57,7 +57,7 @@ class CityStatsTable(private val cityScreen: CityScreen) : Table() { innerTable.pad(5f) innerTable.background = BaseScreen.skinStrings.getUiBackground( "CityScreen/CityStatsTable/InnerTable", - tintColor = Color.BLACK.cpy().apply { a = 0.8f } + tintColor = ImageGetter.CHARCOAL.cpy().apply { a = 0.8f } ) upperTable.defaults().pad(2f) @@ -388,7 +388,7 @@ class CityStatsTable(private val cityScreen: CityScreen) : Table() { val percent = gppCurrent / gppNeeded.toFloat() val progressBar = ImageGetter.ProgressBar(300f, 25f, false) - progressBar.setBackground(Color.BLACK.cpy().apply { a = 0.8f }) + progressBar.setBackground(ImageGetter.CHARCOAL.cpy().apply { a = 0.8f }) progressBar.setProgress(Color.ORANGE, percent) progressBar.apply { val bar = ImageGetter.getWhiteDot() diff --git a/core/src/com/unciv/ui/screens/cityscreen/SpecialistAllocationTable.kt b/core/src/com/unciv/ui/screens/cityscreen/SpecialistAllocationTable.kt index 83c121d714dcc..49988a07f558f 100644 --- a/core/src/com/unciv/ui/screens/cityscreen/SpecialistAllocationTable.kt +++ b/core/src/com/unciv/ui/screens/cityscreen/SpecialistAllocationTable.kt @@ -83,7 +83,7 @@ class SpecialistAllocationTable(private val cityScreen: CityScreen) : Table(Base private fun getAssignButton(assignedSpecialists: Int, maxSpecialists: Int, specialistName: String): Actor { if (assignedSpecialists >= maxSpecialists || city.isPuppet) return Table() - val assignButton = "+".toLabel(Color.BLACK, Constants.headingFontSize) + val assignButton = "+".toLabel(ImageGetter.CHARCOAL, Constants.headingFontSize) .apply { this.setAlignment(Align.center) } .surroundWithCircle(30f).apply { circle.color = Color.GREEN.darken(0.2f) } assignButton.onClick { @@ -98,7 +98,7 @@ class SpecialistAllocationTable(private val cityScreen: CityScreen) : Table(Base } private fun getUnassignButton(assignedSpecialists: Int, specialistName: String): Actor { - val unassignButton = "-".toLabel(Color.BLACK, Constants.headingFontSize) + val unassignButton = "-".toLabel(ImageGetter.CHARCOAL, Constants.headingFontSize) .apply { this.setAlignment(Align.center) } .surroundWithCircle(30f).apply { circle.color = Color.RED.darken(0.1f) } unassignButton.onClick { diff --git a/core/src/com/unciv/ui/screens/civilopediascreen/CivilopediaImageGetters.kt b/core/src/com/unciv/ui/screens/civilopediascreen/CivilopediaImageGetters.kt index d7eb0e4d4ca72..8d7b3861bb86f 100644 --- a/core/src/com/unciv/ui/screens/civilopediascreen/CivilopediaImageGetters.kt +++ b/core/src/com/unciv/ui/screens/civilopediascreen/CivilopediaImageGetters.kt @@ -75,7 +75,7 @@ internal object CivilopediaImageGetters { }.surroundWithCircle(size) return null } - return tryImage("$policyBranchIconFolder/$name", Color.BLACK) + return tryImage("$policyBranchIconFolder/$name", ImageGetter.CHARCOAL) ?: tryImage("$policyIconFolder/$name", Color.BROWN) } val resource = { name: String, size: Float -> diff --git a/core/src/com/unciv/ui/screens/devconsole/ConsoleTileCommands.kt b/core/src/com/unciv/ui/screens/devconsole/ConsoleTileCommands.kt index 000fc2df4aba3..2c9a7c43bf041 100644 --- a/core/src/com/unciv/ui/screens/devconsole/ConsoleTileCommands.kt +++ b/core/src/com/unciv/ui/screens/devconsole/ConsoleTileCommands.kt @@ -8,7 +8,6 @@ import com.unciv.logic.civilization.NotificationCategory import com.unciv.logic.civilization.NotificationIcon import com.unciv.logic.map.mapgenerator.RiverGenerator import com.unciv.logic.map.mapgenerator.RiverGenerator.RiverDirections -import com.unciv.logic.map.tile.RoadStatus import com.unciv.logic.map.tile.Tile import com.unciv.models.ruleset.tile.Terrain import com.unciv.models.ruleset.tile.TerrainType @@ -42,7 +41,7 @@ internal class ConsoleTileCommands: ConsoleCommandNode { "removeroad" to ConsoleAction("tile removeroad") { console, _ -> val selectedTile = console.getSelectedTile() - selectedTile.roadStatus = RoadStatus.None + selectedTile.removeRoad() //todo this covers many cases but not all - do we really need to loop over all civs? selectedTile.getOwner()?.cache?.updateCitiesConnectedToCapital() DevConsoleResponse.OK diff --git a/core/src/com/unciv/ui/screens/diplomacyscreen/DiplomacyScreen.kt b/core/src/com/unciv/ui/screens/diplomacyscreen/DiplomacyScreen.kt index b6b461652b6ab..b4a06bbbaf11e 100644 --- a/core/src/com/unciv/ui/screens/diplomacyscreen/DiplomacyScreen.kt +++ b/core/src/com/unciv/ui/screens/diplomacyscreen/DiplomacyScreen.kt @@ -156,7 +156,7 @@ class DiplomacyScreen( val innerColor = civ.gameInfo.ruleset.nations[civ.civName]!!.getInnerColor() val typeIcon = ImageGetter.getImage("CityStateIcons/"+civ.cityStateType.name) .surroundWithCircle(size = 35f, color = innerColor).apply { - actor.color = Color.BLACK + actor.color = ImageGetter.CHARCOAL } civIndicator.addActor(typeIcon) typeIcon.y = floor(civIndicator.height - typeIcon.height) diff --git a/core/src/com/unciv/ui/screens/diplomacyscreen/OffersListScroll.kt b/core/src/com/unciv/ui/screens/diplomacyscreen/OffersListScroll.kt index a12f98e7c6c42..77858d913daa9 100644 --- a/core/src/com/unciv/ui/screens/diplomacyscreen/OffersListScroll.kt +++ b/core/src/com/unciv/ui/screens/diplomacyscreen/OffersListScroll.kt @@ -90,7 +90,7 @@ class OffersListScroll( Luxury_Resource, Strategic_Resource -> ImageGetter.getResourcePortrait(offer.name, 30f) WarDeclaration -> - ImageGetter.getNationPortrait(UncivGame.Current.gameInfo!!.ruleset.nations[offer.name]!!, 30f) + ImageGetter.getNationPortrait(ourCiv.gameInfo.ruleset.nations[offer.name]!!, 30f) else -> null } val tradeButton = IconTextButton(tradeLabel, tradeIcon).apply { diff --git a/core/src/com/unciv/ui/screens/mapeditorscreen/EditorMapHolder.kt b/core/src/com/unciv/ui/screens/mapeditorscreen/EditorMapHolder.kt index 01dc5f2d13f03..d1f498ed875cb 100644 --- a/core/src/com/unciv/ui/screens/mapeditorscreen/EditorMapHolder.kt +++ b/core/src/com/unciv/ui/screens/mapeditorscreen/EditorMapHolder.kt @@ -33,7 +33,7 @@ class EditorMapHolder( val tileGroups = HashMap() private lateinit var tileGroupMap: TileGroupMap - private val allTileGroups = ArrayList() + private val allTileGroups = ArrayList(tileMap.values.size) private var blinkAction: Action? = null diff --git a/core/src/com/unciv/ui/screens/mapeditorscreen/tabs/MapEditorEditSubTabs.kt b/core/src/com/unciv/ui/screens/mapeditorscreen/tabs/MapEditorEditSubTabs.kt index 82fbc3d877d24..35ce165e6b798 100644 --- a/core/src/com/unciv/ui/screens/mapeditorscreen/tabs/MapEditorEditSubTabs.kt +++ b/core/src/com/unciv/ui/screens/mapeditorscreen/tabs/MapEditorEditSubTabs.kt @@ -224,7 +224,7 @@ class MapEditorEditImprovementsTab( val road = RoadStatus.entries.firstOrNull { r -> r.name == it } if (road != null) editTab.setBrush(it, "Improvement/$it", handlerType = BrushHandlerType.Road) { tile -> - tile.roadStatus = if (tile.roadStatus == road) RoadStatus.None else road + tile.setRoadStatus(if (tile.roadStatus == road) RoadStatus.None else road, null) } else editTab.setBrush(it, "Improvement/$it") { tile -> diff --git a/core/src/com/unciv/ui/screens/newgamescreen/GameOptionsTable.kt b/core/src/com/unciv/ui/screens/newgamescreen/GameOptionsTable.kt index c391ac4b6a4aa..0fd89ff4a25ea 100644 --- a/core/src/com/unciv/ui/screens/newgamescreen/GameOptionsTable.kt +++ b/core/src/com/unciv/ui/screens/newgamescreen/GameOptionsTable.kt @@ -514,7 +514,7 @@ private class RandomNationPickerPopup( const val buttonsCircleSize = 70f const val buttonsIconSize = 50f const val buttonsOffsetFromEdge = 5f - val buttonsBackColor: Color = Color.BLACK.cpy().apply { a = 0.67f } + val buttonsBackColor: Color = ImageGetter.CHARCOAL.cpy().apply { a = 0.67f } } // This Popup's body has two halves of same size, either side by side or arranged vertically diff --git a/core/src/com/unciv/ui/screens/newgamescreen/ModCheckboxTable.kt b/core/src/com/unciv/ui/screens/newgamescreen/ModCheckboxTable.kt index 65a20c357102d..cb6594d077868 100644 --- a/core/src/com/unciv/ui/screens/newgamescreen/ModCheckboxTable.kt +++ b/core/src/com/unciv/ui/screens/newgamescreen/ModCheckboxTable.kt @@ -1,9 +1,7 @@ package com.unciv.ui.screens.newgamescreen -import com.badlogic.gdx.Gdx import com.badlogic.gdx.scenes.scene2d.ui.CheckBox import com.badlogic.gdx.scenes.scene2d.ui.Table -import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener import com.unciv.models.metadata.BaseRuleset import com.unciv.models.metadata.GameParameters import com.unciv.models.ruleset.Ruleset @@ -15,6 +13,7 @@ import com.unciv.ui.components.input.onChange import com.unciv.ui.components.widgets.ExpanderTab import com.unciv.ui.popups.ToastPopup import com.unciv.ui.screens.basescreen.BaseScreen +import com.unciv.utils.Concurrency /** * A widget containing one expander for extension mods. @@ -58,10 +57,9 @@ class ModCheckboxTable( for (mod in modRulesets.sortedBy { it.name }) { val checkBox = mod.name.toCheckBox(mod.name in mods) - checkBox.onChange { - if (checkBoxChanged(checkBox, it!!, mod)) { - onUpdate(mod.name) - } + checkBox.onChange { + // Checks are run in parallel thread to avoid ANRs + Concurrency.run { checkBoxChanged(checkBox, mod) } } checkBox.left() modWidgets += ModWithCheckBox(mod, checkBox) @@ -108,7 +106,7 @@ class ModCheckboxTable( disableIncompatibleMods() - runComplexModCheck() + Concurrency.run { complexModCheckReturnsErrors() } } fun disableAllCheckboxes() { @@ -124,49 +122,44 @@ class ModCheckboxTable( onUpdate("-") // should match no mod } - private fun runComplexModCheck(): Boolean { - // Disable user input to avoid ANRs - val currentInputProcessor = Gdx.input.inputProcessor - Gdx.input.inputProcessor = null - + /** Runs in parallel thread */ + private fun complexModCheckReturnsErrors(): Boolean { // Check over complete combination of selected mods val complexModLinkCheck = RulesetCache.checkCombinedModLinks(mods, baseRulesetName) if (!complexModLinkCheck.isWarnUser()){ savedModcheckResult = null - Gdx.input.inputProcessor = currentInputProcessor return false } savedModcheckResult = complexModLinkCheck.getErrorText() complexModLinkCheck.showWarnOrErrorToast(screen) - - Gdx.input.inputProcessor = currentInputProcessor return complexModLinkCheck.isError() } + /** Runs in parallel thread so as not to block main thread - running complex mod check can be expensive */ private fun checkBoxChanged( checkBox: CheckBox, - changeEvent: ChangeListener.ChangeEvent, mod: Ruleset - ): Boolean { - if (disableChangeEvents) return false + ) { + if (disableChangeEvents) return if (checkBox.isChecked) { // First the quick standalone check val modLinkErrors = mod.getErrorList() if (modLinkErrors.isError()) { modLinkErrors.showWarnOrErrorToast(screen) - changeEvent.cancel() // Cancel event to reset to previous state - see Button.setChecked() - return false + Concurrency.runOnGLThread { checkBox.isChecked = false } // Cancel event to reset to previous state + return } mods.add(mod.name) // Check over complete combination of selected mods - if (runComplexModCheck()) { - changeEvent.cancel() // Cancel event to reset to previous state - see Button.setChecked() + if (complexModCheckReturnsErrors()) { + // Cancel event to reset to previous state + Concurrency.runOnGLThread { checkBox.isChecked = false } // Cancel event to reset to previous state mods.remove(mod.name) savedModcheckResult = null // we just fixed it - return false + return } } else { @@ -177,18 +170,20 @@ class ModCheckboxTable( mods.remove(mod.name) - if (runComplexModCheck()) { - changeEvent.cancel() // Cancel event to reset to previous state - see Button.setChecked() + if (complexModCheckReturnsErrors()) { + // Cancel event to reset to previous state + Concurrency.runOnGLThread { checkBox.isChecked = true } mods.add(mod.name) savedModcheckResult = null // we just fixed it - return false + return } } - disableIncompatibleMods() - - return true + Concurrency.runOnGLThread { + disableIncompatibleMods() + onUpdate(mod.name) // Only run if we can the checks and they succeeded + } } /** Deselect incompatible mods after [skipCheckBox] was selected. diff --git a/core/src/com/unciv/ui/screens/newgamescreen/NationPickerPopup.kt b/core/src/com/unciv/ui/screens/newgamescreen/NationPickerPopup.kt index 25bf4caec57cd..34585a3f33265 100644 --- a/core/src/com/unciv/ui/screens/newgamescreen/NationPickerPopup.kt +++ b/core/src/com/unciv/ui/screens/newgamescreen/NationPickerPopup.kt @@ -45,7 +45,7 @@ internal class NationPickerPopup( const val buttonsCircleSize = 70f const val buttonsIconSize = 50f const val buttonsOffsetFromEdge = 5f - val buttonsBackColor: Color = Color.BLACK.cpy().apply { a = 0.67f } + val buttonsBackColor: Color = ImageGetter.CHARCOAL.cpy().apply { a = 0.67f } // Icon view sizing const val iconViewIconSize = 50f // Portrait lies and will be bigger than asked for (55f) const val iconViewCellSize = 60f // Difference to the above is used for selection highlight diff --git a/core/src/com/unciv/ui/screens/newgamescreen/NewGameModCheckHelpers.kt b/core/src/com/unciv/ui/screens/newgamescreen/NewGameModCheckHelpers.kt index f687df4f13ecc..361bd3d06901a 100644 --- a/core/src/com/unciv/ui/screens/newgamescreen/NewGameModCheckHelpers.kt +++ b/core/src/com/unciv/ui/screens/newgamescreen/NewGameModCheckHelpers.kt @@ -5,6 +5,7 @@ import com.unciv.models.translations.tr import com.unciv.ui.popups.ToastPopup import com.unciv.ui.popups.popups import com.unciv.ui.screens.basescreen.BaseScreen +import com.unciv.utils.Concurrency /** * Show a [ToastPopup] for this if severity is at least [isWarnUser][RulesetErrorList.isWarnUser]. @@ -19,6 +20,8 @@ fun RulesetErrorList.showWarnOrErrorToast(screen: BaseScreen) { else "{The mod combination you selected «GOLD»has problems«».}\n" + "{You can play it, but «GOLDENROD»don't expect everything to work!«»}" val toastMessage = headerText.tr() + "\n\n{" + getErrorText() + "}" - for (oldToast in screen.popups.filterIsInstance()) { oldToast.close() } - ToastPopup(toastMessage, screen, 5000L) + Concurrency.runOnGLThread { + for (oldToast in screen.popups.filterIsInstance()) oldToast.close() + ToastPopup(toastMessage, screen, 5000L) + } } diff --git a/core/src/com/unciv/ui/screens/newgamescreen/NewGameScreen.kt b/core/src/com/unciv/ui/screens/newgamescreen/NewGameScreen.kt index 81d7aa8b2294f..e4090b177c6c2 100644 --- a/core/src/com/unciv/ui/screens/newgamescreen/NewGameScreen.kt +++ b/core/src/com/unciv/ui/screens/newgamescreen/NewGameScreen.kt @@ -225,9 +225,9 @@ class NewGameScreen( scrollPane.setScrollingDisabled(true,true) topTable.add("Game Options".toLabel(fontSize = Constants.headingFontSize)).pad(20f, 0f) - topTable.addSeparatorVertical(Color.BLACK, 1f) + topTable.addSeparatorVertical(ImageGetter.CHARCOAL, 1f) topTable.add("Map Options".toLabel(fontSize = Constants.headingFontSize)).pad(20f,0f) - topTable.addSeparatorVertical(Color.BLACK, 1f) + topTable.addSeparatorVertical(ImageGetter.CHARCOAL, 1f) topTable.add("Civilizations".toLabel(fontSize = Constants.headingFontSize)).pad(20f,0f) topTable.addSeparator(Color.CLEAR, height = 1f) diff --git a/core/src/com/unciv/ui/screens/newgamescreen/PlayerPickerTable.kt b/core/src/com/unciv/ui/screens/newgamescreen/PlayerPickerTable.kt index ac480f9333f40..010506977d92a 100644 --- a/core/src/com/unciv/ui/screens/newgamescreen/PlayerPickerTable.kt +++ b/core/src/com/unciv/ui/screens/newgamescreen/PlayerPickerTable.kt @@ -100,7 +100,7 @@ class PlayerPickerTable( } if (!locked && gameParameters.players.size < gameBasics.nations.values.count { it.isMajorCiv }) { - val addPlayerButton = "+".toLabel(Color.BLACK, 30) + val addPlayerButton = "+".toLabel(ImageGetter.CHARCOAL, 30) .apply { this.setAlignment(Align.center) } .surroundWithCircle(50f) .onClick { @@ -211,7 +211,7 @@ class PlayerPickerTable( } if (!locked) { - playerTable.add("-".toLabel(Color.BLACK, 30, Align.center) + playerTable.add("-".toLabel(ImageGetter.CHARCOAL, 30, Align.center) .surroundWithCircle(40f) .onClick { gameParameters.players.remove(player) diff --git a/core/src/com/unciv/ui/screens/overviewscreen/CityOverviewTabColumn.kt b/core/src/com/unciv/ui/screens/overviewscreen/CityOverviewTabColumn.kt index cea6d6f9c0f8c..d6e7d9a85c87c 100644 --- a/core/src/com/unciv/ui/screens/overviewscreen/CityOverviewTabColumn.kt +++ b/core/src/com/unciv/ui/screens/overviewscreen/CityOverviewTabColumn.kt @@ -38,7 +38,7 @@ enum class CityOverviewTabColumn : ISortableGridContentProvider(collator) { it.name.tr(hideIcons = true) } override fun getHeaderActor(iconSize: Float) = - ImageGetter.getImage("UnitIcons/Settler").apply { color = Color.BLACK } + ImageGetter.getImage("UnitIcons/Settler").apply { color = ImageGetter.CHARCOAL } .surroundWithCircle(iconSize) override fun getEntryValue(item: City) = 0 // make sure that `stat!!` in the super isn't used override fun getEntryActor(item: City, iconSize: Float, actionContext: EmpireOverviewScreen) = diff --git a/core/src/com/unciv/ui/screens/overviewscreen/GlobalPoliticsOverviewTable.kt b/core/src/com/unciv/ui/screens/overviewscreen/GlobalPoliticsOverviewTable.kt index 59b878c65723d..f8f1a1d46dbf5 100644 --- a/core/src/com/unciv/ui/screens/overviewscreen/GlobalPoliticsOverviewTable.kt +++ b/core/src/com/unciv/ui/screens/overviewscreen/GlobalPoliticsOverviewTable.kt @@ -61,7 +61,7 @@ class GlobalPoliticsOverviewTable( defaults().pad(5f) background = BaseScreen.skinStrings.getUiBackground( "OverviewScreen/DiplomacyOverviewTab/CivTable", - tintColor = Color.BLACK + tintColor = ImageGetter.CHARCOAL ) } @@ -532,7 +532,7 @@ class GlobalPoliticsOverviewTable( legend.add(ShadowedLabel("Diagram line colors", Constants.headingFontSize)).colspan(2).row() //todo Rethink hardcoding together with the statusLine.color one in DiplomacyGroup legend.addLegendRow("War", Color.RED) - for (level in RelationshipLevel.values()) { + for (level in RelationshipLevel.entries) { val lineColor = if (level == RelationshipLevel.Ally) Color.CYAN else level.color legend.addLegendRow(level.name, lineColor) } diff --git a/core/src/com/unciv/ui/screens/overviewscreen/NotificationsOverviewTable.kt b/core/src/com/unciv/ui/screens/overviewscreen/NotificationsOverviewTable.kt index 1f971caf8b635..f0f4651c816fc 100644 --- a/core/src/com/unciv/ui/screens/overviewscreen/NotificationsOverviewTable.kt +++ b/core/src/com/unciv/ui/screens/overviewscreen/NotificationsOverviewTable.kt @@ -1,16 +1,15 @@ package com.unciv.ui.screens.overviewscreen -import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.scenes.scene2d.Touchable import com.badlogic.gdx.scenes.scene2d.ui.Table import com.unciv.logic.civilization.Civilization import com.unciv.logic.civilization.Notification import com.unciv.logic.civilization.NotificationCategory import com.unciv.models.translations.tr +import com.unciv.ui.components.extensions.toLabel +import com.unciv.ui.components.input.onClick import com.unciv.ui.components.widgets.ColorMarkupLabel import com.unciv.ui.components.widgets.TabbedPager -import com.unciv.ui.components.input.onClick -import com.unciv.ui.components.extensions.toLabel import com.unciv.ui.images.ImageGetter import com.unciv.ui.screens.basescreen.BaseScreen @@ -76,7 +75,7 @@ class NotificationsOverviewTable( add(ImageGetter.getWhiteDot()).minHeight(2f).width(stageWidth / 4) }).row() - for (category in NotificationCategory.values()) { + for (category in Notification.NotificationCategory.entries) { val categoryNotifications = notifications.filter { it.category == category } if (categoryNotifications.isEmpty()) continue @@ -86,7 +85,7 @@ class NotificationsOverviewTable( for (notification in categoryNotifications) { val notificationTable = Table(BaseScreen.skin) - val label = ColorMarkupLabel(notification.text, Color.BLACK, fontSize = 20) + val label = ColorMarkupLabel(notification.text, ImageGetter.CHARCOAL, fontSize = 20) .apply { wrap = true } notificationTable.add(label).width(stageWidth / 2 - iconSize * notification.icons.size) diff --git a/core/src/com/unciv/ui/screens/overviewscreen/WonderOverviewTab.kt b/core/src/com/unciv/ui/screens/overviewscreen/WonderOverviewTab.kt index afbc32719adaa..bd79010d5509e 100644 --- a/core/src/com/unciv/ui/screens/overviewscreen/WonderOverviewTab.kt +++ b/core/src/com/unciv/ui/screens/overviewscreen/WonderOverviewTab.kt @@ -91,8 +91,6 @@ class WonderOverviewTab( class WonderInfo { - val gameInfo = UncivGame.Current.gameInfo!! - val ruleSet = gameInfo.ruleset enum class WonderStatus(val label: String) { Hidden(""), @@ -150,7 +148,7 @@ class WonderInfo { /** Do we know about a natural wonder despite not having found it yet? */ private fun knownFromQuest(viewingPlayer: Civilization, name: String): Boolean { // No, *your* civInfo's QuestManager has no idea about your quests - for (civ in gameInfo.civilizations) { + for (civ in viewingPlayer.gameInfo.civilizations) { for (quest in civ.questManager.getAssignedQuestsFor(viewingPlayer.civName)) { if (quest.questName == QuestName.FindNaturalWonder.value && quest.data1 == name) return true @@ -161,16 +159,17 @@ class WonderInfo { fun collectInfo(viewingPlayer: Civilization): Array { val collator = UncivGame.Current.settings.getCollatorFromLocale() + val ruleset = viewingPlayer.gameInfo.ruleset // Maps all World Wonders by name to their era for grouping val wonderEraMap: Map = - ruleSet.buildings.values.asSequence() + ruleset.buildings.values.asSequence() .filter { it.isWonder } - .associate { it.name to it.era(ruleSet) } + .associate { it.name to it.era(ruleset) } // Maps all World Wonders by their position in sort order to their name val allWonderMap: Map = - ruleSet.buildings.values.asSequence() + ruleset.buildings.values.asSequence() .filter { it.isWonder } // 100 is so wonders with no era get displayed after all eras, not before .sortedWith(compareBy { wonderEraMap[it.name]?.eraNumber ?: 100 }.thenBy(collator) { it.name.tr(hideIcons = true) }) @@ -183,7 +182,7 @@ class WonderInfo { // Maps all Natural Wonders on the map by name to their tile val allNaturalsMap: Map = - gameInfo.tileMap.values.asSequence() + viewingPlayer.gameInfo.tileMap.values.asSequence() .filter { it.isNaturalWonder() } .associateBy { it.naturalWonder!! } val naturalsCount = allNaturalsMap.size @@ -197,7 +196,7 @@ class WonderInfo { // Pre-populate result with "Unknown" entries val wonders = Array(wonderCount + naturalsCount) { index -> if (index < wonderCount) { - val wonder = ruleSet.buildings[allWonderMap[index]!!]!! + val wonder = ruleset.buildings[allWonderMap[index]!!]!! val era = wonderEraMap[wonder.name] val status = if (shouldBeDisplayed(viewingPlayer, wonder, era?.eraNumber)) WonderStatus.Unbuilt else WonderStatus.Hidden WonderInfo( @@ -218,7 +217,7 @@ class WonderInfo { } } - for (city in gameInfo.getCities()) { + for (city in viewingPlayer.gameInfo.getCities()) { for (wonderName in city.cityConstructions.getBuiltBuildings().map { it.name }.toList().intersect(wonderIndexMap.keys)) { val index = wonderIndexMap[wonderName]!! val status = when { @@ -244,7 +243,7 @@ class WonderInfo { } if (status == WonderStatus.NotFound && !knownFromQuest(viewingPlayer, name)) continue val city = if (status == WonderStatus.NotFound) null - else gameInfo.getCities() + else viewingPlayer.gameInfo.getCities() .filter { it.getCenterTile().aerialDistanceTo(tile) <= 5 && viewingPlayer.knows(it.civ) && viewingPlayer.hasExplored(it.getCenterTile()) } diff --git a/core/src/com/unciv/ui/screens/pickerscreens/PromotionScreenColors.kt b/core/src/com/unciv/ui/screens/pickerscreens/PromotionScreenColors.kt index 27b3ec0c17a90..3ac4659b489db 100644 --- a/core/src/com/unciv/ui/screens/pickerscreens/PromotionScreenColors.kt +++ b/core/src/com/unciv/ui/screens/pickerscreens/PromotionScreenColors.kt @@ -1,6 +1,7 @@ package com.unciv.ui.screens.pickerscreens import com.badlogic.gdx.graphics.Color +import com.unciv.ui.images.ImageGetter /** Colours used on the [PromotionPickerScreen] @@ -8,7 +9,7 @@ import com.badlogic.gdx.graphics.Color * These are backed by Skin.json */ class PromotionScreenColors { - val default: Color = Color.BLACK + val default: Color = ImageGetter.CHARCOAL val selected: Color = Color(0.2824f, 0.5765f, 0.6863f, 1f) // colorFromRGB(72, 147, 175) val pathToSelection: Color = Color(0.1882f, 0.3843f, 0.4575f, 1f) // selected.darken(0.33f) val promoted: Color = Color(0.8f, 0.6745f, 0f, 1f) // colorFromRGB(255, 215, 0).darken(0.2f) diff --git a/core/src/com/unciv/ui/screens/pickerscreens/ReligiousBeliefsPickerScreen.kt b/core/src/com/unciv/ui/screens/pickerscreens/ReligiousBeliefsPickerScreen.kt index 2049c711aaaf7..ea562461a99f5 100644 --- a/core/src/com/unciv/ui/screens/pickerscreens/ReligiousBeliefsPickerScreen.kt +++ b/core/src/com/unciv/ui/screens/pickerscreens/ReligiousBeliefsPickerScreen.kt @@ -99,7 +99,7 @@ class ReligiousBeliefsPickerScreen ( } val changeReligionNameButton = Button( - ImageGetter.getImage("OtherIcons/Pencil").apply { this.color = Color.BLACK }.surroundWithCircle(30f), + ImageGetter.getImage("OtherIcons/Pencil").apply { this.color = ImageGetter.CHARCOAL }.surroundWithCircle(30f), skin ) diff --git a/core/src/com/unciv/ui/screens/pickerscreens/TechButton.kt b/core/src/com/unciv/ui/screens/pickerscreens/TechButton.kt index aea26fd950edc..6b2b3ea426600 100644 --- a/core/src/com/unciv/ui/screens/pickerscreens/TechButton.kt +++ b/core/src/com/unciv/ui/screens/pickerscreens/TechButton.kt @@ -95,7 +95,7 @@ class TechButton( techEnabledIcons.background = BaseScreen.skinStrings.getUiBackground( "TechPickerScreen/TechButtonIconsOutline", BaseScreen.skinStrings.roundedEdgeRectangleSmallShape, - tintColor = Color.BLACK.cpy().apply { a = 0.7f } + tintColor = ImageGetter.CHARCOAL.cpy().apply { a = 0.7f } ) techEnabledIcons.pad(2f, 10f, 2f, 0f) techEnabledIcons.defaults().padRight(5f) diff --git a/core/src/com/unciv/ui/screens/pickerscreens/TechPickerScreen.kt b/core/src/com/unciv/ui/screens/pickerscreens/TechPickerScreen.kt index 583deaacb84f9..cd9299a041ce5 100644 --- a/core/src/com/unciv/ui/screens/pickerscreens/TechPickerScreen.kt +++ b/core/src/com/unciv/ui/screens/pickerscreens/TechPickerScreen.kt @@ -152,7 +152,7 @@ class TechPickerScreen( val color = when { civTech.era.name == era -> queuedTechColor ruleset.eras[era]!!.eraNumber < civTech.era.eraNumber -> colorFromRGB(255, 175, 0) - else -> Color.BLACK.cpy() + else -> ImageGetter.CHARCOAL.cpy() } val table1 = Table().pad(1f) @@ -213,7 +213,7 @@ class TechPickerScreen( tempTechsToResearch.firstOrNull() == techName && !freeTechPick -> currentTechColor researchableTechs.contains(techName) -> researchableTechColor tempTechsToResearch.contains(techName) -> queuedTechColor - else -> Color.BLACK.cpy() + else -> ImageGetter.CHARCOAL.cpy() }) if (isResearched && techName != Constants.futureTech) { diff --git a/core/src/com/unciv/ui/screens/victoryscreen/VictoryScreenCivGroup.kt b/core/src/com/unciv/ui/screens/victoryscreen/VictoryScreenCivGroup.kt index 39e7f9f4ad9b2..e19e40e48fda2 100644 --- a/core/src/com/unciv/ui/screens/victoryscreen/VictoryScreenCivGroup.kt +++ b/core/src/com/unciv/ui/screens/victoryscreen/VictoryScreenCivGroup.kt @@ -81,7 +81,7 @@ internal class VictoryScreenCivGroup( civ.isDefeated() && defeatedPlayerStyle == DefeatedPlayerStyle.GREYED_OUT -> { val icon = (ImageGetter.getImage("OtherIcons/DisbandUnit")) icon.setSize(30f) - return Triple(icon, Color.LIGHT_GRAY, Color.BLACK) + return Triple(icon, Color.LIGHT_GRAY, ImageGetter.CHARCOAL) } currentPlayer.isSpectator() || civ.isDefeated() && defeatedPlayerStyle == DefeatedPlayerStyle.REGULAR @@ -92,7 +92,7 @@ internal class VictoryScreenCivGroup( return Triple(ImageGetter.getNationPortrait(civ.nation, 30f), civ.nation.getOuterColor(), civ.nation.getInnerColor()) } else -> - return Triple((ImageGetter.getRandomNationPortrait(30f)), Color.LIGHT_GRAY, Color.BLACK) + return Triple((ImageGetter.getRandomNationPortrait(30f)), Color.LIGHT_GRAY, ImageGetter.CHARCOAL) } } diff --git a/core/src/com/unciv/ui/screens/worldscreen/NotificationsScroll.kt b/core/src/com/unciv/ui/screens/worldscreen/NotificationsScroll.kt index 2d0103298e8d7..906f46bd7df38 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/NotificationsScroll.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/NotificationsScroll.kt @@ -204,8 +204,6 @@ class NotificationsScroll( Align.bottomRight) } - private val serverIconsToIgnore = hashSetOf("NotificationIcons/RobotArm", "NotificationIcons/ServerRack", "NotificationIcons/DollarSign") - private fun updateContent( notifications: List, coveredNotificationsTop: Float, @@ -266,9 +264,6 @@ class NotificationsScroll( notificationsTable.add(header).right().row() } for (notification in categoryNotifications) { - // Temporarily ignore touhidurrr notifications - if (notification.icons.any { it in serverIconsToIgnore }) continue - val item = ListItem(notification, backgroundDrawable) itemWidths.add(item.itemWidth) val itemCell = notificationsTable.add(item) @@ -306,7 +301,7 @@ class NotificationsScroll( .minHeight(2f).width(minCategoryLineWidth) add(Table().apply { background = backgroundDrawable - val label = ColorMarkupLabel(category.name, Color.BLACK, fontSize = fontSize) + val label = ColorMarkupLabel(category.name, ImageGetter.CHARCOAL, fontSize = fontSize) add(label) captionWidth = prefWidth // of this wrapper including background rims captionWidth @@ -353,7 +348,7 @@ class NotificationsScroll( } val maxLabelWidth = maxEntryWidth - (itemIconSize + 5f) * notification.icons.size - 10f - val label = WrappableLabel(notification.text, maxLabelWidth, Color.BLACK, labelFontSize, hideIcons = true) + val label = WrappableLabel(notification.text, maxLabelWidth, ImageGetter.CHARCOAL, labelFontSize, hideIcons = true) label.setAlignment(Align.center) if (label.prefWidth > maxLabelWidth * scaleFactor) { // can't explain why the comparison needs scaleFactor label.wrap = true @@ -418,11 +413,11 @@ class NotificationsScroll( .surroundWithCircle(restoreButtonSize, resizeActor = false) size(restoreButtonSize) - countLabel = "".toLabel(Color.BLACK, restoreButtonNumberFontSize, Align.center) + countLabel = "".toLabel(ImageGetter.CHARCOAL, restoreButtonNumberFontSize, Align.center) // not using surroundWithCircle for the count, as the centering will break if positioned within another IconCircleGroup (why?) labelInnerCircle = ImageGetter.getCircle(Color.WHITE, restoreButtonNumbersSize * 0.9f) labelInnerCircle.centerAtNumberPosition() - labelOuterCircle = ImageGetter.getCircle(Color.BLACK, restoreButtonNumbersSize) + labelOuterCircle = ImageGetter.getCircle(ImageGetter.CHARCOAL, restoreButtonNumbersSize) labelOuterCircle.centerAtNumberPosition() actor.addActor(labelOuterCircle) actor.addActor(labelInnerCircle) diff --git a/core/src/com/unciv/ui/screens/worldscreen/WorldScreen.kt b/core/src/com/unciv/ui/screens/worldscreen/WorldScreen.kt index e08365d982a67..2d466aa1a495b 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/WorldScreen.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/WorldScreen.kt @@ -374,7 +374,7 @@ class WorldScreen( else bottomTileInfoTable.selectedCiv = viewingCiv bottomTileInfoTable.updateTileTable(mapHolder.selectedTile) bottomTileInfoTable.x = stage.width - bottomTileInfoTable.width - bottomTileInfoTable.y = if (game.settings.showMinimap) minimapWrapper.height else 0f + bottomTileInfoTable.y = if (game.settings.showMinimap) minimapWrapper.height + 5f else 0f battleTable.update() diff --git a/core/src/com/unciv/ui/screens/worldscreen/bottombar/BattleTable.kt b/core/src/com/unciv/ui/screens/worldscreen/bottombar/BattleTable.kt index 7e044e990468c..d6adab89c81f1 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/bottombar/BattleTable.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/bottombar/BattleTable.kt @@ -29,7 +29,7 @@ import com.unciv.ui.images.ImageGetter import com.unciv.ui.screens.basescreen.BaseScreen import com.unciv.ui.screens.worldscreen.UndoHandler.Companion.clearUndoCheckpoints import com.unciv.ui.screens.worldscreen.WorldScreen -import com.unciv.ui.screens.worldscreen.bottombar.BattleTableHelpers.battleAnimation +import com.unciv.ui.screens.worldscreen.bottombar.BattleTableHelpers.battleAnimationDeferred import com.unciv.ui.screens.worldscreen.bottombar.BattleTableHelpers.getHealthBar import com.unciv.utils.DebugUtils import kotlin.math.max @@ -305,7 +305,7 @@ class BattleTable(val worldScreen: WorldScreen) : Table() { SoundPlayer.play(attacker.getAttackSound()) val (damageToDefender, damageToAttacker) = Battle.attackOrNuke(attacker, attackableTile) - worldScreen.battleAnimation(attacker, damageToAttacker, defender, damageToDefender) + worldScreen.battleAnimationDeferred(attacker, damageToAttacker, defender, damageToDefender) if (!attacker.canAttack()) hide() } diff --git a/core/src/com/unciv/ui/screens/worldscreen/bottombar/BattleTableHelpers.kt b/core/src/com/unciv/ui/screens/worldscreen/bottombar/BattleTableHelpers.kt index b248d41682b6e..67711ab02b6c9 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/bottombar/BattleTableHelpers.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/bottombar/BattleTableHelpers.kt @@ -4,7 +4,6 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.math.Interpolation import com.badlogic.gdx.math.Vector2 import com.badlogic.gdx.scenes.scene2d.Actor -import com.badlogic.gdx.scenes.scene2d.Group import com.badlogic.gdx.scenes.scene2d.actions.Actions import com.badlogic.gdx.scenes.scene2d.actions.FloatAction import com.badlogic.gdx.scenes.scene2d.actions.RelativeTemporalAction @@ -23,6 +22,7 @@ import com.unciv.ui.components.tilegroups.TileSetStrings import com.unciv.ui.components.widgets.ShadowedLabel import com.unciv.ui.images.ImageGetter import com.unciv.ui.screens.worldscreen.WorldScreen +import com.unciv.utils.Concurrency object BattleTableHelpers { @@ -144,22 +144,31 @@ object BattleTableHelpers { } } + fun WorldScreen.battleAnimationDeferred( + attacker: ICombatant, damageToAttacker: Int, + defender: ICombatant, damageToDefender: Int + ){ + // This ensures that we schedule the animation to happen AFTER the worldscreen.update(), + // where the spriteGroup of the attacker is created on the tile it moves to + Concurrency.runOnGLThread { battleAnimation(attacker, damageToAttacker, defender, damageToDefender) } + } - fun WorldScreen.battleAnimation( + private fun WorldScreen.battleAnimation( attacker: ICombatant, damageToAttacker: Int, defender: ICombatant, damageToDefender: Int ) { fun getMapActorsForCombatant(combatant: ICombatant): Sequence = - sequence { - val tileGroup = mapHolder.tileGroups[combatant.getTile()]!! - if (combatant.isCity()) { - val icon = tileGroup.layerMisc.improvementIcon - if (icon != null) yield (icon) - } else if (!combatant.isAirUnit()) { - val slot = if (combatant.isCivilian()) 0 else 1 - yieldAll((tileGroup.layerUnitArt.getChild(slot) as Group).children) - } + sequence { + val tileGroup = mapHolder.tileGroups[combatant.getTile()]!! + if (combatant.isCity()) { + val icon = tileGroup.layerMisc.improvementIcon + if (icon != null) yield (icon) + } else if (!combatant.isAirUnit()) { + val slot = tileGroup.layerUnitArt.getSpriteSlot((combatant as MapUnitCombatant).unit) + if (slot != null) yieldAll(slot.spriteGroup.children) } + } + val actorsToFlashRed = sequence { @@ -228,7 +237,7 @@ object BattleTableHelpers { val damagedHealth = ImageGetter.getDot(Color.FIREBRICK) if (UncivGame.Current.settings.continuousRendering) { damagedHealth.addAction(Actions.forever(Actions.sequence( - Actions.color(Color.BLACK, 0.7f), + Actions.color(ImageGetter.CHARCOAL, 0.7f), Actions.color(Color.FIREBRICK, 0.7f) ))) } @@ -238,7 +247,7 @@ object BattleTableHelpers { val remainingHealthDot = ImageGetter.getWhiteDot() remainingHealthDot.color = Color.GREEN - addHealthToBar(ImageGetter.getDot(Color.BLACK), maxHealth - currentHealth) + addHealthToBar(ImageGetter.getDot(ImageGetter.CHARCOAL), maxHealth - currentHealth) addHealthToBar(damagedHealth, currentHealth - maxRemainingHealth) addHealthToBar(maybeDamagedHealth, maxRemainingHealth - minRemainingHealth) addHealthToBar(remainingHealthDot, minRemainingHealth) diff --git a/core/src/com/unciv/ui/screens/worldscreen/bottombar/TileInfoTable.kt b/core/src/com/unciv/ui/screens/worldscreen/bottombar/TileInfoTable.kt index 9452c9f50204a..50a84be476911 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/bottombar/TileInfoTable.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/bottombar/TileInfoTable.kt @@ -12,7 +12,6 @@ import com.unciv.ui.components.extensions.darken import com.unciv.ui.components.extensions.toLabel import com.unciv.ui.components.extensions.toPrettyString import com.unciv.ui.components.input.onClick -import com.unciv.ui.images.ImageGetter import com.unciv.ui.popups.Popup import com.unciv.ui.screens.basescreen.BaseScreen import com.unciv.ui.screens.civilopediascreen.FormattedLine.IconDisplay @@ -32,12 +31,13 @@ class TileInfoTable(private val worldScreen: WorldScreen) : Table(BaseScreen.ski internal fun updateTileTable(tile: Tile?) { clearChildren() + pad(5f) if (tile != null && (DebugUtils.VISIBLE_MAP || selectedCiv.hasExplored(tile)) ) { - add(getStatsTable(tile)) + add(getStatsTable(tile)).left().row() add(MarkupRenderer.render(TileDescription.toMarkup(tile, selectedCiv), padding = 0f, iconDisplay = IconDisplay.None) { worldScreen.openCivilopedia(it) - } ).pad(5f).row() + } ).padTop(5f).row() if (DebugUtils.VISIBLE_MAP) add(tile.position.toPrettyString().toLabel()).colspan(2).pad(5f) if (DebugUtils.SHOW_TILE_IMAGE_LOCATIONS){ val imagesString = "Images: " + worldScreen.mapHolder.tileGroups[tile]!!.layerTerrain.tileBaseImages.joinToString{"\n"+it.name} @@ -53,15 +53,10 @@ class TileInfoTable(private val worldScreen: WorldScreen) : Table(BaseScreen.ski private fun getStatsTable(tile: Tile): Table { val table = Table() table.defaults().pad(2f) - - // padLeft = padRight + 5: for symmetry. An extra 5 for the distance yield number to - // tile text comes from the pad up there in updateTileTable + for ((key, value) in tile.stats.getTileStats(selectedCiv)) { - table.add(ImageGetter.getStatIcon(key.name)) - .size(20f).align(Align.right).padLeft(10f) - table.add(value.toInt().toLabel()) + table.add((key.character + value.toInt().toString()).toLabel()) .align(Align.left).padRight(5f) - table.row() } table.touchable = Touchable.enabled table.onClick { diff --git a/core/src/com/unciv/ui/screens/worldscreen/mainmenu/WorldScreenMenuPopup.kt b/core/src/com/unciv/ui/screens/worldscreen/mainmenu/WorldScreenMenuPopup.kt index 4c2b9a3ea9660..acc4a6e22d35f 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/mainmenu/WorldScreenMenuPopup.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/mainmenu/WorldScreenMenuPopup.kt @@ -1,10 +1,13 @@ package com.unciv.ui.screens.worldscreen.mainmenu +import com.badlogic.gdx.Gdx import com.badlogic.gdx.scenes.scene2d.Actor import com.badlogic.gdx.scenes.scene2d.ui.Cell +import com.badlogic.gdx.scenes.scene2d.ui.TextButton.TextButtonStyle import com.unciv.ui.components.input.KeyboardBinding import com.unciv.ui.components.input.onLongPress import com.unciv.ui.popups.Popup +import com.unciv.ui.screens.basescreen.BaseScreen import com.unciv.ui.screens.savescreens.LoadGameScreen import com.unciv.ui.screens.victoryscreen.VictoryScreen import com.unciv.ui.screens.worldscreen.WorldScreen @@ -82,6 +85,12 @@ class WorldScreenMenuPopup( close() worldScreen.openDeveloperConsole() }.nextColumn() + + addButton("Exit") { + close() + Gdx.app.exit() + }.apply { actor.style = BaseScreen.skin.get("negative", TextButtonStyle::class.java) } + .nextColumn() addCloseButton().run { colspan(if (singleColumn || column == 1) 1 else 2) } pack() diff --git a/core/src/com/unciv/ui/screens/worldscreen/minimap/MapOverlayToggleButton.kt b/core/src/com/unciv/ui/screens/worldscreen/minimap/MapOverlayToggleButton.kt index 0ef3dfb033e31..bd16b47230279 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/minimap/MapOverlayToggleButton.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/minimap/MapOverlayToggleButton.kt @@ -1,6 +1,5 @@ package com.unciv.ui.screens.worldscreen.minimap -import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.scenes.scene2d.ui.Image import com.unciv.GUI import com.unciv.ui.components.extensions.setSize @@ -30,7 +29,7 @@ class MapOverlayToggleButton( resizeActor = false ) { init { - circle.color = Color.BLACK + circle.color = ImageGetter.CHARCOAL onClick(::toggle) } diff --git a/core/src/com/unciv/ui/screens/worldscreen/minimap/Minimap.kt b/core/src/com/unciv/ui/screens/worldscreen/minimap/Minimap.kt index 0348811c9f727..14957787c6ac1 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/minimap/Minimap.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/minimap/Minimap.kt @@ -4,6 +4,7 @@ import com.badlogic.gdx.graphics.g2d.Batch import com.badlogic.gdx.math.Rectangle import com.badlogic.gdx.math.Vector2 import com.badlogic.gdx.scenes.scene2d.Actor +import com.badlogic.gdx.scenes.scene2d.Group import com.badlogic.gdx.scenes.scene2d.Touchable import com.unciv.logic.civilization.Civilization import com.unciv.logic.map.MapShape @@ -58,12 +59,16 @@ class Minimap(val mapHolder: WorldMapHolder, minimapSize: Int, private val civIn group.moveBy(padX, padY) } - scrollPositionIndicators = createScrollPositionIndicators() - scrollPositionIndicators.forEach(tileLayer::addActor) addActor(tileLayer) addActor(borderLayer) addActor(cityLayer) + + val scrollIndicatorLayer = Group().apply { touchable = Touchable.disabled } // Do not block! + scrollIndicatorLayer.setSize(width, height) + scrollPositionIndicators = createScrollPositionIndicators() + scrollPositionIndicators.forEach(scrollIndicatorLayer::addActor) + addActor(scrollIndicatorLayer) mapHolder.onViewportChangedListener = ::updateScrollPosition } @@ -130,11 +135,8 @@ class Minimap(val mapHolder: WorldMapHolder, minimapSize: Int, private val civIn // hex height = sqrt(3) / 2 * d / 2, number of rows = mapDiameter * 2 height *= minimapTileSize * sqrt(3f) * 0.5f // hex width = 0.75 * d - width = - if (mapParameters.worldWrap) - (width - 1f) * minimapTileSize * 0.75f - else - width * minimapTileSize * 0.75f + width = if (mapParameters.worldWrap) (width - 1f) * minimapTileSize * 0.75f + else width * minimapTileSize * 0.75f return Vector2(width, height) } diff --git a/core/src/com/unciv/ui/screens/worldscreen/minimap/MinimapHolder.kt b/core/src/com/unciv/ui/screens/worldscreen/minimap/MinimapHolder.kt index a362c5d0d4df9..f5f84c4f198dd 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/minimap/MinimapHolder.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/minimap/MinimapHolder.kt @@ -53,8 +53,10 @@ class MinimapHolder(val mapHolder: WorldMapHolder) : Table() { private fun rebuild(civInfo: Civilization?) { this.clear() minimap = Minimap(mapHolder, minimapSize, civInfo) + val wrappedMinimap = getWrappedMinimap() add(getToggleIcons()).align(Align.bottom) - add(getWrappedMinimap()) + .height(wrappedMinimap.height).padRight(5f) // Spread equally over the side + add(wrappedMinimap) pack() if (stage != null) x = stage.width - width } @@ -83,6 +85,7 @@ class MinimapHolder(val mapHolder: WorldMapHolder) : Table() { /** @return Layout table for the little green map overlay toggle buttons, show to the left of the minimap. */ private fun getToggleIcons(): Table { val toggleIconTable = Table() + toggleIconTable.defaults().padTop(5f) toggleIconTable.add(movementsImageButton).row() toggleIconTable.add(yieldImageButton).row() diff --git a/core/src/com/unciv/ui/screens/worldscreen/status/NextTurnAction.kt b/core/src/com/unciv/ui/screens/worldscreen/status/NextTurnAction.kt index ee30f37f5702b..3858681eabaff 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/status/NextTurnAction.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/status/NextTurnAction.kt @@ -8,6 +8,7 @@ import com.unciv.models.Counter import com.unciv.models.ruleset.BeliefType import com.unciv.ui.components.extensions.disable import com.unciv.ui.components.extensions.enable +import com.unciv.ui.images.ImageGetter import com.unciv.ui.popups.ConfirmPopup import com.unciv.ui.screens.cityscreen.CityScreen import com.unciv.ui.screens.overviewscreen.EspionageOverviewScreen @@ -21,7 +22,7 @@ import com.unciv.utils.Concurrency import com.unciv.utils.launchOnGLThread enum class NextTurnAction(protected val text: String, val color: Color) { - Default("", Color.BLACK) { + Default("", ImageGetter.CHARCOAL) { override val icon get() = null override fun isChoice(worldScreen: WorldScreen) = false }, diff --git a/core/src/com/unciv/ui/screens/worldscreen/unit/UnitTable.kt b/core/src/com/unciv/ui/screens/worldscreen/unit/UnitTable.kt index d404bce090a41..4bd5b3926e794 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/unit/UnitTable.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/unit/UnitTable.kt @@ -29,10 +29,11 @@ class UnitTable(val worldScreen: WorldScreen) : Table() { private val prevIdleUnitButton = IdleUnitButton(this,worldScreen.mapHolder,true) private val nextIdleUnitButton = IdleUnitButton(this,worldScreen.mapHolder,false) private val unitIconHolder = Table() - private val unitNameLabel = "".toLabel() + private val unitNameLabel = "".toLabel(fontSize = 24) private val unitIconNameGroup = Table() - private val promotionsTable = Table() + private val promotionsTable = Table().apply { defaults().padRight(5f) } private val unitDescriptionTable = Table(BaseScreen.skin) + private val deselectUnitButton: Actor val selectedUnit : MapUnit? get() = selectedUnits.firstOrNull() @@ -91,19 +92,19 @@ class UnitTable(val worldScreen: WorldScreen) : Table() { promotionsTable.touchable = Touchable.enabled - val deselectUnitButton = getCloseButton(50f, 20f, Color.CLEAR, Color.RED) { + deselectUnitButton = getCloseButton(30f, 15f, Color.CLEAR, Color.RED) { selectUnit() worldScreen.shouldUpdate = true this@UnitTable.isVisible = false - } + }.surroundWithCircle(30f, resizeActor = false, color = BaseScreen.clearColor).surroundWithThinCircle(Color.WHITE) deselectUnitButton.keyShortcuts.clear() // This is the only place we don't want the BACK keyshortcut getCloseButton assigns - add(deselectUnitButton).left() + addActor(deselectUnitButton) add(Table().apply { val moveBetweenUnitsTable = Table().apply { add(prevIdleUnitButton) unitIconNameGroup.add(unitIconHolder) - unitIconNameGroup.add(unitNameLabel).pad(5f) + unitIconNameGroup.add(unitNameLabel).apply { Fonts.font.descent } unitIconHolder.touchable = Touchable.enabled unitNameLabel.touchable = Touchable.enabled add(unitIconNameGroup) @@ -170,23 +171,16 @@ class UnitTable(val worldScreen: WorldScreen) : Table() { unitDescriptionTable.clear() unitDescriptionTable.defaults().pad(2f) - unitDescriptionTable.add(ImageGetter.getStatIcon("Movement")).size(20f) - unitDescriptionTable.add(unit.getMovementString()).padRight(10f) + unitDescriptionTable.add(Fonts.movement + unit.getMovementString()).padRight(10f) - if (!unit.isCivilian()) { - unitDescriptionTable.add(ImageGetter.getStatIcon("Strength")).size(20f) - unitDescriptionTable.add(unit.baseUnit.strength.tr()).padRight(10f) - } + if (!unit.isCivilian()) + unitDescriptionTable.add(Fonts.strength + unit.baseUnit.strength.tr()).padRight(10f) - if (unit.baseUnit.rangedStrength != 0) { - unitDescriptionTable.add(ImageGetter.getStatIcon("RangedStrength")).size(20f) - unitDescriptionTable.add(unit.baseUnit.rangedStrength.tr()).padRight(10f) - } + if (unit.baseUnit.rangedStrength != 0) + unitDescriptionTable.add(Fonts.rangedStrength + unit.baseUnit.rangedStrength.tr()).padRight(10f) - if (unit.baseUnit.isRanged()) { - unitDescriptionTable.add(ImageGetter.getStatIcon("Range")).size(20f) - unitDescriptionTable.add(unit.getRange().tr()).padRight(10f) - } + if (unit.baseUnit.isRanged()) + unitDescriptionTable.add(Fonts.range + unit.getRange().tr()).padRight(10f) val interceptionRange = unit.getInterceptionRange() if (interceptionRange > 0) { @@ -260,7 +254,7 @@ class UnitTable(val worldScreen: WorldScreen) : Table() { 1 -> Color.BROWN 2 -> Color.LIGHT_GRAY 3 -> Color.GOLD - else -> Color.BLACK + else -> ImageGetter.CHARCOAL } repeat(spy.rank) { val star = ImageGetter.getImage("OtherIcons/Star") @@ -283,11 +277,11 @@ class UnitTable(val worldScreen: WorldScreen) : Table() { unitIconHolder.add(UnitIconGroup(selectedUnit!!, 30f)).pad(5f) for (promotion in selectedUnit!!.promotions.getPromotions(true)) - promotionsTable.add(ImageGetter.getPromotionPortrait(promotion.name)).padBottom(2f) + promotionsTable.add(ImageGetter.getPromotionPortrait(promotion.name, 20f)).padBottom(2f) for (status in selectedUnit!!.statuses) { val group = ImageGetter.getPromotionPortrait(status.name) - val turnsLeft = "${status.turnsLeft}${Fonts.turn}".toLabel(fontSize = 8).surroundWithCircle(15f, color = Color.BLACK) + val turnsLeft = "${status.turnsLeft}${Fonts.turn}".toLabel(fontSize = 8).surroundWithCircle(15f, color = ImageGetter.CHARCOAL) group.addActor(turnsLeft) turnsLeft.setPosition(group.width, 0f, Align.bottomRight) promotionsTable.add(group).padBottom(2f) @@ -309,6 +303,7 @@ class UnitTable(val worldScreen: WorldScreen) : Table() { } pack() + deselectUnitButton.setPosition(width - deselectUnitButton.width*3/4, height - deselectUnitButton.height*3/4) bg.setSize(width-3f, height-3f) bg.center(this) selectedUnitHasChanged = false diff --git a/core/src/com/unciv/ui/screens/worldscreen/worldmap/OverlayButtonData.kt b/core/src/com/unciv/ui/screens/worldscreen/worldmap/OverlayButtonData.kt index 043ef6686e2f6..9b8b8904fa968 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/worldmap/OverlayButtonData.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/worldmap/OverlayButtonData.kt @@ -42,10 +42,10 @@ class MoveHereOverlayButtonData(val unitToTurnsToDestination: HashMap().apply { civilizations.forEach { add(Player(it)) } add(Player(Constants.spectator, PlayerType.Human)) diff --git a/fastlane/metadata/android/en-US/changelogs/1082.txt b/fastlane/metadata/android/en-US/changelogs/1082.txt new file mode 100644 index 0000000000000..b57bd90e79c8e --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/1082.txt @@ -0,0 +1,27 @@ +AI: Don't pick most expensive tech as free tech, if it's marked as "0 weight for AI decisions" + +Run mod compatibility checks on another thread, to avoid ANRs in new game screen + +Resolved - automated air units with "Cannot move" do not move + +Removed uses of UncivGame.Current.gameInfo when unnecessary + +Decreased base Fort value to not build it instead of useful improvements + +Resolve - Remove images of expended units + +Fix tests, unresolve + +Resolved - Display city state type name for battle bonuses + +Resolved - AI can move air units with "Cannot move" unique + +Resolved - "Unit built" notification selects the built unit + +4.14.13-patch1 + +Fixed battle animation crash + +Map mirroring! + +Crop images - By itanasi \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/1083.txt b/fastlane/metadata/android/en-US/changelogs/1083.txt new file mode 100644 index 0000000000000..6b025a7776072 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/1083.txt @@ -0,0 +1,19 @@ +UI improvements: + +- Tile Info Table +- Changed Black to Charcoal +- Unit description table + +Fixed cities built on pillages roads colored red + +Fixed scroll position indicator + +Fixed Thai diacritic support + +Added "exit" button in world screen popup menu + +Fixed AI religion belief assessment + +Increase starting Luxury amount to match Civ 5 - By SeventhM + +UI fixes: dividers, checkbox-to-text spacing, multiplayer tab connection button - By Toxile (new contributor!) \ No newline at end of file