mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-29 15:01:09 -04:00
update to master
This commit is contained in:
commit
eb6f07dab4
@ -618,6 +618,44 @@
|
||||
"Baruun-Urt","Ereen","Batshireet","Choyr","Ulaangom","Tosontsengel","Atlay","Uliastay","Bayanhongor",
|
||||
"Har-Ayrag","Nalayh","Tes"]
|
||||
},
|
||||
{
|
||||
/////NEEDS NATURAL WONDERS
|
||||
name:"Spanish",
|
||||
leaderName:"Isabella",
|
||||
adjective:["Spanish"],
|
||||
startBias:["Coast"],
|
||||
preferredVictoryType:"Domination",
|
||||
|
||||
startIntroPart1: "Blessed Isabella, servant of God, holy queen of Castille and Leòn! Your people greet and welcome you. You are the ruler of Spain, a beautiful and ancient country at the crossroads of the world between Europe and Africa, one shor on the Mediterranean and the other on the mighty Atlantic Ocean. The Spanish are a multicultural people with roots in the Muslim and Christian worlds. A seafaring race, Spanish explorers found and conquered much of the New World, and, for many centuries, its gold and silver brought Spain unrivalled wealth and power, making the Spanish court the envy of the world."
|
||||
startIntroPart2: "O fair and virtuous Isabella! Will you rebuld the Spanish empire and show the world again the greatness of your people? Will your take up the mantle of the holy monarchy, and vanquish your foes under heaven's watchful eyes? Your adoring subjects await your command! Will you build a civilization that stands the test of time?"
|
||||
|
||||
declaringWar:"God will probably forgive you... but I shall not. Prepare for war."
|
||||
attacked:"Repugnant spawn of the devil! You will pay!"
|
||||
defeated:"If my defeat is, without any doubt, the will of God, then I will accept it."
|
||||
introduction:"God blesses those who deserve it. I am Isabel of Spain."
|
||||
|
||||
neutralHello:"Greetings."
|
||||
neutralLetsHearIt:["Proceed","I'm listening.","Yes?"]
|
||||
neutralNo:["We refuse.","Not before God.","No way."]
|
||||
neutralYes:["Very well.","Excellent.","With the blessing of God, I accept."]
|
||||
|
||||
hateHello:"Well?"
|
||||
hateLetsHearIt:["Onward","What were you saying?","Continue."]
|
||||
hateNo:["That is unacceptable.","Of course not.","Are you crazy?"]
|
||||
hateYes:["I agree.","Fine.","I think that I am obliged to accept."]
|
||||
|
||||
afterPeace:"May God bless you for your clemency to the defeated enemy."
|
||||
tradeRequest:"I hope this deal will receive your blessing."
|
||||
|
||||
outerColor:[102,0,0],
|
||||
innerColor:[255,102,102],
|
||||
uniqueName:"Seven Cities of Gold"
|
||||
unique:"Gold nous for discovering a Natural Wonder (bonus enhanced if first to discover it). Culture, Happiness and tile yelds from Natural Wonders doubled.",
|
||||
cities:["Madrid","Barcelona","Seville","Cordoba","Toledo","Santiago","Salamanca","Murcia","Valencia","Zaragoza","Pamplona",
|
||||
"Vitoria","Santander","Oviedo","Jaen","Logroño","Valladolid","Palma","Teruel","Almeria","Leon","Zamora","Mida",
|
||||
"Lugo","Alicante","Càdiz","Eiche","Alcorcon","Burgos","Vigo","Badajoz","La Coruña","Guadalquivir","Bilbao",
|
||||
"San Sebastian","Granada","Mérida","Huelva","Ibiza","Las Palmas","Tenerife"]
|
||||
},
|
||||
{
|
||||
name:"Incan",
|
||||
leaderName:"Pachacuti",
|
||||
@ -626,7 +664,7 @@
|
||||
preferredVictoryType:"Cultural",
|
||||
|
||||
startIntroPart1: "Oh ye who remakes the world, your loyal subjects greet you, King Pachacuti Sapa Inca, ruler of the Inca people! From the beginnings in the small state of Cusco, the Incans displayed their potential for greatness, marching to war against their many enemies, crushing their armies into dust and carving for themselves a mighty empire stretching from Ecuador to Chile. Indeed, they build the greatest empire ever seen in all pre-Columbian Americas. More than mere soldiers, your people were great builders and artists as well, and the remnants of their works still awe and inspire the world today."
|
||||
startIntroPart2: "Oh King Pachacuti, truly are you called "Earth Shaker"! Will you once again call upon the ground itself to a fight at your side? Your armies await your signal. Will you restore the glory of your empire? Can you build a civilization that will stand the test of time?"
|
||||
startIntroPart2: "Oh King Pachacuti, truly are you called 'Earth Shaker'! Will you once again call upon the ground itself to a fight at your side? Your armies await your signal. Will you restore the glory of your empire? Can you build a civilization that will stand the test of time?"
|
||||
|
||||
declaringWar:"Resistance is futile! You cannot hope to stand against the mighty Incan empire. If you will not surrender immediately, then prepare for war!"
|
||||
attacked:"Declare war on me?!? You can't, because I declare war on you first!"
|
||||
|
@ -121,7 +121,7 @@
|
||||
declaringWar:"Sei solo una peste sulla Terra! Possa Amon-Ra guidare le mie armate!",
|
||||
attacked:"Sei uno sciocco che incute pietà. Hai portato la mia ostilità su di te e la tua ripugnante civiltà! Osiride sarà lieto di dare il suo benvenuto ai miei nemici!"
|
||||
defeated:"Non hai vinto niente. Colpiscimi e la mia anima ti perseguiterà in eterno."
|
||||
introduction:"Saluti. Io sono Ramses, Faraone e incarnazione vivente dell'Egitto, madre e padre di ogni civiltà."
|
||||
introduction:"Saluti. Io sono Ramses, Faraone e incarnazione vivente dell'Egitto, madre e padre di ogni civiltà." //Also:"Salve. Io sono Ramses, signore del potente Egitto. E sono anche un dio. Mostrate di avere molto coraggio presentandovi davanti a me."
|
||||
|
||||
neutralHello:"Buongiorno."
|
||||
neutralLetsHearIt:["Avanti, parla.","Parla.","Sono tutto orecchi."]
|
||||
@ -509,8 +509,8 @@
|
||||
translatedName:"Corea",
|
||||
leaderName:"Sejong",
|
||||
|
||||
startIntroPart1: ""
|
||||
startIntroPart2: ""
|
||||
startIntroPart1: "Salve, magnifico re Sejong il Grande, servitore del popolo e protettore della dinastia Choson. Il tuo glorioso progetto di prosperità e la tua traboccante benevolenza verso la gente comune ti hanno reso il più amato dei monarchi coreani. Fin dai primi giorni del tuo regno i tuoi sforzi di realizzare una società equilibrata e giusta per tutti sono stati superati solo dalle scoperte e dalle innovazioni tecnologiche introdotte in virtù della tua insaziabile sete di conoscenza. Guidati dalla tua saggezza, i sapienti della Sala di Giada hanno sviluppato il primo alfabeto coreano, l'Hangul, illuminando le masse con la luce della letteratura e della scienza dopo secoli di oscurità."
|
||||
startIntroPart2: "Onorato Sejong, il tuo popolo si rivolge ancora una volta a te per avere una guida! Coglierai questìoccasione di portare armonia e comprensione tra le genti? Riporterai ancora il tuo regno a simili altezze vertiginose? Riuscirai a plasmare una civiltà in grado di superare la prova del tempo?"
|
||||
|
||||
declaringWar:"Jip-hyun-jun (la Sala dei Giusti) non tollera più la tua insolenza. Libereremo i tuoi cittadini oppressi anche con la forza, e li illumineremo!"
|
||||
attacked:"Sciocca progenie di una megera! Sarete distrutti dalla magnifica potenza scientifica del mio paese!"
|
||||
|
@ -180,14 +180,17 @@
|
||||
Italian:"Abbiamo incontrato la Citta-Stato di [name]!"
|
||||
Portuguese:"Nós encontramos a cidade-estado de [name]"
|
||||
French:"Nous avons rencontré la cité-état de [name]!"
|
||||
Polish:"Napotkaliśmy państwo-miasto o nazwie [name]!"
|
||||
Simplified_Chinese:"我们遇到了城邦--[name]!"
|
||||
Polish:"Napotkaliśmy państwo-miasto o nazwie [name]!"
|
||||
Simplified_Chinese:"我们遇到了城邦--[name]!"
|
||||
Russian:"Мы обнаружили город-государство [name]!"
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
"We have encountered [civName]!":{
|
||||
Simplified_Chinese:"我们遇到了文明--[civName]!"
|
||||
}
|
||||
=======
|
||||
>>>>>>> upstream/master
|
||||
|
||||
// Friendship declaration flavor texts
|
||||
"Declare Friendship ([numberOfTurns] turns)":{
|
||||
@ -323,6 +326,7 @@
|
||||
},
|
||||
|
||||
"Gift [giftAmount] gold (+[influenceAmount] influence)":{
|
||||
Italian:"Dona [giftAmount] oro (+[influenceAmount] Influenza)"
|
||||
Simplified_Chinese:"赠予[giftAmount]金钱(+[influenceAmount]影响力)"
|
||||
}
|
||||
|
||||
@ -532,10 +536,12 @@
|
||||
}
|
||||
|
||||
"Type: ":{
|
||||
Italian:"Tipo: "
|
||||
Simplified_Chinese:"城邦类型:"
|
||||
}
|
||||
|
||||
"Influence: ":{
|
||||
Italian:"Influenza: "
|
||||
Simplified_Chinese:"影响力:"
|
||||
}
|
||||
|
||||
|
@ -572,4 +572,8 @@
|
||||
Simplified_Chinese:"我们与[nation]的贸易已被消减"
|
||||
},
|
||||
|
||||
"[nation] agreed to stop settling cities near us!": {
|
||||
Italian:"[nation] ha promesso di smettere di fondare città vicino a noi!"
|
||||
},
|
||||
|
||||
}
|
||||
|
@ -15,21 +15,25 @@
|
||||
}
|
||||
|
||||
"land units":{
|
||||
Italian:"unità terrestri"
|
||||
Simplified_Chinese:"陆军单位"
|
||||
Russian:"наземные юниты"
|
||||
}
|
||||
|
||||
"water units":{
|
||||
Italian:"unità anfibie"
|
||||
Simplified_Chinese:"海军单位"
|
||||
Russian:"морские юниты"
|
||||
}
|
||||
|
||||
"air units":{
|
||||
Italian:"unità aeree"
|
||||
Simplified_Chinese:"空军单位"
|
||||
Russian:"воздушные юниты"
|
||||
}
|
||||
|
||||
"WaterCivilian":{ // In the file "Uints.json", every unit have the "unitType", i think we should show the "unitType" in wiki,because some units get a bonus attack to other units.
|
||||
English:"Water Civilian"
|
||||
Italian:"marittima civile" //Unità marittima civile
|
||||
Simplified_Chinese:"海上平民单位"
|
||||
French:"Civil embarqué"
|
||||
@ -49,6 +53,7 @@
|
||||
}
|
||||
|
||||
"WaterMelee":{
|
||||
English:"Water Melee"
|
||||
Italian:"marittima da mischia" //Unità marittima da mischia
|
||||
Simplified_Chinese:"海军近战单位"
|
||||
French:"Navire de combat rapproché"
|
||||
@ -68,6 +73,7 @@
|
||||
}
|
||||
|
||||
"WaterRanged":{
|
||||
English:"Water Ranged"
|
||||
Italian:"marittima a distanza" //Unità marittima a distanza
|
||||
Simplified_Chinese:"海军远程单位"
|
||||
French:"Navire de combat à distance"
|
||||
@ -75,6 +81,7 @@
|
||||
}
|
||||
|
||||
"WaterSubmarine":{ //In the file "Uints.json", every unit have the "unitType".This unitType includes submarine and nuclear submarine.
|
||||
English:"Submarine"
|
||||
Italian:"sottomarina" //Unità sottomarina
|
||||
Simplified_Chinese:"海军潜艇单位"
|
||||
French:"Navires sous-marins"
|
||||
@ -1042,6 +1049,7 @@
|
||||
}
|
||||
|
||||
"6 tiles in every direction always visible":{
|
||||
Italian:"6 caselle in ogni direzione sempre visibili"
|
||||
Simplified_Chinese:"6格视野范围内可见"
|
||||
Russian:"Всегда видимы 6 клеток вокруг"
|
||||
}
|
||||
@ -1448,7 +1456,7 @@
|
||||
}
|
||||
|
||||
"units in open terrain":{
|
||||
Italian:"unità in terreno aperto"
|
||||
Italian:"unità su terreno aperto"
|
||||
Simplified_Chinese:"位于开阔地形的单位"
|
||||
French:"Unités en terrain ouvert"
|
||||
Russian:"юниты на открытой местности"
|
||||
@ -1882,14 +1890,14 @@
|
||||
Russian:"Данный юнит и юниты на близлежащих территориях восстанавливают 5 ОЗ за ход. Данный юнит восстанавливает ещё 5 ОЗ вне дружественной территории"
|
||||
}
|
||||
|
||||
"Targeting I (air)":{
|
||||
"Targeting I (air)":{//Should be Air Targeting I
|
||||
Italian:"Puntamento aereo I"
|
||||
French:"Visée I (air)"
|
||||
Russian:"Прицеливание I (воздух)"
|
||||
Simplified_Chinese:"空·定位I级"
|
||||
}
|
||||
|
||||
"Targeting II (air)":{
|
||||
"Targeting II (air)":{//Should be Air Targeting II
|
||||
Italian:"Puntamento aereo II"
|
||||
French:"Visée II (air)"
|
||||
Russian:"Прицеливание II (воздух)"
|
||||
@ -2037,16 +2045,19 @@
|
||||
}
|
||||
|
||||
"Bonus when intercepting [amount]%":{
|
||||
Italian:"[amount]% bonus d'intercettazione"
|
||||
Simplified_Chinese:"执行拦截任务时+[amount]%战斗力"
|
||||
Russian:"Бонус при перехвате [amount]%"
|
||||
}
|
||||
|
||||
"Ambush I":{
|
||||
"Ambush I":{//Should be Air Ambush I
|
||||
Italian:"Imboscata aerea I"
|
||||
Simplified_Chinese:"伏击I级"
|
||||
Russian:"Засада I"
|
||||
}
|
||||
|
||||
"Ambush II":{
|
||||
"Ambush II":{//Should be Air Ambush II
|
||||
Italian:"Imboscata aerea II"
|
||||
Simplified_Chinese:"伏击II级"
|
||||
Russian:"Засада II"
|
||||
}
|
||||
|
@ -21,8 +21,8 @@ android {
|
||||
applicationId "com.unciv.app"
|
||||
minSdkVersion 14
|
||||
targetSdkVersion 29
|
||||
versionCode 295
|
||||
versionName "3.0.2"
|
||||
versionCode 296
|
||||
versionName "3.0.3"
|
||||
}
|
||||
|
||||
// Had to add this crap for Travis to build, it wanted to sign the app
|
||||
|
@ -24,6 +24,7 @@ class CityInfo {
|
||||
|
||||
var location: Vector2 = Vector2.Zero
|
||||
var name: String = ""
|
||||
var foundingCiv = ""
|
||||
var health = 200
|
||||
var resistanceCounter = 0
|
||||
|
||||
@ -41,6 +42,7 @@ class CityInfo {
|
||||
constructor() // for json parsing, we need to have a default constructor
|
||||
constructor(civInfo: CivilizationInfo, cityLocation: Vector2) { // new city!
|
||||
this.civInfo = civInfo
|
||||
foundingCiv = civInfo.civName
|
||||
this.location = cityLocation
|
||||
setTransients()
|
||||
|
||||
|
@ -12,6 +12,7 @@ import com.unciv.logic.civilization.diplomacy.DiplomacyManager
|
||||
import com.unciv.logic.civilization.diplomacy.DiplomaticStatus
|
||||
import com.unciv.logic.map.MapUnit
|
||||
import com.unciv.logic.map.TileInfo
|
||||
import com.unciv.logic.trade.TradeEvaluation
|
||||
import com.unciv.logic.trade.TradeRequest
|
||||
import com.unciv.models.gamebasics.*
|
||||
import com.unciv.models.gamebasics.tech.TechEra
|
||||
@ -56,6 +57,8 @@ class CivilizationInfo {
|
||||
var diplomacy = HashMap<String, DiplomacyManager>()
|
||||
var notifications = ArrayList<Notification>()
|
||||
val popupAlerts = ArrayList<PopupAlert>()
|
||||
|
||||
//** for trades here, ourOffers is the current civ's offers, and theirOffers is what the requesting civ offers */
|
||||
val tradeRequests = ArrayList<TradeRequest>()
|
||||
|
||||
// if we only use lists, and change the list each time the cities are changed,
|
||||
@ -332,6 +335,14 @@ class CivilizationInfo {
|
||||
for (city in cities) city.startTurn()
|
||||
|
||||
getCivUnits().toList().forEach { it.startTurn() }
|
||||
|
||||
for(tradeRequest in tradeRequests.toList()) { // remove trade requests where one of the sides can no longer supply
|
||||
val offeringCiv = gameInfo.getCivilization(tradeRequest.requestingCiv)
|
||||
if (offeringCiv.isDefeated() || !TradeEvaluation().isTradeValid(tradeRequest.trade,this, offeringCiv)) {
|
||||
tradeRequests.remove(tradeRequest)
|
||||
offeringCiv.addNotification("Our proposed trade is no longer relevant!", Color.GOLD)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun endTurn() {
|
||||
|
@ -11,6 +11,38 @@ import kotlin.math.min
|
||||
import kotlin.math.sqrt
|
||||
|
||||
class TradeEvaluation{
|
||||
|
||||
fun isTradeValid(trade:Trade, offerer:CivilizationInfo, tradePartner: CivilizationInfo): Boolean {
|
||||
for(offer in trade.ourOffers)
|
||||
if(!isOfferValid(offer,offerer))
|
||||
return false
|
||||
for(offer in trade.theirOffers)
|
||||
if(!isOfferValid(offer,tradePartner))
|
||||
return false
|
||||
return true
|
||||
}
|
||||
|
||||
private fun isOfferValid(tradeOffer: TradeOffer, offerer:CivilizationInfo): Boolean {
|
||||
|
||||
fun hasResource(tradeOffer: TradeOffer): Boolean {
|
||||
val resourcesByName = offerer.getCivResourcesByName()
|
||||
return resourcesByName.containsKey(tradeOffer.name) && resourcesByName[tradeOffer.name]!! >= tradeOffer.amount
|
||||
}
|
||||
|
||||
when(tradeOffer.type){
|
||||
TradeType.Gold -> return true // even if they go negative it's okay
|
||||
TradeType.Gold_Per_Turn -> return true // even if they go negative it's okay
|
||||
TradeType.Treaty -> return true
|
||||
TradeType.Agreement -> return true
|
||||
TradeType.Luxury_Resource -> return hasResource(tradeOffer)
|
||||
TradeType.Strategic_Resource -> return hasResource(tradeOffer)
|
||||
TradeType.Technology -> return true
|
||||
TradeType.Introduction -> return true
|
||||
TradeType.WarDeclaration -> return true
|
||||
TradeType.City -> return offerer.cities.any { it.name==tradeOffer.name }
|
||||
}
|
||||
}
|
||||
|
||||
fun isTradeAcceptable(trade: Trade, evaluator: CivilizationInfo, tradePartner: CivilizationInfo): Boolean {
|
||||
var sumOfTheirOffers = trade.theirOffers.asSequence()
|
||||
.filter { it.type!= TradeType.Treaty } // since treaties should only be evaluated once for 2 sides
|
||||
|
@ -64,6 +64,11 @@ class DropBox(){
|
||||
data,"application/octet-stream", """{"path":"$fileName"$overwriteModeString}""")
|
||||
}
|
||||
|
||||
fun deleteFile(fileName:String){
|
||||
val response = dropboxApi("https://api.dropboxapi.com/2/files/delete_v2",
|
||||
"{\"path\":\"$fileName\"}","application/json")
|
||||
}
|
||||
|
||||
|
||||
class FolderList{
|
||||
var entries = ArrayList<FolderListEntry>()
|
||||
|
Loading…
x
Reference in New Issue
Block a user