Merge branch 'master' of https://github.com/lishaoxia1985/UnCiv
This commit is contained in:
commit
8e79800f80
17 changed files with 190 additions and 76 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -134,3 +134,4 @@ android/assets/fonts/
|
||||||
android/release/android.aab
|
android/release/android.aab
|
||||||
android/assets/maps/
|
android/assets/maps/
|
||||||
android/release/android.aab.sig
|
android/release/android.aab.sig
|
||||||
|
android/release/android-release.aab
|
||||||
|
|
|
@ -9,10 +9,10 @@ android:
|
||||||
- platform-tools
|
- platform-tools
|
||||||
|
|
||||||
# The BuildTools version used by your project
|
# The BuildTools version used by your project
|
||||||
- build-tools-28.0.3
|
- build-tools-29.0.2
|
||||||
|
|
||||||
# The SDK version used to compile your project
|
# The SDK version used to compile your project
|
||||||
- android-28
|
- android-29
|
||||||
|
|
||||||
|
|
||||||
jdk:
|
jdk:
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
[![Travis CI w/ Logo](https://img.shields.io/travis/yairm210/UnCiv/master.svg?logo=travis)](https://travis-ci.org/yairm210/UnCiv)
|
[![Travis CI w/ Logo](https://img.shields.io/travis/yairm210/UnCiv/master.svg?logo=travis)](https://travis-ci.org/yairm210/UnCiv)
|
||||||
[![LibGDX](https://img.shields.io/badge/libgdx-1.9.10-red.svg)](https://libgdx.badlogicgames.com/)
|
[![LibGDX](https://img.shields.io/badge/libgdx-1.9.10-red.svg)](https://libgdx.badlogicgames.com/)
|
||||||
[![Kotlin](https://img.shields.io/badge/kotlin-1.3.41-orange.svg)](http://kotlinlang.org/)
|
[![Kotlin](https://img.shields.io/badge/kotlin-1.3.50-orange.svg)](http://kotlinlang.org/)
|
||||||
|
|
||||||
[![Discord Chat](https://img.shields.io/discord/586194543280390151.svg)](https://discord.gg/bjrB4Xw)
|
[![Discord Chat](https://img.shields.io/discord/586194543280390151.svg)](https://discord.gg/bjrB4Xw)
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ Made with LibGDX on Android Studio
|
||||||
|
|
||||||
* Map tiles (including water), resources and improvements
|
* Map tiles (including water), resources and improvements
|
||||||
* Units and movement
|
* Units and movement
|
||||||
|
* Air units
|
||||||
* Cities, production and buildings
|
* Cities, production and buildings
|
||||||
* Population and Specialists
|
* Population and Specialists
|
||||||
* Science, Cultural and Domination victories
|
* Science, Cultural and Domination victories
|
||||||
|
@ -26,13 +27,14 @@ Made with LibGDX on Android Studio
|
||||||
* Promotions and combat modifiers
|
* Promotions and combat modifiers
|
||||||
* Other civilizations, diplomacy and trade
|
* Other civilizations, diplomacy and trade
|
||||||
* City-states
|
* City-states
|
||||||
* Hotseat multiplayer
|
* Multiplayer (hotseat and across internet)
|
||||||
* Map editor
|
* Map editor
|
||||||
|
|
||||||
# What's next?
|
# What's next?
|
||||||
|
|
||||||
* UI+UX improvements (suggestions welcome!)
|
* UI+UX improvements (suggestions welcome!)
|
||||||
* Air units
|
* Filling out gaps (missing civs etc)
|
||||||
|
|
||||||
|
|
||||||
I'd love to hear your feedback, either here or via mail to yairm210@hotmail.com!
|
I'd love to hear your feedback, either here or via mail to yairm210@hotmail.com!
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,7 @@
|
||||||
Simplified_Chinese:"向[civName]宣战吗?"
|
Simplified_Chinese:"向[civName]宣战吗?"
|
||||||
Portuguese:"Deseja declarar guerra a [civName]?"
|
Portuguese:"Deseja declarar guerra a [civName]?"
|
||||||
Polish:"Wypowiedz wojnę cywilizacji [civName]"
|
Polish:"Wypowiedz wojnę cywilizacji [civName]"
|
||||||
|
Russian:"Объявить войну [civName]?"
|
||||||
}
|
}
|
||||||
|
|
||||||
"[civName] has declared war on us!":{
|
"[civName] has declared war on us!":{
|
||||||
|
@ -101,6 +102,7 @@
|
||||||
Portuguese:"Negociar paz"
|
Portuguese:"Negociar paz"
|
||||||
French:"Négocier la paix"
|
French:"Négocier la paix"
|
||||||
Polish:"Negocjuj pokój"
|
Polish:"Negocjuj pokój"
|
||||||
|
Russian:"Предложить мир"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Very well.":{
|
"Very well.":{
|
||||||
|
@ -109,6 +111,7 @@
|
||||||
Simplified_Chinese:"很好。"
|
Simplified_Chinese:"很好。"
|
||||||
Portuguese:"Muito bem."
|
Portuguese:"Muito bem."
|
||||||
Polish:"Niech tak będzie."
|
Polish:"Niech tak będzie."
|
||||||
|
Russian:"Очень хорошо."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Farewell.":{
|
"Farewell.":{
|
||||||
|
@ -117,12 +120,14 @@
|
||||||
Simplified_Chinese:"再见。"
|
Simplified_Chinese:"再见。"
|
||||||
Portuguese:"Adeus."
|
Portuguese:"Adeus."
|
||||||
Polish:"Żegnaj."
|
Polish:"Żegnaj."
|
||||||
|
Russian:"До встречи."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Sounds good!":{
|
"Sounds good!":{
|
||||||
Italian:"Sta bene!"
|
Italian:"Sta bene!"
|
||||||
French:"Très bien!"
|
French:"Très bien!"
|
||||||
Polish:"Bardzo dobrze!"
|
Polish:"Bardzo dobrze!"
|
||||||
|
Russian:"Звучит неплохо!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Not this time.":{ // declining trade text
|
"Not this time.":{ // declining trade text
|
||||||
|
@ -131,6 +136,7 @@
|
||||||
French:"Pas cette fois."
|
French:"Pas cette fois."
|
||||||
Portuguese:"Dessa vez não."
|
Portuguese:"Dessa vez não."
|
||||||
Polish:"To się nie uda"
|
Polish:"To się nie uda"
|
||||||
|
Russian:"Не в этот раз."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Excellent!":{ // AI statement after we accept a trade they proposed, and when we meet a city state, and our response when they agree to our diplomatic demand
|
"Excellent!":{ // AI statement after we accept a trade they proposed, and when we meet a city state, and our response when they agree to our diplomatic demand
|
||||||
|
@ -139,6 +145,7 @@
|
||||||
French:"Excellent!"
|
French:"Excellent!"
|
||||||
Portuguese:"Excelente!"
|
Portuguese:"Excelente!"
|
||||||
Polish:"Wyśmienicie!"
|
Polish:"Wyśmienicie!"
|
||||||
|
Russian:"Превосходно!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"How about something else...":{ // Counteroffer to AI offer //shouldn't it be 'How about somenthing else?' ?
|
"How about something else...":{ // Counteroffer to AI offer //shouldn't it be 'How about somenthing else?' ?
|
||||||
|
@ -147,6 +154,7 @@
|
||||||
French:"Pourquoi pas autre chose..."
|
French:"Pourquoi pas autre chose..."
|
||||||
Portuguese:"Porque não algo mais..."
|
Portuguese:"Porque não algo mais..."
|
||||||
Polish:"Oto nasza oferta."
|
Polish:"Oto nasza oferta."
|
||||||
|
Russian:"Как насчёт другого..."
|
||||||
}
|
}
|
||||||
|
|
||||||
"A pleasure to meet you.":{
|
"A pleasure to meet you.":{
|
||||||
|
@ -155,6 +163,7 @@
|
||||||
Simplified_Chinese:"很高兴见到你。"
|
Simplified_Chinese:"很高兴见到你。"
|
||||||
Portuguese:"Prazer conhece-lo"
|
Portuguese:"Prazer conhece-lo"
|
||||||
Polish:"Czuję się zaszczycony."
|
Polish:"Czuję się zaszczycony."
|
||||||
|
Russian:"Рады видеть вас."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Our relationship: ":{
|
"Our relationship: ":{
|
||||||
|
@ -163,6 +172,7 @@
|
||||||
Simplified_Chinese:"我们的关系:"
|
Simplified_Chinese:"我们的关系:"
|
||||||
Portuguese:"Nossas relações"
|
Portuguese:"Nossas relações"
|
||||||
Polish:"Nasze relacje:"
|
Polish:"Nasze relacje:"
|
||||||
|
Russian:"Наши отношения"
|
||||||
}
|
}
|
||||||
|
|
||||||
"We have encountered the City-State of [name]!":{ // e.g. the Cultured city state of Vienna
|
"We have encountered the City-State of [name]!":{ // e.g. the Cultured city state of Vienna
|
||||||
|
@ -170,6 +180,7 @@
|
||||||
Portuguese:"Nós encontramos a cidade-estado de [name]"
|
Portuguese:"Nós encontramos a cidade-estado de [name]"
|
||||||
French:"Nous avons rencontré la cité-état de [name]!"
|
French:"Nous avons rencontré la cité-état de [name]!"
|
||||||
Polish:"Napotkaliśmy państwo-miasto o nazwie [name]!"
|
Polish:"Napotkaliśmy państwo-miasto o nazwie [name]!"
|
||||||
|
Russian:"Мы обнаружили город-государство [name]!"
|
||||||
}
|
}
|
||||||
|
|
||||||
// Friendship declaration flavor texts
|
// Friendship declaration flavor texts
|
||||||
|
@ -179,6 +190,7 @@
|
||||||
Simplified_Chinese:"宣布相互友善([numberOfTurns]回合)"
|
Simplified_Chinese:"宣布相互友善([numberOfTurns]回合)"
|
||||||
Portuguese:"Declarar amizade ([numberOfTurns] turns)"
|
Portuguese:"Declarar amizade ([numberOfTurns] turns)"
|
||||||
Polish:"Zadeklaruj przyjaźń na [numberOfTurns] tur"
|
Polish:"Zadeklaruj przyjaźń na [numberOfTurns] tur"
|
||||||
|
Russian:"Объявить о дружбе на [numberOfTurns] ходов"
|
||||||
}
|
}
|
||||||
|
|
||||||
"May our nations forever remain united!":{
|
"May our nations forever remain united!":{
|
||||||
|
@ -187,6 +199,7 @@
|
||||||
Simplified_Chinese:"我们两个文明将永远肝胆相照、休戚与共地站在一起!"
|
Simplified_Chinese:"我们两个文明将永远肝胆相照、休戚与共地站在一起!"
|
||||||
Portuguese:"Que nossas nações se mantenho unidas para sempre!"
|
Portuguese:"Que nossas nações se mantenho unidas para sempre!"
|
||||||
Polish:"Oby ta przyjaźń już zawsze łączyła nasze cywilizacje!"
|
Polish:"Oby ta przyjaźń już zawsze łączyła nasze cywilizacje!"
|
||||||
|
Russian:"Да будут наши державы навеки едины!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Indeed!":{
|
"Indeed!":{
|
||||||
|
@ -195,6 +208,7 @@
|
||||||
Simplified_Chinese:"这是无比正确的命运抉择!"
|
Simplified_Chinese:"这是无比正确的命运抉择!"
|
||||||
Portuguese:"Perfeito!"
|
Portuguese:"Perfeito!"
|
||||||
Polish:"Wspaniale!"
|
Polish:"Wspaniale!"
|
||||||
|
Russian:"Разумеется!"
|
||||||
}
|
}
|
||||||
|
|
||||||
// Denunceation flavour texts
|
// Denunceation flavour texts
|
||||||
|
@ -202,11 +216,13 @@
|
||||||
Italian:"Denuncia ([numberOfTurns] turni)"
|
Italian:"Denuncia ([numberOfTurns] turni)"
|
||||||
French:"Dénoncer ([numberOfTurns] tours)"
|
French:"Dénoncer ([numberOfTurns] tours)"
|
||||||
Polish:"Potęp cywilizację na [numberOfTurns] tur"
|
Polish:"Potęp cywilizację na [numberOfTurns] tur"
|
||||||
|
Russian:"Осуждение на [numberOfTurns] ходов"
|
||||||
}
|
}
|
||||||
|
|
||||||
"We will remember this.":{
|
"We will remember this.":{
|
||||||
Italian:"Non credere che ce lo scorderemo!"
|
Italian:"Non credere che ce lo scorderemo!"
|
||||||
French:"Nous nous en souviendrons."
|
French:"Nous nous en souviendrons."
|
||||||
|
Russian:"Мы это запомним"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -217,6 +233,7 @@
|
||||||
French:"Impardonnable"
|
French:"Impardonnable"
|
||||||
Simplified_Chinese:"仇深似海"
|
Simplified_Chinese:"仇深似海"
|
||||||
Portuguese:"Imperdoável"
|
Portuguese:"Imperdoável"
|
||||||
|
Russian:"Непростительно враждебные"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Enemy":{
|
"Enemy":{
|
||||||
|
@ -224,6 +241,7 @@
|
||||||
French:"Ennemi"
|
French:"Ennemi"
|
||||||
Simplified_Chinese:"宿命之敌"
|
Simplified_Chinese:"宿命之敌"
|
||||||
Portuguese:"Inimigos" //as in 'we are enemies' not just 'they are our enemy'
|
Portuguese:"Inimigos" //as in 'we are enemies' not just 'they are our enemy'
|
||||||
|
Russian:"Враждебные"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Competitor":{
|
"Competitor":{
|
||||||
|
@ -231,6 +249,7 @@
|
||||||
French:"Adversaire" //or en compétition
|
French:"Adversaire" //or en compétition
|
||||||
Simplified_Chinese:"瑜亮之争"
|
Simplified_Chinese:"瑜亮之争"
|
||||||
Portuguese:"Adversários"
|
Portuguese:"Adversários"
|
||||||
|
Russian:"Соперничающие"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Neutral":{
|
"Neutral":{
|
||||||
|
@ -238,6 +257,7 @@
|
||||||
French:"Neutre"
|
French:"Neutre"
|
||||||
Simplified_Chinese:"泛泛之交"
|
Simplified_Chinese:"泛泛之交"
|
||||||
Portuguese:"Neutra" // relation=relação relação is in feminine so therefore neutral(= neutro/neutra) deve ser feminino
|
Portuguese:"Neutra" // relation=relação relação is in feminine so therefore neutral(= neutro/neutra) deve ser feminino
|
||||||
|
Russian:"Нейтральные"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Favorable":{
|
"Favorable":{
|
||||||
|
@ -245,6 +265,7 @@
|
||||||
French:"Favorable"
|
French:"Favorable"
|
||||||
Simplified_Chinese:"惺惺相惜"
|
Simplified_Chinese:"惺惺相惜"
|
||||||
Portuguese:"Favorável"
|
Portuguese:"Favorável"
|
||||||
|
Russian:"Приемлемые"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Friend":{
|
"Friend":{
|
||||||
|
@ -252,6 +273,7 @@
|
||||||
French:"Ami"
|
French:"Ami"
|
||||||
Simplified_Chinese:"秦晋之好"
|
Simplified_Chinese:"秦晋之好"
|
||||||
Portuguese:"Amigos"
|
Portuguese:"Amigos"
|
||||||
|
Russian:"Дружеские"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Ally":{
|
"Ally":{
|
||||||
|
@ -259,6 +281,7 @@
|
||||||
French:"Allié"
|
French:"Allié"
|
||||||
Simplified_Chinese:"歃血之盟"
|
Simplified_Chinese:"歃血之盟"
|
||||||
Portuguese:"Aliado"
|
Portuguese:"Aliado"
|
||||||
|
Russian:"Союзнические"
|
||||||
}
|
}
|
||||||
|
|
||||||
// City States
|
// City States
|
||||||
|
@ -266,31 +289,37 @@
|
||||||
"Provides [amountOfCulture] culture at 30 Influence":{
|
"Provides [amountOfCulture] culture at 30 Influence":{
|
||||||
Italian:"Dona [amountOfCulture] punti Cultura a minimo 30 Punti Influenza"
|
Italian:"Dona [amountOfCulture] punti Cultura a minimo 30 Punti Influenza"
|
||||||
French:"Fournit [amountOfCulture] de Culture à 30 d'influence"
|
French:"Fournit [amountOfCulture] de Culture à 30 d'influence"
|
||||||
|
Russian:"Даёт [amountOfCulture] культуры при 30 Влияния"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Provides 3 food in capital and 1 food in other cities at 30 Influence":{
|
"Provides 3 food in capital and 1 food in other cities at 30 Influence":{
|
||||||
Italian:"Dona 3 Cibo alla Capitale e 1 Cibo alle altre Città a minimo 30 Punti Influenza"
|
Italian:"Dona 3 Cibo alla Capitale e 1 Cibo alle altre Città a minimo 30 Punti Influenza"
|
||||||
French:"Fournit 3 Nourriture à la capitale et 1 nourriture pour les autres villes à 30 d'influence"
|
French:"Fournit 3 Nourriture à la capitale et 1 nourriture pour les autres villes à 30 d'influence"
|
||||||
|
Russian:"Даёт 3 Еды в столице и 1 Еда в остальных городах при 30 Влияния"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Provides 3 happiness at 30 Influence":{
|
"Provides 3 happiness at 30 Influence":{
|
||||||
Italian:"Dona 3 Punti Felicità a minimo 30 Punti Influenza"
|
Italian:"Dona 3 Punti Felicità a minimo 30 Punti Influenza"
|
||||||
French:"Fournit 3 de Bonheur à 30 d'influence"
|
French:"Fournit 3 de Bonheur à 30 d'influence"
|
||||||
|
Russian:"Даёт 3 Счастья при 30 Влияния"
|
||||||
},
|
},
|
||||||
|
|
||||||
"Provides land units every 20 turns at 30 Influence":{
|
"Provides land units every 20 turns at 30 Influence":{
|
||||||
Italian:"Concede un'unità terrestre ogni 20 turni a minimo 30 Punti Influenza"
|
Italian:"Concede un'unità terrestre ogni 20 turni a minimo 30 Punti Influenza"
|
||||||
French:"Fournit des unités terrestres tous les 20 tours à 30 d'influence"
|
French:"Fournit des unités terrestres tous les 20 tours à 30 d'influence"
|
||||||
|
Russian:"Даёт сухопутные юниты каждые 20 ходов при 30 Влияния"
|
||||||
},
|
},
|
||||||
|
|
||||||
"Gift [goldAmount] gold":{
|
"Gift [goldAmount] gold":{
|
||||||
Italian:"Dona [goldAmount] Oro"
|
Italian:"Dona [goldAmount] Oro"
|
||||||
French:"Donner [goldAmount] ors"
|
French:"Donner [goldAmount] ors"
|
||||||
|
Russian:"Дарит [goldAmount] золота"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Relationship changes in another [turnsToRelationshipChange] turns":{
|
"Relationship changes in another [turnsToRelationshipChange] turns":{
|
||||||
Italian:"I rapporti cambieranno tra [turnsToRelationshipChange] turni"
|
Italian:"I rapporti cambieranno tra [turnsToRelationshipChange] turni"
|
||||||
French:"Les relations changent dans [turnsToRelationshipChange] tours"
|
French:"Les relations changent dans [turnsToRelationshipChange] tours"
|
||||||
|
Russian:"Отношения изменятся в следующие [turnsToRelationshipChange] ходов"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -302,6 +331,7 @@
|
||||||
French:"Vous nous avez déclaré la guerre!"
|
French:"Vous nous avez déclaré la guerre!"
|
||||||
Simplified_Chinese:"不知死活的蠢货!你竟敢向我们宣战!"
|
Simplified_Chinese:"不知死活的蠢货!你竟敢向我们宣战!"
|
||||||
Portuguese:"Você declarou guerra contra nós!"
|
Portuguese:"Você declarou guerra contra nós!"
|
||||||
|
Russian:"Вы объявляли нам войну!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Your warmongering ways are unacceptable to us.":{
|
"Your warmongering ways are unacceptable to us.":{
|
||||||
|
@ -309,6 +339,7 @@
|
||||||
French:"Votre bellicisme est inacceptable pour nous."
|
French:"Votre bellicisme est inacceptable pour nous."
|
||||||
Simplified_Chinese:"你的穷兵黩武行径是我们无法容忍的!"
|
Simplified_Chinese:"你的穷兵黩武行径是我们无法容忍的!"
|
||||||
Portuguese:"Seus costumes de guerra são inaceitáveis para nós."
|
Portuguese:"Seus costumes de guerra são inaceitáveis para nós."
|
||||||
|
Russian:"Ваша воинственность для нас неприемлема."
|
||||||
}
|
}
|
||||||
|
|
||||||
"You have captured our cities!":{
|
"You have captured our cities!":{
|
||||||
|
@ -316,6 +347,7 @@
|
||||||
French:"Vous avez capturé nos villes!"
|
French:"Vous avez capturé nos villes!"
|
||||||
Simplified_Chinese:"多行不义必自毙!你竟敢占领我们的城市!"
|
Simplified_Chinese:"多行不义必自毙!你竟敢占领我们的城市!"
|
||||||
Portuguese:"Você capturou nossas(nossa) cidades(cidade)!"
|
Portuguese:"Você capturou nossas(nossa) cidades(cidade)!"
|
||||||
|
Russian:"Вы захватывали наши города!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Years of peace have strengthened our relations.":{
|
"Years of peace have strengthened our relations.":{
|
||||||
|
@ -323,6 +355,7 @@
|
||||||
French:"Les années de paix ont renforcées notre relation"
|
French:"Les années de paix ont renforcées notre relation"
|
||||||
Simplified_Chinese:"多年的和平时光让我们更加珍视彼此的关系。"
|
Simplified_Chinese:"多年的和平时光让我们更加珍视彼此的关系。"
|
||||||
Portuguese:"Anos de paz fortaleceram nossas relações."
|
Portuguese:"Anos de paz fortaleceram nossas relações."
|
||||||
|
Russian:"Годы мира укрепили наши отношения"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Our mutual military struggle brings us closer together.":{
|
"Our mutual military struggle brings us closer together.":{
|
||||||
|
@ -330,6 +363,7 @@
|
||||||
French:"Nos problèmes militaires communs nous ont rapprochés"
|
French:"Nos problèmes militaires communs nous ont rapprochés"
|
||||||
Simplified_Chinese:"共同的戎马岁月拉近了彼此的距离。"
|
Simplified_Chinese:"共同的戎马岁月拉近了彼此的距离。"
|
||||||
Portuguese:"Nossas lutas mutuas nos fazem mais próximos."
|
Portuguese:"Nossas lutas mutuas nos fazem mais próximos."
|
||||||
|
Russian:"Наши совместные боевые действия сблизили нас"
|
||||||
}
|
}
|
||||||
|
|
||||||
"We have signed a public declaration of friendship":{
|
"We have signed a public declaration of friendship":{
|
||||||
|
@ -337,6 +371,7 @@
|
||||||
Simplified_Chinese:"真是美好的一天!我们宣布:两个文明间将彼此尊重、相互友善!"
|
Simplified_Chinese:"真是美好的一天!我们宣布:两个文明间将彼此尊重、相互友善!"
|
||||||
French:"Nous avons publiquement signé une Déclaration d'Amitié"
|
French:"Nous avons publiquement signé une Déclaration d'Amitié"
|
||||||
Portuguese:"Assinamos uma declaração pública de amizade"
|
Portuguese:"Assinamos uma declaração pública de amizade"
|
||||||
|
Russian:"Мы подписали публичную декларацию дружбы"
|
||||||
}
|
}
|
||||||
|
|
||||||
"You have declared friendship with our enemies!":{
|
"You have declared friendship with our enemies!":{
|
||||||
|
@ -344,12 +379,14 @@
|
||||||
French:"Vous avez signé une Déclaration d'Amitié avec nos ennemis!"
|
French:"Vous avez signé une Déclaration d'Amitié avec nos ennemis!"
|
||||||
Simplified_Chinese:"渡尽劫波兄弟在,相逢一笑泯恩仇!我们宣布:冰释前嫌、携手前进!"
|
Simplified_Chinese:"渡尽劫波兄弟在,相逢一笑泯恩仇!我们宣布:冰释前嫌、携手前进!"
|
||||||
Portuguese:"Voçê declarou amizade a um de nossos inimigos!"
|
Portuguese:"Voçê declarou amizade a um de nossos inimigos!"
|
||||||
|
Russian:"Вы дружите с нашими врагами!"
|
||||||
}
|
}
|
||||||
"You have declared friendship with our allies":{
|
"You have declared friendship with our allies":{
|
||||||
Italian:"Hai dichiarato un'amicizia con i nostri alleati."
|
Italian:"Hai dichiarato un'amicizia con i nostri alleati."
|
||||||
French:"Vous avez signé une Déclaration d'Amitié avec nos alliés"
|
French:"Vous avez signé une Déclaration d'Amitié avec nos alliés"
|
||||||
Simplified_Chinese:"兄弟齐心、其利断金!我们宣布:我们与盟友间兄弟般的友谊永世长存!"
|
Simplified_Chinese:"兄弟齐心、其利断金!我们宣布:我们与盟友间兄弟般的友谊永世长存!"
|
||||||
Portuguese:"Voçê declarou amizade a um de nossos aliados"
|
Portuguese:"Voçê declarou amizade a um de nossos aliados"
|
||||||
|
Russian:"Вы дружите с нашими союзниками"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Our open borders have brought us closer together.":{
|
"Our open borders have brought us closer together.":{
|
||||||
|
@ -357,6 +394,7 @@
|
||||||
French:"Notre Accord de libre passage nous a rapprochés"
|
French:"Notre Accord de libre passage nous a rapprochés"
|
||||||
Simplified_Chinese:"开放的边界促进了彼此的了解,让我们的人民心心相通!"
|
Simplified_Chinese:"开放的边界促进了彼此的了解,让我们的人民心心相通!"
|
||||||
Portuguese:"Nossa fronteiras abertas nos fizeram mais próximos."
|
Portuguese:"Nossa fronteiras abertas nos fizeram mais próximos."
|
||||||
|
Russian:"Наши открытые границы сблизили нас"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -364,64 +402,77 @@
|
||||||
Italian:"La tua cosiddetta 'amicizia' non vale nulla!"
|
Italian:"La tua cosiddetta 'amicizia' non vale nulla!"
|
||||||
Portuguese:"Sua chamada 'amizade' não vale nada."
|
Portuguese:"Sua chamada 'amizade' não vale nada."
|
||||||
French:"Votre soi-disant 'amitié' ne vaut rien."
|
French:"Votre soi-disant 'amitié' ne vaut rien."
|
||||||
|
Russian:"Ваше так называемое дружелюбие ничего не значит."
|
||||||
}
|
}
|
||||||
|
|
||||||
"You have publicly denounced us!":{
|
"You have publicly denounced us!":{
|
||||||
Italian:"Ci hai denunciato pubblicamente di fronte al mondo!"
|
Italian:"Ci hai denunciato pubblicamente di fronte al mondo!"
|
||||||
French:"Vous nous avez dénoncé publiquement!"
|
French:"Vous nous avez dénoncé publiquement!"
|
||||||
|
Russian:"Вы публично осудили нас!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"You have denounced our allies":{
|
"You have denounced our allies":{
|
||||||
Italian:"Hai denunciato i nostri alleati!"
|
Italian:"Hai denunciato i nostri alleati!"
|
||||||
French:"Vous avez dénoncé nos alliées"
|
French:"Vous avez dénoncé nos alliées"
|
||||||
|
Russian:"Вы осудили наших союзников!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"You have denounced our enemies":{
|
"You have denounced our enemies":{
|
||||||
Italian:"Hai denunciato i nostri nemici!"
|
Italian:"Hai denunciato i nostri nemici!"
|
||||||
French:"Vous avez dénoncé nos ennemies"
|
French:"Vous avez dénoncé nos ennemies"
|
||||||
|
Russian:"Вы осудили наших врагов"
|
||||||
}
|
}
|
||||||
|
|
||||||
// Demands
|
// Demands
|
||||||
"Demands":{
|
"Demands":{
|
||||||
Italian:"Richieste"
|
Italian:"Richieste"
|
||||||
French:"Demandes"
|
French:"Demandes"
|
||||||
|
Russian:"Требования"
|
||||||
}
|
}
|
||||||
"Please don't settle new cities near us.":{
|
"Please don't settle new cities near us.":{
|
||||||
Italian:"Smetti di fondare città vicino a noi."
|
Italian:"Smetti di fondare città vicino a noi."
|
||||||
French:"Veuillez ne pas construire de villes proches de nous."
|
French:"Veuillez ne pas construire de villes proches de nous."
|
||||||
|
Russian:"Пожалуйста, не закладывайте новых городов рядом с нами."
|
||||||
}
|
}
|
||||||
"Very well, we shall look for new lands to settle.":{
|
"Very well, we shall look for new lands to settle.":{
|
||||||
Italian:"Ti porgiamo le nostre scuse."
|
Italian:"Ti porgiamo le nostre scuse."
|
||||||
French:"Très bien, nous chercherons d'autres terres à coloniser"
|
French:"Très bien, nous chercherons d'autres terres à coloniser"
|
||||||
|
Russian:"Хорошо, мы найдем другие земли для поселений"
|
||||||
}
|
}
|
||||||
"We shall do as we please.":{
|
"We shall do as we please.":{
|
||||||
Italian:"Colonizzeremo la terra che ci pare e piace."
|
Italian:"Colonizzeremo la terra che ci pare e piace."
|
||||||
French:"Nous faisons ce que nous voulons."
|
French:"Nous faisons ce que nous voulons."
|
||||||
|
Russian:"Мы поступим, как сочтем нужным"
|
||||||
}
|
}
|
||||||
|
|
||||||
"You betrayed your promise to not settle cities near us":{
|
"You betrayed your promise to not settle cities near us":{
|
||||||
Italian:"Hai tradito la tua promessa di non fondare città nelle nostre vicinanze."
|
Italian:"Hai tradito la tua promessa di non fondare città nelle nostre vicinanze."
|
||||||
French:"Vous avez trahis votre promesse de ne pas fonder de ville proche de nous"
|
French:"Vous avez trahis votre promesse de ne pas fonder de ville proche de nous"
|
||||||
|
Russian:"Вы нарушили ваше обещание не закладывать города рядом с нами"
|
||||||
}
|
}
|
||||||
|
|
||||||
"You fulfilled your promise to stop settling cities near us!":{
|
"You fulfilled your promise to stop settling cities near us!":{
|
||||||
Italian:"Hai mantenuto la tua promessa di non fondare città nelle nostre vicinanze."
|
Italian:"Hai mantenuto la tua promessa di non fondare città nelle nostre vicinanze."
|
||||||
French:"Vous avez tenu votre promesse de ne pas fonder de ville proche de nous!"
|
French:"Vous avez tenu votre promesse de ne pas fonder de ville proche de nous!"
|
||||||
|
Russian:"Вы выполнили ваше обещание не закладывать города рядом с нами"
|
||||||
}
|
}
|
||||||
|
|
||||||
"You refused to stop settling cities near us":{
|
"You refused to stop settling cities near us":{
|
||||||
Italian:"Hai continuato a fondare città nelle nostre vicinanze."
|
Italian:"Hai continuato a fondare città nelle nostre vicinanze."
|
||||||
French:"Vous avez refusez de ne pas fonder de villes proches de nous"
|
French:"Vous avez refusez de ne pas fonder de villes proches de nous"
|
||||||
|
Russian:"Вы отказались не закладывать города рядом с нами"
|
||||||
}
|
}
|
||||||
|
|
||||||
"We noticed your new city near our borders, despite your promise. This will have....implications.":{
|
"We noticed your new city near our borders, despite your promise. This will have....implications.":{
|
||||||
Italian:"Abbiamo notato la la tua nuova città vicino ai nostri confini. E questo avrà... ripercussioni sui nostri rapporti."
|
Italian:"Abbiamo notato la la tua nuova città vicino ai nostri confini. E questo avrà... ripercussioni sui nostri rapporti."
|
||||||
French:"Nous avons remarquez votre nouvelle ville à notre frontière, malgré votre promesse. Cela aura des... conséquences."
|
French:"Nous avons remarquez votre nouvelle ville à notre frontière, malgré votre promesse. Cela aura des... conséquences."
|
||||||
|
Russian:"Мы заметили ваш новый город около наших границ. Это может повлечь... последствия."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Your arrogant demands are in bad taste":{
|
"Your arrogant demands are in bad taste":{
|
||||||
Italian:"Hai fatto una richiesta arrogante."
|
Italian:"Hai fatto una richiesta arrogante."
|
||||||
French:"Vos arrogantes demandes sont de mauvais goût"
|
French:"Vos arrogantes demandes sont de mauvais goût"
|
||||||
|
Russian:"Ваши высокомерные требования раздражают"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -432,24 +483,28 @@
|
||||||
Italian:"Acculturata"
|
Italian:"Acculturata"
|
||||||
French:"Cultivée"
|
French:"Cultivée"
|
||||||
Simplified_Chinese:"文化型"
|
Simplified_Chinese:"文化型"
|
||||||
|
Russian:"Культурный"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Maritime":{
|
"Maritime":{
|
||||||
Italian:"Marittima"
|
Italian:"Marittima"
|
||||||
French:"Maritime" //same
|
French:"Maritime" //same
|
||||||
Simplified_Chinese:"航海型"
|
Simplified_Chinese:"航海型"
|
||||||
|
Russian:"Морской"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Mercantile":{
|
"Mercantile":{
|
||||||
Italian:"Mercantile"
|
Italian:"Mercantile"
|
||||||
//same in french
|
//same in french
|
||||||
Simplified_Chinese:"商业型"
|
Simplified_Chinese:"商业型"
|
||||||
|
Russian:"Торговый"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Militaristic":{
|
"Militaristic":{
|
||||||
Italian:"Militaristica"
|
Italian:"Militaristica"
|
||||||
French:"Militarisée"
|
French:"Militarisée"
|
||||||
Simplified_Chinese:"军事型"
|
Simplified_Chinese:"军事型"
|
||||||
|
Russian:"Воинственный"
|
||||||
}
|
}
|
||||||
|
|
||||||
////// Trade
|
////// Trade
|
||||||
|
@ -478,6 +533,7 @@
|
||||||
|
|
||||||
"Retract offer":{
|
"Retract offer":{
|
||||||
Italian:"Ritira offerta"
|
Italian:"Ritira offerta"
|
||||||
|
Russian:"Отменить предложение"
|
||||||
}
|
}
|
||||||
|
|
||||||
"What do you have in mind?":{
|
"What do you have in mind?":{
|
||||||
|
@ -504,7 +560,7 @@
|
||||||
|
|
||||||
"Our trade offer":{
|
"Our trade offer":{
|
||||||
Italian:"La nostra offerta"
|
Italian:"La nostra offerta"
|
||||||
Russian:"Наше предложение\n обмена"
|
Russian:"Наше предложение"
|
||||||
French:"Notre offre d'échange"
|
French:"Notre offre d'échange"
|
||||||
Romanian:"Oferta noastră"
|
Romanian:"Oferta noastră"
|
||||||
Spanish:"Nuestra oferta"
|
Spanish:"Nuestra oferta"
|
||||||
|
@ -515,7 +571,7 @@
|
||||||
|
|
||||||
"[otherCiv]'s trade offer":{
|
"[otherCiv]'s trade offer":{
|
||||||
Italian:"Offerta di [otherCiv]"
|
Italian:"Offerta di [otherCiv]"
|
||||||
Russian:"Предложение обмена \n цивилизации [otherCiv]"
|
Russian:"Предложение от [otherCiv]"
|
||||||
French:"L'offre d'échange de [otherCiv]"
|
French:"L'offre d'échange de [otherCiv]"
|
||||||
Romanian:"Ofertă de schimb a [otherCiv]"
|
Romanian:"Ofertă de schimb a [otherCiv]"
|
||||||
Spanish:"Oferta de [otherCiv]"
|
Spanish:"Oferta de [otherCiv]"
|
||||||
|
@ -584,6 +640,7 @@
|
||||||
French:"Continuer..."
|
French:"Continuer..."
|
||||||
Simplified_Chinese:"继续..."
|
Simplified_Chinese:"继续..."
|
||||||
Portuguese:"Prossiga"
|
Portuguese:"Prossiga"
|
||||||
|
Russian:"Продолжить"
|
||||||
}
|
}
|
||||||
|
|
||||||
"There's nothing on the table":{
|
"There's nothing on the table":{
|
||||||
|
@ -613,6 +670,7 @@
|
||||||
Simplified_Chinese:"协定"
|
Simplified_Chinese:"协定"
|
||||||
French:"Accords"
|
French:"Accords"
|
||||||
Portuguese:"Acordos"
|
Portuguese:"Acordos"
|
||||||
|
Russian:"Соглашения"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Open Borders":{
|
"Open Borders":{
|
||||||
|
@ -620,6 +678,7 @@
|
||||||
Simplified_Chinese:"开放边境"
|
Simplified_Chinese:"开放边境"
|
||||||
French:"Accord de libre passage"
|
French:"Accord de libre passage"
|
||||||
Portuguese:"Acordo de fronteiras abertas"
|
Portuguese:"Acordo de fronteiras abertas"
|
||||||
|
Russian:"Открытые границы"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Gold per turn":{
|
"Gold per turn":{
|
||||||
|
@ -651,6 +710,7 @@
|
||||||
French:"Technologies"
|
French:"Technologies"
|
||||||
Simplified_Chinese:"科技"
|
Simplified_Chinese:"科技"
|
||||||
Portuguese:"Tecnologias"
|
Portuguese:"Tecnologias"
|
||||||
|
Russian:"Технологии"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Declarations of war":{
|
"Declarations of war":{
|
||||||
|
@ -658,6 +718,7 @@
|
||||||
French:"Déclarations de guerre"
|
French:"Déclarations de guerre"
|
||||||
Simplified_Chinese:"宣战"
|
Simplified_Chinese:"宣战"
|
||||||
Portuguese:"Declarações de guerra"
|
Portuguese:"Declarações de guerra"
|
||||||
|
Russian:"Объявления войны"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Introduction to [nation]":{
|
"Introduction to [nation]":{
|
||||||
|
@ -669,6 +730,7 @@
|
||||||
French:"Ressources de luxes"
|
French:"Ressources de luxes"
|
||||||
Simplified_Chinese:"奢侈资源"
|
Simplified_Chinese:"奢侈资源"
|
||||||
Portuguese:"Recursos raros/luxuosos" //raros = rare luxuosos = luxurious
|
Portuguese:"Recursos raros/luxuosos" //raros = rare luxuosos = luxurious
|
||||||
|
Russian:"Редкие ресуры"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Strategic resources":{
|
"Strategic resources":{
|
||||||
|
@ -676,6 +738,7 @@
|
||||||
French:"Ressources stratégiques"
|
French:"Ressources stratégiques"
|
||||||
Simplified_Chinese:"战略资源"
|
Simplified_Chinese:"战略资源"
|
||||||
Portuguese:"Recursos estratégicos"
|
Portuguese:"Recursos estratégicos"
|
||||||
|
Russian:"Стратегические ресуры"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -698,11 +761,13 @@
|
||||||
Simplified_Chinese:"无需战略资源[resourceName]"
|
Simplified_Chinese:"无需战略资源[resourceName]"
|
||||||
French:"[resourceName] non requis"
|
French:"[resourceName] non requis"
|
||||||
Portuguese:"[resourceName] não requirido"
|
Portuguese:"[resourceName] não requirido"
|
||||||
|
Russian:"[resourceName] не требуется"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Lost ability":{ // as in Does not have +1 Visibility Range (or any other unit unique)
|
"Lost ability":{ // as in Does not have +1 Visibility Range (or any other unit unique)
|
||||||
Italian:"Non possiede "
|
Italian:"Non possiede "
|
||||||
Simplified_Chinese:"失去能力"
|
Simplified_Chinese:"失去能力"
|
||||||
|
Russian:"Не имеет "
|
||||||
}
|
}
|
||||||
|
|
||||||
"National ability":{ // the unique ability that each nation has
|
"National ability":{ // the unique ability that each nation has
|
||||||
|
@ -712,7 +777,7 @@
|
||||||
German:"Nationalfähigkeit"
|
German:"Nationalfähigkeit"
|
||||||
French:"Capacité de la civilisation"
|
French:"Capacité de la civilisation"
|
||||||
Portuguese:"Habilidade nacional"
|
Portuguese:"Habilidade nacional"
|
||||||
Russian:"Национальная способность"
|
Russian:"Национальная особенность"
|
||||||
Simplified_Chinese:"民族特性"
|
Simplified_Chinese:"民族特性"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -733,7 +798,7 @@
|
||||||
German:"Ein kostenloser Großer Wissenschaftler erscheint, wenn Schrift erforscht wurde; Große Wissenschaftler erscheinen 50% häufiger"
|
German:"Ein kostenloser Großer Wissenschaftler erscheint, wenn Schrift erforscht wurde; Große Wissenschaftler erscheinen 50% häufiger"
|
||||||
French:"Gagner un scientifique illustre lorsque Ecriture est dévouvert, les scientifiques illustres apparaissent 50% plus vite"
|
French:"Gagner un scientifique illustre lorsque Ecriture est dévouvert, les scientifiques illustres apparaissent 50% plus vite"
|
||||||
Portuguese:"Receba gratuitamente um grande cientista quando você descobrir Escritura, ganhe grandes cientistas 50% mais rápido"
|
Portuguese:"Receba gratuitamente um grande cientista quando você descobrir Escritura, ganhe grandes cientistas 50% mais rápido"
|
||||||
Russian:"Получите бесплатно великого ученого, когда откроете для себя написание, заработайте великих ученых на 50% быстрее"
|
Russian:"Бесплатный Великий Ученый при исследовании Письменности. Великие Ученые появляются на 50% быстрее"
|
||||||
Simplified_Chinese:"发明文字后立即获得一个大科学家,大科学家点数积累速率+50%"
|
Simplified_Chinese:"发明文字后立即获得一个大科学家,大科学家点数积累速率+50%"
|
||||||
Spanish:"Reciba un Gran Científico gratis cuando descubra Escribir, Gane Grandes Científicos 50% más rápido"
|
Spanish:"Reciba un Gran Científico gratis cuando descubra Escribir, Gane Grandes Científicos 50% más rápido"
|
||||||
}
|
}
|
||||||
|
@ -742,6 +807,7 @@
|
||||||
Italian:"Nabucodonosor II"
|
Italian:"Nabucodonosor II"
|
||||||
French:"Nabuchodonosor II"
|
French:"Nabuchodonosor II"
|
||||||
Simplified_Chinese:"尼布甲尼撒二世"
|
Simplified_Chinese:"尼布甲尼撒二世"
|
||||||
|
Russian:"Навуходоносор II"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Greece":{
|
"Greece":{
|
||||||
|
@ -759,11 +825,13 @@
|
||||||
Italian:"Alessandro"
|
Italian:"Alessandro"
|
||||||
French:"Alexandre le Grand"
|
French:"Alexandre le Grand"
|
||||||
Simplified_Chinese:"亚历山大"
|
Simplified_Chinese:"亚历山大"
|
||||||
|
Russian:"Александр Македонский"
|
||||||
},
|
},
|
||||||
|
|
||||||
"City-State Influence degrades at half and recovers at twice the normal rate": {
|
"City-State Influence degrades at half and recovers at twice the normal rate": {
|
||||||
Simplified_Chinese:"对城邦影响力衰减速度减半,恢复速度加倍"
|
Simplified_Chinese:"对城邦影响力衰减速度减半,恢复速度加倍"
|
||||||
Italian:"L'influenza sulle città-stato diminuisce il doppio più lentamente e aumenta il doppio più velocemente."
|
Italian:"L'influenza sulle città-stato diminuisce il doppio più lentamente e aumenta il doppio più velocemente."
|
||||||
|
Russian:"Влияние на города-государства снижается вдвое медленнее и увеличивается вдвое быстрее"
|
||||||
},
|
},
|
||||||
|
|
||||||
"China":{
|
"China":{
|
||||||
|
@ -779,6 +847,7 @@
|
||||||
|
|
||||||
"Wu Zetian":{
|
"Wu Zetian":{
|
||||||
Simplified_Chinese:"武则天"
|
Simplified_Chinese:"武则天"
|
||||||
|
Russian:"У Цзэтянь"
|
||||||
},
|
},
|
||||||
|
|
||||||
"Great general provides double combat bonus, and spawns 50% faster":{
|
"Great general provides double combat bonus, and spawns 50% faster":{
|
||||||
|
@ -790,6 +859,7 @@
|
||||||
Portuguese:"Grande general fornece bônus de combate duplo e é gerado 50% mais rápido"
|
Portuguese:"Grande general fornece bônus de combate duplo e é gerado 50% mais rápido"
|
||||||
Russian:"Великий полководец дает двойной боевой бонус и появляется на 50% быстрее"
|
Russian:"Великий полководец дает двойной боевой бонус и появляется на 50% быстрее"
|
||||||
Spanish:"El gran general proporciona bonificación de combate doble y genera un 50% más rápido."
|
Spanish:"El gran general proporciona bonificación de combate doble y genera un 50% más rápido."
|
||||||
|
Russian:"Великий Полководец дает двойной бонус в бою и появляется на 50% быстрее"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Egypt":{
|
"Egypt":{
|
||||||
|
@ -807,6 +877,7 @@
|
||||||
Italian:"Ramses II"
|
Italian:"Ramses II"
|
||||||
French:"Ramsès II"
|
French:"Ramsès II"
|
||||||
Simplified_Chinese:"拉美西斯二世"
|
Simplified_Chinese:"拉美西斯二世"
|
||||||
|
Russian:"Рамзес II"
|
||||||
}
|
}
|
||||||
|
|
||||||
"+20% production towards Wonder construction":{
|
"+20% production towards Wonder construction":{
|
||||||
|
@ -835,6 +906,7 @@
|
||||||
Italian:"Elisabetta"
|
Italian:"Elisabetta"
|
||||||
//same in french
|
//same in french
|
||||||
Simplified_Chinese:"伊丽莎白"
|
Simplified_Chinese:"伊丽莎白"
|
||||||
|
Russian:"Елизавета"
|
||||||
}
|
}
|
||||||
|
|
||||||
"+2 movement for all naval units":{
|
"+2 movement for all naval units":{
|
||||||
|
@ -863,6 +935,7 @@
|
||||||
Italian:"Napoleone"
|
Italian:"Napoleone"
|
||||||
French:"Napoléon"
|
French:"Napoléon"
|
||||||
Simplified_Chinese:"拿破仑"
|
Simplified_Chinese:"拿破仑"
|
||||||
|
Russian:"Наполеон"
|
||||||
}
|
}
|
||||||
|
|
||||||
"+2 Culture per turn from cities before discovering Steam Power":{
|
"+2 Culture per turn from cities before discovering Steam Power":{
|
||||||
|
@ -872,7 +945,7 @@
|
||||||
Spanish:"+2 Cultura por turno desde las ciudades antes de descubrir la Energía de Vapor."
|
Spanish:"+2 Cultura por turno desde las ciudades antes de descubrir la Energía de Vapor."
|
||||||
Romanian:"+2 Cultură pe turn de la orașe înainte de a descoperi puterea de abur"
|
Romanian:"+2 Cultură pe turn de la orașe înainte de a descoperi puterea de abur"
|
||||||
Portuguese:"+2 Cultura por turno das cidades antes de descobrir o poder do vapor" //'poder do vapor' means the power of steam
|
Portuguese:"+2 Cultura por turno das cidades antes de descobrir o poder do vapor" //'poder do vapor' means the power of steam
|
||||||
Russian:"+2 Культура за ход из городов, прежде чем открыть для себя силу пара"
|
Russian:"+2 Культура за ход от городов до открытия Парового Двигателя"
|
||||||
Simplified_Chinese:"在发明蒸汽机之前,每座城市的文化+2"
|
Simplified_Chinese:"在发明蒸汽机之前,每座城市的文化+2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -891,6 +964,7 @@
|
||||||
Italian:"Caterina II"
|
Italian:"Caterina II"
|
||||||
French:"Catherine II"
|
French:"Catherine II"
|
||||||
Simplified_Chinese:"叶卡捷琳娜二世"
|
Simplified_Chinese:"叶卡捷琳娜二世"
|
||||||
|
Russian:"Екатерина Великая"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Strategic Resources provide +1 Production, and Horses, Iron and Uranium Resources provide double quantity":{
|
"Strategic Resources provide +1 Production, and Horses, Iron and Uranium Resources provide double quantity":{
|
||||||
|
@ -901,7 +975,7 @@
|
||||||
German:"Strategische Ressourcen geben +1 Produktion und Pferde, Eisen und Uran Ressourcen geben die doppelte Menge"
|
German:"Strategische Ressourcen geben +1 Produktion und Pferde, Eisen und Uran Ressourcen geben die doppelte Menge"
|
||||||
French:"Les ressources stratégiques donnent +1 production, et les quantités de chevaux, fer et uranium sont doublés"
|
French:"Les ressources stratégiques donnent +1 production, et les quantités de chevaux, fer et uranium sont doublés"
|
||||||
Portuguese:"Recursos Estratégicos fornecem Produção de +1, recursos de cavalos, ferro e urânio fornecem quantidade dupla"
|
Portuguese:"Recursos Estratégicos fornecem Produção de +1, recursos de cavalos, ferro e urânio fornecem quantidade dupla"
|
||||||
Russian:"Стратегические ресурсы дают +1 к добыче, а ресурсы для лошадей, железа и урана дают двойное количество"
|
Russian:"Стратегические ресурсы дают +1 к производству, а количество ресуров Лошади, Железо и Уран удваивается"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Rome":{
|
"Rome":{
|
||||||
|
@ -919,6 +993,7 @@
|
||||||
Italian:"Cesare Augusto"
|
Italian:"Cesare Augusto"
|
||||||
French:"Jule César"
|
French:"Jule César"
|
||||||
Simplified_Chinese:"奥古斯都·恺撒"
|
Simplified_Chinese:"奥古斯都·恺撒"
|
||||||
|
Russian:"Октавиан Август"
|
||||||
}
|
}
|
||||||
|
|
||||||
"+25% Production towards any buildings that already exist in the Capital":{
|
"+25% Production towards any buildings that already exist in the Capital":{
|
||||||
|
@ -948,6 +1023,7 @@
|
||||||
Italian:"Harun al-Rashid" //Same as Italian
|
Italian:"Harun al-Rashid" //Same as Italian
|
||||||
French:"Hâroun ar-Rachîd"
|
French:"Hâroun ar-Rachîd"
|
||||||
Simplified_Chinese:"哈伦·拉希德"
|
Simplified_Chinese:"哈伦·拉希德"
|
||||||
|
Russian:"Гарун-аль-Рашид"
|
||||||
}
|
}
|
||||||
|
|
||||||
"+1 Gold from each Trade Route, Oil resources provide double quantity":{
|
"+1 Gold from each Trade Route, Oil resources provide double quantity":{
|
||||||
|
@ -955,6 +1031,7 @@
|
||||||
Simplified_Chinese:"每条贸易路线+1金钱,石油储量加倍"
|
Simplified_Chinese:"每条贸易路线+1金钱,石油储量加倍"
|
||||||
Portuguese:"1 ouro adicional de rotas comerciais e recursos de petróleo geram o dobro" // óleo could mean normal kitchen oil and even fuel from sugar cane
|
Portuguese:"1 ouro adicional de rotas comerciais e recursos de petróleo geram o dobro" // óleo could mean normal kitchen oil and even fuel from sugar cane
|
||||||
French:"+1 Or pour chaque route commerciale, la quantité de pétrole est doublée"
|
French:"+1 Or pour chaque route commerciale, la quantité de pétrole est doublée"
|
||||||
|
Russian:"+1 Золото от каждого торгового маршрута, количество ресурса Нефть удваивается"
|
||||||
}
|
}
|
||||||
|
|
||||||
"America":{
|
"America":{
|
||||||
|
@ -972,6 +1049,7 @@
|
||||||
Italian:"George Washington" //Same as Italian
|
Italian:"George Washington" //Same as Italian
|
||||||
//same in french
|
//same in french
|
||||||
Simplified_Chinese:"乔治·华盛顿"
|
Simplified_Chinese:"乔治·华盛顿"
|
||||||
|
Russian:"Джордж Вашингтон"
|
||||||
}
|
}
|
||||||
|
|
||||||
"All land military units have +1 sight, 50% discount when purchasing tiles":{
|
"All land military units have +1 sight, 50% discount when purchasing tiles":{
|
||||||
|
@ -982,7 +1060,7 @@
|
||||||
German:"Alle militärischen Landeinheiten haben +1 Sicht; 50% niedrigerer Preis beim Kauf von Feldern"
|
German:"Alle militärischen Landeinheiten haben +1 Sicht; 50% niedrigerer Preis beim Kauf von Feldern"
|
||||||
French:"Toutes les unités terrestres ont +1 porté de vision, les cases coutent 50% de leurs prix à l'achat"
|
French:"Toutes les unités terrestres ont +1 porté de vision, les cases coutent 50% de leurs prix à l'achat"
|
||||||
Portuguese:"Todas as unidades militares terrestres ganham +1 alcançe devisão e 50% de desconto na compra de terrenos" //i don't remember my translations being this bad? who was the monster?
|
Portuguese:"Todas as unidades militares terrestres ganham +1 alcançe devisão e 50% de desconto na compra de terrenos" //i don't remember my translations being this bad? who was the monster?
|
||||||
Russian:"Все наземные воинские части имеют +1 прицел, скидка 50% при покупке плитки"
|
Russian:"Все наземные военные юниты имеют +1 обзор, скидка 50% при покупке клетки"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Japan":{
|
"Japan":{
|
||||||
|
@ -1000,6 +1078,7 @@
|
||||||
Italian:"Oda Nobunaga" //Same as Italian
|
Italian:"Oda Nobunaga" //Same as Italian
|
||||||
//same in french
|
//same in french
|
||||||
Simplified_Chinese:"织田信长"
|
Simplified_Chinese:"织田信长"
|
||||||
|
Russian:"Ода Нобунага"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Units fight as though they were at full strength even when damaged":{
|
"Units fight as though they were at full strength even when damaged":{
|
||||||
|
@ -1010,7 +1089,7 @@
|
||||||
German:"Einheiten kämpfen so, als wären sie selbst bei Beschädigung in voller Stärke"
|
German:"Einheiten kämpfen so, als wären sie selbst bei Beschädigung in voller Stärke"
|
||||||
French:"Les unités combattent comme si elles étaient à pleine force même lorsqu'elles sont endommagées"
|
French:"Les unités combattent comme si elles étaient à pleine force même lorsqu'elles sont endommagées"
|
||||||
Portuguese:"Unidades lutam como se estivessem em força total mesmo quando danificadas"
|
Portuguese:"Unidades lutam como se estivessem em força total mesmo quando danificadas"
|
||||||
Russian:"Юниты сражаются, как будто они в полной силе, даже когда повреждены"
|
Russian:"Юниты сражаются в полную силу, даже будучи ранеными"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Germany":{
|
"Germany":{
|
||||||
|
@ -1018,18 +1097,21 @@
|
||||||
French:"Allemagne"
|
French:"Allemagne"
|
||||||
Simplified_Chinese:"德意志"
|
Simplified_Chinese:"德意志"
|
||||||
Portuguese:"Alemanha"
|
Portuguese:"Alemanha"
|
||||||
|
Russian:"Германия"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Otto von Bismark":{
|
"Otto von Bismark":{
|
||||||
Italian:"Otto von Bismark" //Same as Italian
|
Italian:"Otto von Bismark" //Same as Italian
|
||||||
French:"Otto von Bismarck"
|
French:"Otto von Bismarck"
|
||||||
Simplified_Chinese:"奥托·冯·俾斯麦"
|
Simplified_Chinese:"奥托·冯·俾斯麦"
|
||||||
|
Russian:"Отто фон Бисмарк"
|
||||||
}
|
}
|
||||||
|
|
||||||
"67% chance to earn 25 Gold and recruit a Barbarian unit from a conquered encampment, -25% land units maintenance.":{
|
"67% chance to earn 25 Gold and recruit a Barbarian unit from a conquered encampment, -25% land units maintenance.":{
|
||||||
Italian:"67% di probabilità di ottenere 25 Oro e reclutare un'unità barbara da un accampamento catturato. -25% mantenimento delle unità terrestri."
|
Italian:"67% di probabilità di ottenere 25 Oro e reclutare un'unità barbara da un accampamento catturato. -25% mantenimento delle unità terrestri."
|
||||||
French:"67% de chance de gagner 25 or et d'enroler une unité barbare lors de la prise d'un campement barbare. -25% de coût de maintenance pour les unités terrestres."
|
French:"67% de chance de gagner 25 or et d'enroler une unité barbare lors de la prise d'un campement barbare. -25% de coût de maintenance pour les unités terrestres."
|
||||||
Simplified_Chinese:"击败蛮族营地中的蛮族单位有67%几率得到25金钱并使其加入,陆上单位维护费-25%"
|
Simplified_Chinese:"击败蛮族营地中的蛮族单位有67%几率得到25金钱并使其加入,陆上单位维护费-25%"
|
||||||
|
Russian:"Шанс 67% получить 25 Золото и варварский юнит из захваченного лагеря. -25% к стоимости содержания наземных юнитов.
|
||||||
}
|
}
|
||||||
|
|
||||||
"India":{
|
"India":{
|
||||||
|
@ -1037,12 +1119,14 @@
|
||||||
French:"Inde"
|
French:"Inde"
|
||||||
Portuguese:"Índia"
|
Portuguese:"Índia"
|
||||||
Simplified_Chinese:"印度"
|
Simplified_Chinese:"印度"
|
||||||
|
Russian:"Индия"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Gandhi":{
|
"Gandhi":{
|
||||||
Italian:"Gandhi" //Same as Italian
|
Italian:"Gandhi" //Same as Italian
|
||||||
//same in french
|
//same in french
|
||||||
Simplified_Chinese:"甘地"
|
Simplified_Chinese:"甘地"
|
||||||
|
Russian:"Махатма Ганди"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Unhappiness from number of Cities doubled, Unhappiness from number of Citizens halved.":{
|
"Unhappiness from number of Cities doubled, Unhappiness from number of Citizens halved.":{
|
||||||
|
@ -1050,6 +1134,7 @@
|
||||||
Portuguese:"Tristeza por número de cidades dobrada e tristeza por número de cidadões reduzida pela metade"
|
Portuguese:"Tristeza por número de cidades dobrada e tristeza por número de cidadões reduzida pela metade"
|
||||||
French:"Le mécontentement dut au nombre de villes est doublé. Le mécontentement dut au nombre de citoyens est réduit de moitié"
|
French:"Le mécontentement dut au nombre de villes est doublé. Le mécontentement dut au nombre de citoyens est réduit de moitié"
|
||||||
Simplified_Chinese:"城市数量导致的不满加倍,市民数量导致的不满减半"
|
Simplified_Chinese:"城市数量导致的不满加倍,市民数量导致的不满减半"
|
||||||
|
Russian:"Удвоенное недовольство от числа городов. Недовольство от количества горожан в два раза меньше."
|
||||||
}
|
}
|
||||||
|
|
||||||
"The Ottomans":{
|
"The Ottomans":{
|
||||||
|
@ -1057,12 +1142,14 @@
|
||||||
French:"Turquie"
|
French:"Turquie"
|
||||||
Portuguese:"Turquia"
|
Portuguese:"Turquia"
|
||||||
Simplified_Chinese:"奥斯曼"
|
Simplified_Chinese:"奥斯曼"
|
||||||
|
Russian:"Турция"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Suleiman I":{
|
"Suleiman I":{
|
||||||
Italian:"Solimano I"
|
Italian:"Solimano I"
|
||||||
French:"Soliman le Magnifique"
|
French:"Soliman le Magnifique"
|
||||||
Simplified_Chinese:"苏莱曼一世"
|
Simplified_Chinese:"苏莱曼一世"
|
||||||
|
Russian:"Сулейман I"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Pay only one third the usual cost for naval unit maintenance. Melee naval units have a 1/3 chance to capture defeated naval units.":{
|
"Pay only one third the usual cost for naval unit maintenance. Melee naval units have a 1/3 chance to capture defeated naval units.":{
|
||||||
|
@ -1070,6 +1157,7 @@
|
||||||
Portuguese:"50% de chance de converter uma unidade naval bárbara para ti e ganhar 25 ouro. Gaste apenas 1/3 do custo normal para manter unidades navais."
|
Portuguese:"50% de chance de converter uma unidade naval bárbara para ti e ganhar 25 ouro. Gaste apenas 1/3 do custo normal para manter unidades navais."
|
||||||
French:"50% de chance de convertir une unité barbare navale et de gagner 25 Or. Les unités navales coutent 3 fois moins à entretenir."
|
French:"50% de chance de convertir une unité barbare navale et de gagner 25 Or. Les unités navales coutent 3 fois moins à entretenir."
|
||||||
Simplified_Chinese:"海上单位维护费为正常值的1/3,海军近战单位拥有1/3几率俘获战败的敌方海军单位"
|
Simplified_Chinese:"海上单位维护费为正常值的1/3,海军近战单位拥有1/3几率俘获战败的敌方海军单位"
|
||||||
|
Russian:"Содержание морских юнитов стоит треть обычной цены. Морские юниты ближнего боя имеют 1/3 шанс захвата побеждённых кораблей."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Korea":{
|
"Korea":{
|
||||||
|
@ -1077,6 +1165,7 @@
|
||||||
French:"Corée"
|
French:"Corée"
|
||||||
Portuguese:"Coréia"
|
Portuguese:"Coréia"
|
||||||
Simplified_Chinese:"朝鲜"
|
Simplified_Chinese:"朝鲜"
|
||||||
|
Russian:"Корея"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Sejong":{
|
"Sejong":{
|
||||||
|
@ -1087,6 +1176,13 @@
|
||||||
Simplified_Chinese:"所有专业人员和所有伟人设施+2科研"
|
Simplified_Chinese:"所有专业人员和所有伟人设施+2科研"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"+1 Science for all Specialists and Great Person tile improvements. Receive a tech boost each time a scientific building/Wonder is built in the Korean Capital.":{
|
||||||
|
Italian:"+1 Scienza per ogni Specialista e miglioramento Grande Personaggio. Ricevi uno sprint tecnologico ogni volta che la tua Capitale costruisce un edificio o una Meraviglia scientifica."
|
||||||
|
Portuguese:"+1 ciência por todas as melhorias de terras de especialístas e grandes pessoas. Receba um bonus de pesquisa a cada construção/maravilha ciêntifica é construida na capital"
|
||||||
|
French:"+1 Science pour chaque spécialistes et amélioration de case de personnage illustre. Reçoit un bonus de science à chaque fois qu'un batiment ou une merveille scientifique est construit dans la capitale"
|
||||||
|
Russian:"+1 Наука для всех специалистов и улучшений клеток Великими людьми. Получите бонус к исследованию каждый раз при создании научного здания/чуда в Корейской столице"
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
"Iroquois":{
|
"Iroquois":{
|
||||||
|
@ -1201,7 +1297,7 @@
|
||||||
German:"Unikate"
|
German:"Unikate"
|
||||||
French:"Uniques"
|
French:"Uniques"
|
||||||
Portuguese:"Únicos(a)"
|
Portuguese:"Únicos(a)"
|
||||||
Russian:"уникальный"
|
Russian:"Уникальные юниты"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Promotions":{
|
"Promotions":{
|
||||||
|
@ -1212,7 +1308,7 @@
|
||||||
German:"Beförderungen"
|
German:"Beförderungen"
|
||||||
French:"Promotions"
|
French:"Promotions"
|
||||||
Portuguese:"Promoções"
|
Portuguese:"Promoções"
|
||||||
Russian:"промо акции"
|
Russian:"Повышения"
|
||||||
}
|
}
|
||||||
|
|
||||||
"units in rough terrain":{
|
"units in rough terrain":{
|
||||||
|
|
|
@ -251,7 +251,7 @@
|
||||||
|
|
||||||
EnemyCity: [
|
EnemyCity: [
|
||||||
[
|
[
|
||||||
"You have encoutered an enemy city!",
|
"You have encountered an enemy city!",
|
||||||
"Cities can be conquered by reducing their health to 1,",
|
"Cities can be conquered by reducing their health to 1,",
|
||||||
" and entering the city with a melee unit.",
|
" and entering the city with a melee unit.",
|
||||||
"Since cities heal each turn, it is best to attack with ranged units"
|
"Since cities heal each turn, it is best to attack with ranged units"
|
||||||
|
|
|
@ -20,9 +20,9 @@ android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "com.unciv.app"
|
applicationId "com.unciv.app"
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion 28
|
targetSdkVersion 29
|
||||||
versionCode 293
|
versionCode 294
|
||||||
versionName "3.0.0"
|
versionName "3.0.1"
|
||||||
}
|
}
|
||||||
|
|
||||||
// Had to add this crap for Travis to build, it wanted to sign the app
|
// Had to add this crap for Travis to build, it wanted to sign the app
|
||||||
|
|
|
@ -8,6 +8,7 @@ buildscript {
|
||||||
|
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
// Chinese mirrors for quicker loading for chinese devs
|
||||||
maven{ url 'https://maven.aliyun.com/repository/jcenter'}
|
maven{ url 'https://maven.aliyun.com/repository/jcenter'}
|
||||||
maven{ url 'https://maven.aliyun.com/repository/google'}
|
maven{ url 'https://maven.aliyun.com/repository/google'}
|
||||||
maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
|
maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
|
||||||
|
@ -40,6 +41,7 @@ allprojects {
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
// Chinese mirrors for quicker loading for chinese devs
|
||||||
maven{ url 'https://maven.aliyun.com/repository/jcenter'}
|
maven{ url 'https://maven.aliyun.com/repository/jcenter'}
|
||||||
maven{ url 'https://maven.aliyun.com/repository/google'}
|
maven{ url 'https://maven.aliyun.com/repository/google'}
|
||||||
maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
|
maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
|
||||||
|
|
|
@ -87,7 +87,7 @@ class TileMap {
|
||||||
|
|
||||||
// Only once we add the unit to the civ we can activate addPromotion, because it will try to update civ viewable tiles
|
// Only once we add the unit to the civ we can activate addPromotion, because it will try to update civ viewable tiles
|
||||||
for(promotion in unit.baseUnit.promotions)
|
for(promotion in unit.baseUnit.promotions)
|
||||||
unit.promotions.addPromotion(promotion,true)
|
unit.promotions.addPromotion(promotion, true)
|
||||||
|
|
||||||
// And update civ stats, since the new unit changes both unit upkeep and resource consumption
|
// And update civ stats, since the new unit changes both unit upkeep and resource consumption
|
||||||
civInfo.updateStatsForNextTurn()
|
civInfo.updateStatsForNextTurn()
|
||||||
|
|
|
@ -15,7 +15,7 @@ class UnitPromotions{
|
||||||
fun xpForNextPromotion() = (numberOfPromotions+1)*10
|
fun xpForNextPromotion() = (numberOfPromotions+1)*10
|
||||||
fun canBePromoted() = XP >= xpForNextPromotion()
|
fun canBePromoted() = XP >= xpForNextPromotion()
|
||||||
|
|
||||||
fun addPromotion(promotionName:String, isFree:Boolean = false, updateViewableTiles:Boolean=true){
|
fun addPromotion(promotionName: String, isFree: Boolean = false){
|
||||||
if (!isFree) {
|
if (!isFree) {
|
||||||
XP -= xpForNextPromotion()
|
XP -= xpForNextPromotion()
|
||||||
numberOfPromotions++
|
numberOfPromotions++
|
||||||
|
@ -29,7 +29,6 @@ class UnitPromotions{
|
||||||
// Since some units get promotions upon construction, they will get the addPromotion from the unit.postBuildEvent
|
// Since some units get promotions upon construction, they will get the addPromotion from the unit.postBuildEvent
|
||||||
// upon creation, BEFORE they are assigned to a tile, so the updateViewableTiles() would crash.
|
// upon creation, BEFORE they are assigned to a tile, so the updateViewableTiles() would crash.
|
||||||
// So, if the addPromotion was triggered from there, simply don't update
|
// So, if the addPromotion was triggered from there, simply don't update
|
||||||
// if(updateViewableTiles)
|
|
||||||
unit.updateViewableTiles() // some promotions/uniques give the unit bonus sight
|
unit.updateViewableTiles() // some promotions/uniques give the unit bonus sight
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ class TileImprovement : NamedStats(), ICivilopedia {
|
||||||
override val description: String
|
override val description: String
|
||||||
get() {
|
get() {
|
||||||
val stringBuilder = StringBuilder()
|
val stringBuilder = StringBuilder()
|
||||||
if (!this.clone().toString().isEmpty()) stringBuilder.appendln(this.clone().toString())
|
if (this.clone().toString().isNotEmpty()) stringBuilder.appendln(this.clone().toString())
|
||||||
if (!terrainsCanBeBuiltOn.isEmpty()) {
|
if (!terrainsCanBeBuiltOn.isEmpty()) {
|
||||||
val terrainsCanBeBuiltOnString:ArrayList<String> = arrayListOf()
|
val terrainsCanBeBuiltOnString:ArrayList<String> = arrayListOf()
|
||||||
for (i in terrainsCanBeBuiltOn) {
|
for (i in terrainsCanBeBuiltOn) {
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.unciv.ui.mapeditor
|
||||||
import com.badlogic.gdx.graphics.Color
|
import com.badlogic.gdx.graphics.Color
|
||||||
import com.badlogic.gdx.scenes.scene2d.Actor
|
import com.badlogic.gdx.scenes.scene2d.Actor
|
||||||
import com.badlogic.gdx.scenes.scene2d.Group
|
import com.badlogic.gdx.scenes.scene2d.Group
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.Label
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane
|
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
|
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
|
||||||
|
@ -68,7 +69,7 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
||||||
onClick {
|
onClick {
|
||||||
clearSelection()
|
clearSelection()
|
||||||
clearImprovement = true
|
clearImprovement = true
|
||||||
setCurrentHex(ImageGetter.getCircle().apply { setSize(60f,60f) })
|
setCurrentHex(getHex(Color.WHITE), "Clear improvements")
|
||||||
}
|
}
|
||||||
}).row()
|
}).row()
|
||||||
|
|
||||||
|
@ -78,7 +79,8 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
||||||
improvementImage.onClick {
|
improvementImage.onClick {
|
||||||
clearSelection()
|
clearSelection()
|
||||||
selectedImprovement=improvement
|
selectedImprovement=improvement
|
||||||
setCurrentHex(getHex(Color.WHITE,ImageGetter.getImprovementIcon(improvement.name,40f)))
|
val improvementIcon = getHex(Color.WHITE,ImageGetter.getImprovementIcon(improvement.name,40f))
|
||||||
|
setCurrentHex(improvementIcon, improvement.name+"\n"+improvement.clone().toString())
|
||||||
}
|
}
|
||||||
improvementsTable.add(improvementImage).row()
|
improvementsTable.add(improvementImage).row()
|
||||||
}
|
}
|
||||||
|
@ -90,7 +92,8 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
||||||
nationImage.onClick {
|
nationImage.onClick {
|
||||||
clearSelection()
|
clearSelection()
|
||||||
selectedImprovement=TileImprovement().apply { name="StartingLocation "+nation.name }
|
selectedImprovement=TileImprovement().apply { name="StartingLocation "+nation.name }
|
||||||
setCurrentHex(getHex(Color.WHITE,ImageGetter.getNationIndicator(nation,40f)))
|
val nationIcon = getHex(Color.WHITE,ImageGetter.getNationIndicator(nation,40f))
|
||||||
|
setCurrentHex(nationIcon, nation.name+" starting location")
|
||||||
}
|
}
|
||||||
nationsTable.add(nationImage).row()
|
nationsTable.add(nationImage).row()
|
||||||
}
|
}
|
||||||
|
@ -106,7 +109,7 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
||||||
onClick {
|
onClick {
|
||||||
clearSelection()
|
clearSelection()
|
||||||
clearTerrainFeature = true
|
clearTerrainFeature = true
|
||||||
setCurrentHex(ImageGetter.getCircle().apply { setSize(60f,60f) })
|
setCurrentHex(getHex(Color.WHITE), "Clear terrain features")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -127,7 +130,7 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
||||||
group.onClick {
|
group.onClick {
|
||||||
clearSelection()
|
clearSelection()
|
||||||
selectedTerrain = terrain
|
selectedTerrain = terrain
|
||||||
setCurrentHex(tileInfo)
|
setCurrentHex(tileInfo,terrain.name+"\n"+terrain.clone().toString())
|
||||||
}
|
}
|
||||||
|
|
||||||
if (terrain.type == TerrainType.TerrainFeature)
|
if (terrain.type == TerrainType.TerrainFeature)
|
||||||
|
@ -141,7 +144,7 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
||||||
onClick {
|
onClick {
|
||||||
clearSelection()
|
clearSelection()
|
||||||
clearResource = true
|
clearResource = true
|
||||||
setCurrentHex(ImageGetter.getCircle().apply { setSize(60f,60f) })
|
setCurrentHex(getHex(Color.WHITE),"Clear resource")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -162,7 +165,7 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
||||||
|
|
||||||
tileInfo.resource = resource.name
|
tileInfo.resource = resource.name
|
||||||
tileInfo.setTransients()
|
tileInfo.setTransients()
|
||||||
setCurrentHex(tileInfo)
|
setCurrentHex(tileInfo,resource.name+"\n"+resource.clone().toString())
|
||||||
}
|
}
|
||||||
resources.add(resourceHex)
|
resources.add(resourceHex)
|
||||||
}
|
}
|
||||||
|
@ -178,7 +181,7 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
||||||
val terrainFeaturesTable = Table().apply { defaults().pad(20f) }
|
val terrainFeaturesTable = Table().apply { defaults().pad(20f) }
|
||||||
for(terrainFeature in terrainFeatures) terrainFeaturesTable.add(terrainFeature).row()
|
for(terrainFeature in terrainFeatures) terrainFeaturesTable.add(terrainFeature).row()
|
||||||
terrainFeaturesTable.pack()
|
terrainFeaturesTable.pack()
|
||||||
terrainsAndResourcesTable.add(terrainFeaturesTable)
|
terrainsAndResourcesTable.add(ScrollPane(terrainFeaturesTable).apply { setScrollingDisabled(true,false) }).height(mapEditorScreen.stage.height*0.7f)
|
||||||
|
|
||||||
val resourcesTable = Table()
|
val resourcesTable = Table()
|
||||||
for(resource in resources) resourcesTable.add(resource).row()
|
for(resource in resources) resourcesTable.add(resource).row()
|
||||||
|
@ -244,19 +247,23 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun setCurrentHex(tileInfo: TileInfo){
|
fun setCurrentHex(tileInfo: TileInfo, text:String){
|
||||||
val tileGroup = TileGroup(tileInfo,TileSetStrings())
|
val tileGroup = TileGroup(tileInfo,TileSetStrings())
|
||||||
.apply {
|
.apply {
|
||||||
showEntireMap=true
|
showEntireMap=true
|
||||||
forMapEditorIcon=true
|
forMapEditorIcon=true
|
||||||
update()
|
update()
|
||||||
}
|
}
|
||||||
setCurrentHex(tileGroup)
|
setCurrentHex(tileGroup,text)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setCurrentHex(actor:Actor){
|
fun setCurrentHex(actor:Actor, text:String){
|
||||||
currentHex.remove()
|
currentHex.remove()
|
||||||
currentHex=actor
|
val currentHexTable = Table()
|
||||||
|
currentHexTable.add(Label(text,skin)).padRight(20f)
|
||||||
|
currentHexTable.add(actor).pad(10f)
|
||||||
|
currentHexTable.pack()
|
||||||
|
currentHex=currentHexTable
|
||||||
currentHex.setPosition(stage.width-currentHex.width-10, 10f)
|
currentHex.setPosition(stage.width-currentHex.width-10, 10f)
|
||||||
stage.addActor(currentHex)
|
stage.addActor(currentHex)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.unciv.ui.newgamescreen
|
package com.unciv.ui.newgamescreen
|
||||||
|
|
||||||
|
import com.badlogic.gdx.Gdx
|
||||||
import com.badlogic.gdx.graphics.Color
|
import com.badlogic.gdx.graphics.Color
|
||||||
import com.badlogic.gdx.scenes.scene2d.Touchable
|
import com.badlogic.gdx.scenes.scene2d.Touchable
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane
|
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane
|
||||||
|
@ -60,11 +61,12 @@ class PlayerPickerTable(val newGameScreen: NewGameScreen, val newGameParameters:
|
||||||
playerIdTable.add("Player ID:".toLabel())
|
playerIdTable.add("Player ID:".toLabel())
|
||||||
|
|
||||||
val playerIdTextfield = TextField(player.playerId, CameraStageBaseScreen.skin)
|
val playerIdTextfield = TextField(player.playerId, CameraStageBaseScreen.skin)
|
||||||
playerIdTable.add(playerIdTextfield)
|
playerIdTable.add(playerIdTextfield).colspan(2)
|
||||||
val errorLabel = "Not a valid user id!".toLabel().setFontColor(Color.RED)
|
val errorLabel = "Not a valid user id!".toLabel().setFontColor(Color.RED)
|
||||||
errorLabel.isVisible=false
|
errorLabel.isVisible=false
|
||||||
playerIdTable.add(errorLabel)
|
playerIdTable.add(errorLabel)
|
||||||
playerIdTextfield.addListener {
|
|
||||||
|
fun onPlayerIdTextUpdated(){
|
||||||
try {
|
try {
|
||||||
val uuid = UUID.fromString(playerIdTextfield.text)
|
val uuid = UUID.fromString(playerIdTextfield.text)
|
||||||
player.playerId = playerIdTextfield.text
|
player.playerId = playerIdTextfield.text
|
||||||
|
@ -72,19 +74,27 @@ class PlayerPickerTable(val newGameScreen: NewGameScreen, val newGameParameters:
|
||||||
} catch (ex: Exception) {
|
} catch (ex: Exception) {
|
||||||
errorLabel.isVisible=true
|
errorLabel.isVisible=true
|
||||||
}
|
}
|
||||||
true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
playerIdTextfield.addListener { onPlayerIdTextUpdated(); true }
|
||||||
|
|
||||||
playerIdTable.row()
|
playerIdTable.row()
|
||||||
|
|
||||||
val currentUserId = UnCivGame.Current.settings.userId
|
val currentUserId = UnCivGame.Current.settings.userId
|
||||||
val setCurrentUserButton = TextButton("Set current user", CameraStageBaseScreen.skin)
|
val setCurrentUserButton = TextButton("Set current user".tr(), CameraStageBaseScreen.skin)
|
||||||
setCurrentUserButton.onClick {
|
setCurrentUserButton.onClick {
|
||||||
playerIdTextfield.text = currentUserId
|
playerIdTextfield.text = currentUserId
|
||||||
errorLabel.isVisible = false
|
onPlayerIdTextUpdated()
|
||||||
}
|
}
|
||||||
playerIdTable.add(setCurrentUserButton)
|
playerIdTable.add(setCurrentUserButton)
|
||||||
|
|
||||||
|
val copyFromClipboardButton = TextButton("Player ID from clipboard",CameraStageBaseScreen.skin)
|
||||||
|
copyFromClipboardButton.onClick {
|
||||||
|
playerIdTextfield.text = Gdx.app.clipboard.contents
|
||||||
|
onPlayerIdTextUpdated()
|
||||||
|
}
|
||||||
|
playerIdTable.add(copyFromClipboardButton).pad(5f)
|
||||||
|
|
||||||
playerTable.add(playerIdTable).colspan(playerTable.columns)
|
playerTable.add(playerIdTable).colspan(playerTable.columns)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ import com.unciv.ui.utils.*
|
||||||
import com.unciv.ui.worldscreen.optionstable.YesNoPopupTable
|
import com.unciv.ui.worldscreen.optionstable.YesNoPopupTable
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
class DiplomacyScreen:CameraStageBaseScreen() {
|
class DiplomacyScreen(val viewingCiv:CivilizationInfo):CameraStageBaseScreen() {
|
||||||
|
|
||||||
val leftSideTable = Table().apply { defaults().pad(10f) }
|
val leftSideTable = Table().apply { defaults().pad(10f) }
|
||||||
val rightSideTable = Table()
|
val rightSideTable = Table()
|
||||||
|
@ -53,15 +53,14 @@ class DiplomacyScreen:CameraStageBaseScreen() {
|
||||||
|
|
||||||
private fun updateLeftSideTable() {
|
private fun updateLeftSideTable() {
|
||||||
leftSideTable.clear()
|
leftSideTable.clear()
|
||||||
val currentPlayerCiv = UnCivGame.Current.gameInfo.getCurrentPlayerCivilization()
|
|
||||||
for (civ in UnCivGame.Current.gameInfo.civilizations
|
for (civ in UnCivGame.Current.gameInfo.civilizations
|
||||||
.filterNot { it.isDefeated() || it == currentPlayerCiv || it.isBarbarian() }) {
|
.filterNot { it.isDefeated() || it == viewingCiv || it.isBarbarian() }) {
|
||||||
if (!currentPlayerCiv.knows(civ)) continue
|
if (!viewingCiv.knows(civ)) continue
|
||||||
|
|
||||||
val civIndicator = ImageGetter.getNationIndicator(civ.nation,100f)
|
val civIndicator = ImageGetter.getNationIndicator(civ.nation,100f)
|
||||||
|
|
||||||
val relationship = ImageGetter.getCircle()
|
val relationship = ImageGetter.getCircle()
|
||||||
if(currentPlayerCiv.isAtWarWith(civ)) relationship.color = Color.RED
|
if(viewingCiv.isAtWarWith(civ)) relationship.color = Color.RED
|
||||||
else relationship.color = Color.GREEN
|
else relationship.color = Color.GREEN
|
||||||
relationship.setSize(30f,30f)
|
relationship.setSize(30f,30f)
|
||||||
civIndicator.addActor(relationship)
|
civIndicator.addActor(relationship)
|
||||||
|
@ -90,8 +89,7 @@ class DiplomacyScreen:CameraStageBaseScreen() {
|
||||||
|
|
||||||
|
|
||||||
private fun getCityStateDiplomacyTable(otherCiv: CivilizationInfo): Table {
|
private fun getCityStateDiplomacyTable(otherCiv: CivilizationInfo): Table {
|
||||||
val currentPlayerCiv = UnCivGame.Current.gameInfo.getCurrentPlayerCivilization()
|
val otherCivDiplomacyManager = otherCiv.getDiplomacyManager(viewingCiv)
|
||||||
val otherCivDiplomacyManager = otherCiv.getDiplomacyManager(currentPlayerCiv)
|
|
||||||
|
|
||||||
val diplomacyTable = Table()
|
val diplomacyTable = Table()
|
||||||
diplomacyTable.defaults().pad(10f)
|
diplomacyTable.defaults().pad(10f)
|
||||||
|
@ -102,7 +100,7 @@ class DiplomacyScreen:CameraStageBaseScreen() {
|
||||||
diplomacyTable.add(getRelationshipTable(otherCivDiplomacyManager)).row()
|
diplomacyTable.add(getRelationshipTable(otherCivDiplomacyManager)).row()
|
||||||
|
|
||||||
val friendBonusText = when (otherCiv.getCityStateType()) {
|
val friendBonusText = when (otherCiv.getCityStateType()) {
|
||||||
CityStateType.Cultured -> "Provides [" + (3 * (currentPlayerCiv.getEra().ordinal + 1)).toString() + "] culture at [30] Influence"
|
CityStateType.Cultured -> "Provides [" + (3 * (viewingCiv.getEra().ordinal + 1)).toString() + "] culture at [30] Influence"
|
||||||
CityStateType.Maritime -> "Provides 3 food in capital and 1 food in other cities at [30] Influence"
|
CityStateType.Maritime -> "Provides 3 food in capital and 1 food in other cities at [30] Influence"
|
||||||
CityStateType.Mercantile -> "Provides 3 happiness at [30] Influence"
|
CityStateType.Mercantile -> "Provides 3 happiness at [30] Influence"
|
||||||
CityStateType.Militaristic -> "Provides land units every 20 turns at [30] Influence"
|
CityStateType.Militaristic -> "Provides land units every 20 turns at [30] Influence"
|
||||||
|
@ -124,19 +122,19 @@ class DiplomacyScreen:CameraStageBaseScreen() {
|
||||||
val influenceAmount = giftAmount / 10
|
val influenceAmount = giftAmount / 10
|
||||||
val giftButton = TextButton("Gift [$giftAmount] gold (+[$influenceAmount] influence)".tr(), skin)
|
val giftButton = TextButton("Gift [$giftAmount] gold (+[$influenceAmount] influence)".tr(), skin)
|
||||||
giftButton.onClick {
|
giftButton.onClick {
|
||||||
currentPlayerCiv.giveGoldGift(otherCiv, giftAmount)
|
viewingCiv.giveGoldGift(otherCiv, giftAmount)
|
||||||
updateRightSide(otherCiv)
|
updateRightSide(otherCiv)
|
||||||
}
|
}
|
||||||
diplomacyTable.add(giftButton).row()
|
diplomacyTable.add(giftButton).row()
|
||||||
if (currentPlayerCiv.gold < giftAmount || isNotPlayersTurn()) giftButton.disable()
|
if (viewingCiv.gold < giftAmount || isNotPlayersTurn()) giftButton.disable()
|
||||||
|
|
||||||
val diplomacyManager = currentPlayerCiv.getDiplomacyManager(otherCiv)
|
val diplomacyManager = viewingCiv.getDiplomacyManager(otherCiv)
|
||||||
|
|
||||||
if (currentPlayerCiv.isAtWarWith(otherCiv)) {
|
if (viewingCiv.isAtWarWith(otherCiv)) {
|
||||||
val peaceButton = TextButton("Negotiate Peace".tr(), skin)
|
val peaceButton = TextButton("Negotiate Peace".tr(), skin)
|
||||||
peaceButton.onClick {
|
peaceButton.onClick {
|
||||||
YesNoPopupTable("Peace with [${otherCiv.civName}]?".tr(), {
|
YesNoPopupTable("Peace with [${otherCiv.civName}]?".tr(), {
|
||||||
val tradeLogic = TradeLogic(currentPlayerCiv, otherCiv)
|
val tradeLogic = TradeLogic(viewingCiv, otherCiv)
|
||||||
tradeLogic.currentTrade.ourOffers.add(TradeOffer(Constants.peaceTreaty, TradeType.Treaty, 30))
|
tradeLogic.currentTrade.ourOffers.add(TradeOffer(Constants.peaceTreaty, TradeType.Treaty, 30))
|
||||||
tradeLogic.currentTrade.theirOffers.add(TradeOffer(Constants.peaceTreaty, TradeType.Treaty, 30))
|
tradeLogic.currentTrade.theirOffers.add(TradeOffer(Constants.peaceTreaty, TradeType.Treaty, 30))
|
||||||
tradeLogic.acceptTrade()
|
tradeLogic.acceptTrade()
|
||||||
|
@ -155,8 +153,7 @@ class DiplomacyScreen:CameraStageBaseScreen() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getMajorCivDiplomacyTable(otherCiv: CivilizationInfo): Table {
|
private fun getMajorCivDiplomacyTable(otherCiv: CivilizationInfo): Table {
|
||||||
val currentPlayerCiv = UnCivGame.Current.gameInfo.getCurrentPlayerCivilization()
|
val otherCivDiplomacyManager = otherCiv.getDiplomacyManager(viewingCiv)
|
||||||
val otherCivDiplomacyManager = otherCiv.getDiplomacyManager(currentPlayerCiv)
|
|
||||||
|
|
||||||
val diplomacyTable = Table()
|
val diplomacyTable = Table()
|
||||||
diplomacyTable.defaults().pad(10f)
|
diplomacyTable.defaults().pad(10f)
|
||||||
|
@ -169,7 +166,7 @@ class DiplomacyScreen:CameraStageBaseScreen() {
|
||||||
diplomacyTable.add(translatedNation.neutralHello.toLabel()).row()
|
diplomacyTable.add(translatedNation.neutralHello.toLabel()).row()
|
||||||
diplomacyTable.addSeparator()
|
diplomacyTable.addSeparator()
|
||||||
|
|
||||||
if(!currentPlayerCiv.isAtWarWith(otherCiv)) {
|
if(!viewingCiv.isAtWarWith(otherCiv)) {
|
||||||
val tradeButton = TextButton("Trade".tr(), skin)
|
val tradeButton = TextButton("Trade".tr(), skin)
|
||||||
tradeButton.onClick { setTrade(otherCiv) }
|
tradeButton.onClick { setTrade(otherCiv) }
|
||||||
diplomacyTable.add(tradeButton).row()
|
diplomacyTable.add(tradeButton).row()
|
||||||
|
@ -190,11 +187,11 @@ class DiplomacyScreen:CameraStageBaseScreen() {
|
||||||
diplomacyTable.add(negotiatePeaceButton).row()
|
diplomacyTable.add(negotiatePeaceButton).row()
|
||||||
}
|
}
|
||||||
|
|
||||||
val diplomacyManager = currentPlayerCiv.getDiplomacyManager(otherCiv)
|
val diplomacyManager = viewingCiv.getDiplomacyManager(otherCiv)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!currentPlayerCiv.isAtWarWith(otherCiv)) {
|
if (!viewingCiv.isAtWarWith(otherCiv)) {
|
||||||
if(otherCivDiplomacyManager.relationshipLevel() > RelationshipLevel.Neutral
|
if(otherCivDiplomacyManager.relationshipLevel() > RelationshipLevel.Neutral
|
||||||
&& !diplomacyManager.hasFlag(DiplomacyFlags.DeclarationOfFriendship)
|
&& !diplomacyManager.hasFlag(DiplomacyFlags.DeclarationOfFriendship)
|
||||||
&& !diplomacyManager.hasFlag(DiplomacyFlags.Denunceation)){
|
&& !diplomacyManager.hasFlag(DiplomacyFlags.Denunceation)){
|
||||||
|
@ -226,7 +223,7 @@ class DiplomacyScreen:CameraStageBaseScreen() {
|
||||||
val demandsButton = TextButton("Demands".tr(),skin)
|
val demandsButton = TextButton("Demands".tr(),skin)
|
||||||
demandsButton.onClick {
|
demandsButton.onClick {
|
||||||
rightSideTable.clear()
|
rightSideTable.clear()
|
||||||
rightSideTable.add(getDemandsTable(currentPlayerCiv,otherCiv))
|
rightSideTable.add(getDemandsTable(viewingCiv,otherCiv))
|
||||||
}
|
}
|
||||||
diplomacyTable.add(demandsButton).row()
|
diplomacyTable.add(demandsButton).row()
|
||||||
if(isNotPlayersTurn()) demandsButton.disable()
|
if(isNotPlayersTurn()) demandsButton.disable()
|
||||||
|
@ -270,15 +267,15 @@ class DiplomacyScreen:CameraStageBaseScreen() {
|
||||||
return diplomacyModifiersTable
|
return diplomacyModifiersTable
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getDemandsTable(currentPlayerCiv: CivilizationInfo, otherCiv: CivilizationInfo): Table {
|
private fun getDemandsTable(viewingCiv: CivilizationInfo, otherCiv: CivilizationInfo): Table {
|
||||||
val demandsTable = Table()
|
val demandsTable = Table()
|
||||||
demandsTable.defaults().pad(10f)
|
demandsTable.defaults().pad(10f)
|
||||||
|
|
||||||
val dontSettleCitiesButton = TextButton("Please don't settle new cities near us.".tr(),skin)
|
val dontSettleCitiesButton = TextButton("Please don't settle new cities near us.".tr(),skin)
|
||||||
if(otherCiv.popupAlerts.any { it.type==AlertType.DemandToStopSettlingCitiesNear && it.value==currentPlayerCiv.civName })
|
if(otherCiv.popupAlerts.any { it.type==AlertType.DemandToStopSettlingCitiesNear && it.value==viewingCiv.civName })
|
||||||
dontSettleCitiesButton.disable()
|
dontSettleCitiesButton.disable()
|
||||||
dontSettleCitiesButton.onClick {
|
dontSettleCitiesButton.onClick {
|
||||||
otherCiv.popupAlerts.add(PopupAlert(AlertType.DemandToStopSettlingCitiesNear, currentPlayerCiv.civName))
|
otherCiv.popupAlerts.add(PopupAlert(AlertType.DemandToStopSettlingCitiesNear, viewingCiv.civName))
|
||||||
dontSettleCitiesButton.disable()
|
dontSettleCitiesButton.disable()
|
||||||
}
|
}
|
||||||
demandsTable.add(dontSettleCitiesButton).row()
|
demandsTable.add(dontSettleCitiesButton).row()
|
||||||
|
|
|
@ -15,8 +15,8 @@ import kotlin.math.max
|
||||||
|
|
||||||
class TradePopup(worldScreen: WorldScreen): PopupTable(worldScreen){
|
class TradePopup(worldScreen: WorldScreen): PopupTable(worldScreen){
|
||||||
init{
|
init{
|
||||||
val currentPlayerCiv = worldScreen.viewingCiv
|
val viewingCiv = worldScreen.viewingCiv
|
||||||
val tradeRequest = currentPlayerCiv.tradeRequests.first()
|
val tradeRequest = viewingCiv.tradeRequests.first()
|
||||||
|
|
||||||
val requestingCiv = worldScreen.gameInfo.getCivilization(tradeRequest.requestingCiv)
|
val requestingCiv = worldScreen.gameInfo.getCivilization(tradeRequest.requestingCiv)
|
||||||
val translatedNation = requestingCiv.getTranslatedNation()
|
val translatedNation = requestingCiv.getTranslatedNation()
|
||||||
|
@ -39,10 +39,10 @@ class TradePopup(worldScreen: WorldScreen): PopupTable(worldScreen){
|
||||||
addGoodSizedLabel(translatedNation.tradeRequest).colspan(columns).row()
|
addGoodSizedLabel(translatedNation.tradeRequest).colspan(columns).row()
|
||||||
|
|
||||||
addButton("Sounds good!"){
|
addButton("Sounds good!"){
|
||||||
val tradeLogic = TradeLogic(currentPlayerCiv, requestingCiv)
|
val tradeLogic = TradeLogic(viewingCiv, requestingCiv)
|
||||||
tradeLogic.currentTrade.set(trade)
|
tradeLogic.currentTrade.set(trade)
|
||||||
tradeLogic.acceptTrade()
|
tradeLogic.acceptTrade()
|
||||||
currentPlayerCiv.tradeRequests.remove(tradeRequest)
|
viewingCiv.tradeRequests.remove(tradeRequest)
|
||||||
close()
|
close()
|
||||||
PopupTable(worldScreen).apply {
|
PopupTable(worldScreen).apply {
|
||||||
add(otherCivLeaderName.toLabel()).colspan(2)
|
add(otherCivLeaderName.toLabel()).colspan(2)
|
||||||
|
@ -56,12 +56,12 @@ class TradePopup(worldScreen: WorldScreen): PopupTable(worldScreen){
|
||||||
}
|
}
|
||||||
open()
|
open()
|
||||||
}
|
}
|
||||||
requestingCiv.addNotification("[${currentPlayerCiv.civName}] has accepted your trade request", Color.GOLD)
|
requestingCiv.addNotification("[${viewingCiv.civName}] has accepted your trade request", Color.GOLD)
|
||||||
}
|
}
|
||||||
addButton("Not this time.".tr()){
|
addButton("Not this time.".tr()){
|
||||||
currentPlayerCiv.tradeRequests.remove(tradeRequest)
|
viewingCiv.tradeRequests.remove(tradeRequest)
|
||||||
|
|
||||||
val diplomacyManager = requestingCiv.getDiplomacyManager(currentPlayerCiv)
|
val diplomacyManager = requestingCiv.getDiplomacyManager(viewingCiv)
|
||||||
if(trade.ourOffers.all { it.type==TradeType.Luxury_Resource } && trade.theirOffers.all { it.type==TradeType.Luxury_Resource })
|
if(trade.ourOffers.all { it.type==TradeType.Luxury_Resource } && trade.theirOffers.all { it.type==TradeType.Luxury_Resource })
|
||||||
diplomacyManager.setFlag(DiplomacyFlags.DeclinedLuxExchange,20) // offer again in 20 turns
|
diplomacyManager.setFlag(DiplomacyFlags.DeclinedLuxExchange,20) // offer again in 20 turns
|
||||||
|
|
||||||
|
@ -69,15 +69,15 @@ class TradePopup(worldScreen: WorldScreen): PopupTable(worldScreen){
|
||||||
diplomacyManager.setFlag(DiplomacyFlags.DeclinedPeace,5)
|
diplomacyManager.setFlag(DiplomacyFlags.DeclinedPeace,5)
|
||||||
|
|
||||||
close()
|
close()
|
||||||
requestingCiv.addNotification("[${currentPlayerCiv.civName}] has denied your trade request", Color.GOLD)
|
requestingCiv.addNotification("[${viewingCiv.civName}] has denied your trade request", Color.GOLD)
|
||||||
|
|
||||||
worldScreen.shouldUpdate=true
|
worldScreen.shouldUpdate=true
|
||||||
}
|
}
|
||||||
addButton("How about something else...".tr()){
|
addButton("How about something else...".tr()){
|
||||||
currentPlayerCiv.tradeRequests.remove(tradeRequest)
|
viewingCiv.tradeRequests.remove(tradeRequest)
|
||||||
close()
|
close()
|
||||||
|
|
||||||
val diplomacyScreen= DiplomacyScreen()
|
val diplomacyScreen= DiplomacyScreen(viewingCiv)
|
||||||
val tradeTable = diplomacyScreen.setTrade(requestingCiv)
|
val tradeTable = diplomacyScreen.setTrade(requestingCiv)
|
||||||
tradeTable.tradeLogic.currentTrade.set(trade)
|
tradeTable.tradeLogic.currentTrade.set(trade)
|
||||||
tradeTable.offerColumnsTable.update()
|
tradeTable.offerColumnsTable.update()
|
||||||
|
|
|
@ -231,7 +231,7 @@ class WorldScreen(val viewingCiv:CivilizationInfo) : CameraStageBaseScreen() {
|
||||||
.any()) {
|
.any()) {
|
||||||
displayTutorials("OtherCivEncountered")
|
displayTutorials("OtherCivEncountered")
|
||||||
val btn = TextButton("Diplomacy".tr(), skin)
|
val btn = TextButton("Diplomacy".tr(), skin)
|
||||||
btn.onClick { UnCivGame.Current.screen = DiplomacyScreen() }
|
btn.onClick { UnCivGame.Current.screen = DiplomacyScreen(viewingCiv) }
|
||||||
btn.label.setFontSize(30)
|
btn.label.setFontSize(30)
|
||||||
btn.labelCell.pad(10f)
|
btn.labelCell.pad(10f)
|
||||||
diplomacyButtonWrapper.add(btn)
|
diplomacyButtonWrapper.add(btn)
|
||||||
|
|
|
@ -96,9 +96,9 @@ class WorldScreenMenuTable(val worldScreen: WorldScreen) : PopupTable(worldScree
|
||||||
val badGameIdLabel = "".toLabel().setFontColor(Color.RED)
|
val badGameIdLabel = "".toLabel().setFontColor(Color.RED)
|
||||||
badGameIdLabel.isVisible = false
|
badGameIdLabel.isVisible = false
|
||||||
multiplayerPopup.addButton("Join Game") {
|
multiplayerPopup.addButton("Join Game") {
|
||||||
val gameId = Gdx.app.clipboard.contents.trim()
|
val gameId = Gdx.app.clipboard.contents
|
||||||
try {
|
try {
|
||||||
UUID.fromString(gameId)
|
UUID.fromString(gameId.trim())
|
||||||
} catch (ex: Exception) {
|
} catch (ex: Exception) {
|
||||||
badGameIdLabel.setText("Invalid game ID!")
|
badGameIdLabel.setText("Invalid game ID!")
|
||||||
badGameIdLabel.isVisible = true
|
badGameIdLabel.isVisible = true
|
||||||
|
|
|
@ -96,7 +96,7 @@ class UnitActions {
|
||||||
|
|
||||||
for(promotion in unit.baseUnit.promotions)
|
for(promotion in unit.baseUnit.promotions)
|
||||||
if(promotion !in newunit.promotions.promotions)
|
if(promotion !in newunit.promotions.promotions)
|
||||||
newunit.promotions.addPromotion(promotion,true)
|
newunit.promotions.addPromotion(promotion, true)
|
||||||
|
|
||||||
newunit.updateUniques()
|
newunit.updateUniques()
|
||||||
newunit.updateViewableTiles()
|
newunit.updateViewableTiles()
|
||||||
|
|
Loading…
Reference in a new issue