Merge remote-tracking branch 'upstream/master'
update
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.4 KiB |
BIN
android/Images/BuildingIcons/Longhouse.png
Normal file
After Width: | Height: | Size: 930 B |
BIN
android/Images/BuildingIcons/Satrap's Court.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 3.1 KiB |
BIN
android/Images/NationIcons/Iroquois.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
android/Images/NationIcons/Persia.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 489 B |
BIN
android/Images/UnitIcons/Immortal.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
android/Images/UnitIcons/Mohawk Warrior.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
@ -333,14 +333,14 @@
|
||||
production:2,
|
||||
specialistSlots:{production:1},
|
||||
hurryCostModifier:25,
|
||||
percentStatBonus:{production:15},
|
||||
percentStatBonus:{production:10},
|
||||
requiredTech:"Metal Casting"
|
||||
},
|
||||
/*
|
||||
{
|
||||
name:"Longhouse",
|
||||
replaces:"Workshop",
|
||||
uniqueTo:"Iroquois",
|
||||
cost:140,
|
||||
maintenance:2,
|
||||
production:2,
|
||||
specialistSlots:{production:1},
|
||||
@ -348,7 +348,6 @@
|
||||
uniques:["Forests provide +1 production"],
|
||||
requiredTech:"Metal Casting"
|
||||
},
|
||||
*/
|
||||
{
|
||||
name:"Forge",
|
||||
maintenance:1,
|
||||
@ -454,7 +453,7 @@
|
||||
greatPersonPoints:{gold:1},
|
||||
isWonder:true,
|
||||
requiredTech:"Physics",
|
||||
quote:"Architecture has recorded the great ideas of the human race. Not only every religious symbol, but every human thought has its page in that vast book.' - Victor Hugo"
|
||||
quote:"'Architecture has recorded the great ideas of the human race. Not only every religious symbol, but every human thought has its page in that vast book.' - Victor Hugo"
|
||||
},
|
||||
{
|
||||
name:"Armory",
|
||||
@ -501,7 +500,6 @@
|
||||
requiredBuilding:"Market",
|
||||
requiredTech:"Banking"
|
||||
},
|
||||
/*
|
||||
{
|
||||
name:"Satrap's Court",
|
||||
replaces:"Bank",
|
||||
@ -511,11 +509,9 @@
|
||||
happiness:2,
|
||||
hurryCostModifier:15,
|
||||
percentStatBonus:{gold:25},
|
||||
uniques:["+1 Gold per incoming trade route (and +1 Gold for the foreign owner)"],
|
||||
requiredBuilding:"Market",
|
||||
requiredTech:"Banking"
|
||||
},
|
||||
*/
|
||||
{
|
||||
name:"Hanse",
|
||||
replaces:"Bank",
|
||||
|
@ -541,6 +541,84 @@
|
||||
"Changwon","Andong","Gongju","Haeju","Cheongju","Mokpo","Dongducheon","Geoje","Suncheon","Jinju","Sangju",
|
||||
"Rason","Gyeongju","Chungju","Sacheon","Gimje","Anju"]
|
||||
},
|
||||
|
||||
{
|
||||
name:"Iroquois",
|
||||
leaderName:"Hiawatha",
|
||||
adjective:["Irochese"],
|
||||
startBias:["Forest"],
|
||||
preferredVictoryType:"Scientific",
|
||||
|
||||
startIntroPart1: "Greetings, noble Hiawatha, leader of the mighty Iroquois nations! Long have your people lived near the great and holy lake Ontario in the land that has come to be known as the New York state in North America. In the mists of antiquity, the five peoples of Seneca, Onondaga, Mohawks, Cayugas and Oneida united into one nation, the Haudenosaunee, the Iroquois. With no written language, the wise men of your nation created the great law of peace, the model for many contitutions including that of the United States. For many years, your people battled great enemies, such as the Huron, and the French and English invaders. Tought outnumbered and facing weapons far more advanced than the ones your warriors wielded, the Iroquois survived and prospered, until they were finally overwhelmed by the mighty armies of the new United States."
|
||||
startIntroPart2: "Oh noble Hiawatha, listen to the cries of your people! They call out to you to lead them in peace and war, to rebuild the great longhouse and unite the tribes once again. Will you accept this challenge, great leader? Will you build a civilization that will stand the test of time?"
|
||||
|
||||
declaringWar:"You are a plague upon Mother Earth! Prepare for battle!"
|
||||
attacked:"You evil creature! My braves will slaughter you!"
|
||||
defeated:"You have defeated us... but our spirits will never be vanquished! We shall return!"
|
||||
introduction:"Greetings, stranger. I am Hiawatha, speaker for the Iroquois. We seek peace with all, but we do not shrink from war."
|
||||
|
||||
neutralHello:"Good day."
|
||||
neutralLetsHearIt:["Yes?","I'm listening"]
|
||||
neutralNo:["No.","Certainly not."]
|
||||
neutralYes:["Very well.","Alright."]
|
||||
|
||||
hateHello:"Oh, it's you."
|
||||
hateLetsHearIt:["I'm listening.","Speak."]
|
||||
hateNo:["That's unacceptable","You cannot be serious!"]
|
||||
hateYes:["I suppose I must.","Very well."]
|
||||
|
||||
afterPeace:"I thank you for your mercy. I pray that we can now be friends."
|
||||
tradeRequest:"Does this trade work for you, my friend?"
|
||||
|
||||
outerColor:[54,72,72],
|
||||
innerColor:[246,205,137],
|
||||
uniqueName:"The Great Warpath"
|
||||
unique:"All units move through Forest and Jungle tiles in friendly territory as if it is Road. These tiles can be used to establish City Connections upon researching the Wheel.",
|
||||
cities:["Onoondaga","Osininka","Grand River","Akwesasme","Buffalo Creek","Brantford","Montreal","Genesse River",
|
||||
"Canandaigua Lake","Lake Simcoe","Salamanca","Gowanda","Cuba","Akron","Kanesatake","Ganienkeh","Cayuga Castle",
|
||||
"Chondote","Canajoharie","Nedrow","Oneida Lake","Kanonwalohale","Green Bay","Southwold","Mohawk Valley",
|
||||
"Schoharie","Bay of Quinte","Kanawale","Kanatsiokareke","Tyendinaga","Hahta"]
|
||||
},
|
||||
{
|
||||
name:"Persia",
|
||||
leaderName:"Darius I",
|
||||
adjective:["Persian"],
|
||||
preferredVictoryType:"Scientific",
|
||||
|
||||
startIntroPart1: "The blessings of heaven be upon you, beloved king Darius of Persia! You lead a strong and wise people. In the morning of the world, the great Persian leader Cyrus revolted against the mighty Median empire and by 550 BC, the Medes were no more. Through cunning diplomacy and military prowess, great Cyrus conquered wealthy Lydia and powerful Babylon. His son conquering proud Egypt some years later. Over time, Persian might expanded into far away Macedonia, at the very door of the upstart Greek city-states. Long would Persia prosper until the upstart villain Alexander of Macedon, destroyed the great empire in one shocking campaign."
|
||||
startIntroPart2: "Darius, your people look to you to once again bring back the days of power and glory for Persia! The empire of your ancestors must emerge again, to triumph over its foes and to bring peace and order to the world! O king, will you answer the call? Can you build a civilization that will stand the test of time?"
|
||||
|
||||
declaringWar:"Your continue existence is an embarrassment to all leaders everywhere! You must be destroyed!"
|
||||
attacked:"Curse you! You are beneath me, son of a donkey driver! I will crush you!"
|
||||
defeated:"You mongrel! Cursed be you! The world will long lament your heinous crime!"
|
||||
introduction:"Peace be on you! I am Darius, the great and outstanding king of kings of great Persia... but I suppose you knew that."
|
||||
|
||||
neutralHello:"Good day to you!"
|
||||
neutralLetsHearIt:["Go on.","You said?"]
|
||||
neutralNo:["You are not serious!","Not good enough."]
|
||||
neutralYes:["Good!","Certainly.","Agreed!"]
|
||||
|
||||
hateHello:"Ahh... you..."
|
||||
hateLetsHearIt:["I'm listening.","Go on!"]
|
||||
hateNo:["We say... no!","Of course not!"]
|
||||
hateYes:["Alright!","Agreed."]
|
||||
|
||||
afterPeace:"It appears we should call it a tie..."
|
||||
tradeRequest:"In my endless magnanimity, I am making you this offer. You agree, of course?"
|
||||
|
||||
outerColor:[153,5,3],
|
||||
innerColor:[244,232,54],
|
||||
uniqueName:"Achaemenid Legacy"
|
||||
unique:"Golden Ages last 50% longer. During a Golden Age, units receive +1 Movement and +10% Strength",
|
||||
cities:["Persepolis","Parsagadae","Susa","Ecbatana","Tarsus","Gordium","Bactra","Sardis","Ergili","Dariushkabir",
|
||||
"Ghulaman","Zohak","Istakhr","Jinjan","Borazjan","Herat","Dakyanus","Bampur","Turengtepe","Rey","Shiraz",
|
||||
"Thuspa","Hasanlu","Gabae","Merv","Behistun","Kandahar","Altintepe","Bunyan","Charsadda","Uratyube",
|
||||
"Dura Europos","Aleppo","Qatna","Kabul","Capisa","Kyreskhata","Marakanda","Peshawar","Van","Pteira","Arshada",
|
||||
"Artakaona","Aspabota","Autiyara","Bagastana","Baxtri","Darmasa","Daphnai","Drapsaka","Eion","Gandutava",
|
||||
"Gaugamela","Harmozeia","Ekatompylos","Izata","Kampada","Kapisa","Karmana","Kounaxa","Kuganaka","Nautaka",
|
||||
"Paishiyauvada","Patigrbana","Phrada"]
|
||||
},
|
||||
|
||||
/*
|
||||
{
|
||||
name:"Australia",
|
||||
@ -771,45 +849,6 @@
|
||||
"Huaras","Riobamba","Caxamalca","Sausa","Tambo Colorado","Huaca","Tumbes","Chan Chan","Sipan","Pachacamac",
|
||||
"Llactapata","Pisac","Kuelap","Pajaten","Chucuito","Choquequirao"]
|
||||
}
|
||||
{
|
||||
name:"Persian",
|
||||
leaderName:"Darius I",
|
||||
adjective:["Persian"],
|
||||
preferredVictoryType:"Scientific",
|
||||
|
||||
startIntroPart1: "The blessings of heaven be upon you, beloved king Darius of Persia! You lead a strong and wise people. In the morning of the world, the great Persian leader Cyrus revolted against the mighty Median empire and by 550 BC, the Medes were no more. Through cunning diplomacy and military prowess, great Cyrus conquered wealthy Lydia and powerful Babylon. His son conquering proud Egypt some years later. Over time, Persian might expanded into far away Macedonia, at the very door of the upstart Greek city-states. Long would Persia prosper until the upstart villain Alexander of Macedon, destroyed the great empire in one shocking campaign."
|
||||
startIntroPart2: "Darius, your people look to you to once again bring back the days of power and glory for Persia! The empire of your ancestors must emerge again, to triumph over its foes and to bring peace and order to the world! O king, will you answer the call? Can you build a civilization that will stand the test of time?"
|
||||
|
||||
declaringWar:"Your continue existence is an embarrassment to all leaders everywhere! You must be destroyed!"
|
||||
attacked:"Curse you! You are beneath me, son of a donkey driver! I will crush you!"
|
||||
defeated:"You mongrel! Cursed be you! The world will long lament your heinous crime!"
|
||||
introduction:"Peace be on you! I am Darius, the great and outstanding king of kings of great Persia... but I suppose you knew that."
|
||||
|
||||
neutralHello:"Good day to you!"
|
||||
neutralLetsHearIt:["Go on.","You said?"]
|
||||
neutralNo:["You are not serious!","Not good enough."]
|
||||
neutralYes:["Good!","Certainly.","Agreed!"]
|
||||
|
||||
hateHello:"Ahh... you..."
|
||||
hateLetsHearIt:["I'm listening.","Go on!"]
|
||||
hateNo:["We say... no!","Of course not!"]
|
||||
hateYes:["Alright!","Agreed."]
|
||||
|
||||
afterPeace:"It appears we should call it a tie..."
|
||||
tradeRequest:"In my endless magnanimity, I am making you this offer. You agree, of course?"
|
||||
|
||||
outerColor:[255,0,0],
|
||||
innerColor:[255,255,0],
|
||||
uniqueName:"Achaemenid Legacy"
|
||||
unique:"Golden Ages last 50% longer. During a Golden Age, units receive +1 Movement and +10% Strenght",
|
||||
cities:["Persepolis","Parsagadae","Susa","Ecbatana","Tarsus","Gordium","Bactra","Sardis","Ergili","Dariushkabir",
|
||||
"Ghulaman","Zohak","Istakhr","Jinjan","Borazjan","Herat","Dakyanus","Bampur","Turengtepe","Rey","Shiraz",
|
||||
"Thuspa","Hasanlu","Gabae","Merv","Behistun","Kandahar","Altintepe","Bunyan","Charsadda","Uratyube",
|
||||
"Dura Europos","Aleppo","Qatna","Kabul","Capisa","Kyreskhata","Marakanda","Peshawar","Van","Pteira","Arshada",
|
||||
"Artakaona","Aspabota","Autiyara","Bagastana","Baxtri","Darmasa","Daphnai","Drapsaka","Eion","Gandutava",
|
||||
"Gaugamela","Harmozeia","Ekatompylos","Izata","Kampada","Kapisa","Karmana","Kounaxa","Kuganaka","Nautaka",
|
||||
"Paishiyauvada","Patigrbana","Phrada"]
|
||||
},
|
||||
{
|
||||
name:"Polynesia",
|
||||
leaderName:"Kamehameha I",
|
||||
@ -920,43 +959,6 @@
|
||||
"Nan","Tak","Suphanburi","Hongsawadee","Thawaii","Ayutthuya","Taphan Hin","Uthai Thani","Lap Buri","Ratchasima",
|
||||
"Ban Phai","Loci","Khan Kaen","Surin"]
|
||||
},
|
||||
{
|
||||
name:"Iroquois",
|
||||
leaderName:"Hiawatha",
|
||||
adjective:["Irochese"],
|
||||
startBias:["Forest"],
|
||||
preferredVictoryType:"Scientific",
|
||||
|
||||
startIntroPart1: "Greetings, noble Hiawatha, leader of the mighty Iroquois nations! Long have your people lived near the great and holy lake Ontario in the land that has come to be known as the New York state in North America. In the mists of antiquity, the five peoples of Seneca, Onondaga, Mohawks, Cayugas and Oneida united into one nation, the Haudenosaunee, the Iroquois. With no written language, the wise men of your nation created the great law of peace, the model for many contitutions including that of the United States. For many years, your people battled great enemies, such as the Huron, and the French and English invaders. Tought outnumbered and facing weapons far more advanced than the ones your warriors wielded, the Iroquois survived and prospered, until they were finally overwhelmed by the mighty armies of the new United States."
|
||||
startIntroPart2: "Oh noble Hiawatha, listen to the cries of your people! They call out to you to lead them in peace and war, to rebuild the great longhouse and unite the tribes once again. Will you accept this challenge, great leader? Will you build a civilization that will stand the test of time?"
|
||||
|
||||
declaringWar:"You are a plague upon Mother Earth! Prepare for battle!"
|
||||
attacked:"You evil creature! My braves will slaughter you!"
|
||||
defeated:"You have defeated us... but our spirits will never be vanquished! We shall return!"
|
||||
introduction:"Greetings, stranger. I am Hiawatha, speaker for the Iroquois. We seek peace with all, but we do not shrink from war."
|
||||
|
||||
neutralHello:"Good day."
|
||||
neutralLetsHearIt:["Yes?","I'm listening"]
|
||||
neutralNo:["No.","Certainly not."]
|
||||
neutralYes:["Very well.","Alright."]
|
||||
|
||||
hateHello:"Oh, it's you."
|
||||
hateLetsHearIt:["I'm listening.","Speak."]
|
||||
hateNo:["That's unacceptable","You cannot be serious!"]
|
||||
hateYes:["I suppose I must.","Very well."]
|
||||
|
||||
afterPeace:"I thank you for your mercy. I pray that we can now be friends."
|
||||
tradeRequest:"Does this trade work for you, my friend?"
|
||||
|
||||
outerColor:[0,25,51],
|
||||
innerColor:[255,255,102],
|
||||
uniqueName:"The Great Warpath"
|
||||
unique:"All units move through Forest and Jungle tiles in friendly territory as if it is Road. These tiles can be used to establish City Connections upon researching the Wheel.",
|
||||
cities:["Onoondaga","Osininka","Grand River","Akwesasme","Buffalo Creek","Brantford","Montreal","Genesse River",
|
||||
"Canandaigua Lake","Lake Simcoe","Salamanca","Gowanda","Cuba","Akron","Kanesatake","Ganienkeh","Cayuga Castle",
|
||||
"Chondote","Canajoharie","Nedrow","Oneida Lake","Kanonwalohale","Green Bay","Southwold","Mohawk Valley",
|
||||
"Schoharie","Bay of Quinte","Kanawale","Kanatsiokareke","Tyendinaga","Hahta"]
|
||||
},
|
||||
{
|
||||
//NEEDS SNOW AND ICE
|
||||
name:"Denmark",
|
@ -78,6 +78,10 @@
|
||||
Portuguese:"Stonehenge"
|
||||
Polish:"Stonehenge"
|
||||
}
|
||||
|
||||
"'Time crumbles things; everything grows old and is forgotten under the power of time' - Aristotle":{
|
||||
Italian:"'Il tempo sgretola le cose; davanti al suo potere tutto invecchia e viene dimenticato.' - Aristotele"
|
||||
}
|
||||
|
||||
"Library":{
|
||||
Italian:"Biblioteca"
|
||||
@ -127,6 +131,10 @@
|
||||
Polish:"Wielka Biblioteka"
|
||||
}
|
||||
|
||||
"'Libraries are as the shrine where all the relics of the ancient saints, full of true virtue, and all that without delusion or imposture are preserved and reposed.' - Sir Francis Bacon":{
|
||||
Italian:"'Le biblioteche sono come una cappella in cui sono conservate e protette tutte le reliquie dei santi antichi, colme di vera virtù, e tutto ciò che è privo di illusione e inganno' - Sir Francis Bacon"
|
||||
}
|
||||
|
||||
"Circus":{
|
||||
Italian:"Circo"
|
||||
Russian:"Цирк"
|
||||
@ -171,6 +179,10 @@
|
||||
Polish:"Piramidy"
|
||||
}
|
||||
|
||||
"'O, let not the pains of death which come upon thee enter into my body. I am the god Tem, and I am the foremost part of the sky, and the power which protecteth me is that which is with all the gods forever.' - The Book of the Dead, translated by Sir Ernest Alfred Wallis Budge":{
|
||||
Italian:"''Oh, non lasciare che i dolori della morte che piombano su di te entrino nel mio corpo. Io sono il dio Tem, e risiedo nella parte più importante del cielo, e il potere che mi protegge è quello che si accompagna per sempre a tutti gli dèi.' - Il Libro dei Morti, traduzione di Sir Ernest Alfred Wallis Budge"
|
||||
}
|
||||
|
||||
"Worker construction increased 25%":{ //typo? Removed one instance of "Worker construction increased"
|
||||
Italian:"+25% velocità costruzione lavoratori"
|
||||
Russian:"Увеличивает на 25% скорость создания улучшений на клетках"
|
||||
@ -239,6 +251,10 @@
|
||||
Russian:"Колосс Родосский"
|
||||
}
|
||||
|
||||
"'Why man, he doth bestride the narrow world like a colossus, and we petty men walk under his huge legs, and peep about to find ourselves dishonorable graves.' - William Shakespeare, Julius Caesar":{
|
||||
Italian:"'Già, lui cavalca questo stretto mondo ormai come un colosso; e noi, gli omuncoli, passiamo sotto le sue gambe enormi e ci scrutiamo intorno, per ritrovarci tutti quanti siamo come tanti sepolcri senza onore' - William Shakespeare: Giulio Cesare"
|
||||
}
|
||||
|
||||
"+1 gold from worked water tiles in city":{
|
||||
Italian:"+1 Oro per ogni risorsa anfibia sfruttata dalla città."
|
||||
Simplified_Chinese:"所在城市每个水上地块+1金钱"
|
||||
@ -290,6 +306,10 @@
|
||||
Polish:"Wyrocznia"
|
||||
}
|
||||
|
||||
"'The ancient Oracle said that I was the wisest of all the Greeks. It is because I alone, of all the Greeks, know that I know nothing' - Socrates":{
|
||||
Italian:"'L'antico Oracolo ha detto che sono il più saggio di tutti i greci. Questo perché io solo, di tutti i greci, so di non sapere nulla.' - Socrate"
|
||||
}
|
||||
|
||||
"Free Social Policy":{
|
||||
Italian:"Ricevi una politica sociale gratuita"
|
||||
Russian:"Бесплатный общественный институт"
|
||||
@ -327,6 +347,10 @@
|
||||
Polish:"Chichen Itza"
|
||||
}
|
||||
|
||||
"'The katun is established at Chichen Itza. The settlement of the Itza shall take place there. The quetzal shall come, the green bird shall come. Ah Kantenal shall come. It is the word of God. The Itza shall come.' - The Books of Chilam Balam":{
|
||||
Italian:"'Il katun è stabilito a Chichèn Itzà. L'insediamento degli Itzà avrà luogo. Arriverà il quetzal, arriverà l'uccello verde. Ah Kantenal arriverà. È la parola di Dio. Gli Itzà arriveranno. - I Libri di Chilam Balam"
|
||||
}
|
||||
|
||||
"Golden Age length increases +50%":{
|
||||
Italian:"+50% durata dell'Età dell'Oro"
|
||||
Russian:"Длина золотого века +50%"
|
||||
@ -385,6 +409,10 @@
|
||||
Russian:"Фаросский маяк"
|
||||
}
|
||||
|
||||
"'They that go down to the sea in ships, that do business in great waters; these see the works of the Lord, and his wonders in the deep.' - The Bible, Psalms 107:23-24":{
|
||||
Italian:"'Ecco quelli che scendon nel mare su navi, che trafficano sulle grandi acque; essi veggono le opere dell'Eterno e le sue meraviglie nell'abisso.' - Salmi 107:23-24"
|
||||
}
|
||||
|
||||
"All military naval units receive +1 movement and +1 sight":{
|
||||
Spanish:"Todas las unidades militares navales reciben +1de movimiento y +1 de vision"
|
||||
Italian:"+1 Movimento e +1 Visione per ogni unità militare marittima"
|
||||
@ -456,6 +484,10 @@
|
||||
Polish:"Wiszące Ogrody"
|
||||
}
|
||||
|
||||
"'I think that if ever a mortal heard the word of God it would be in a garden at the cool of the day.' - F. Frankfort Moore":{
|
||||
Italian:"'Penso che se mai un mortale ha sentito la voce di Dio, sarà stato in un giardino sul far della sera.' - F. Frankfort Moore"
|
||||
}
|
||||
|
||||
/*
|
||||
//New Wonder: Statue of Zeus! Suggested by Smashfanful
|
||||
"Statue of Zeus":{
|
||||
@ -507,6 +539,10 @@
|
||||
Polish:"Terakotowa armia"
|
||||
Russian:"Терракотовая армия"
|
||||
}
|
||||
|
||||
"'Regard your soldiers as your children, and they will follow you into the deepest valleys; look on them as your own beloved sons, and they will stand by you even unto death.' - Sun Tzu":{
|
||||
Italian:"'Trattate i soldati come figli, e vi seguiranno nelle valli più profonde; considerateli la vostra amata progenie, e resteranno accanto a voi fino alla morte.' - Sun Tzu"
|
||||
}
|
||||
|
||||
"Market":{
|
||||
Italian:"Mercato"
|
||||
@ -576,6 +612,10 @@
|
||||
German:"Notre-Dame"
|
||||
Polish:"Notre Dame"
|
||||
}
|
||||
|
||||
"Architecture has recorded the great ideas of the human race. Not only every religious symbol, but every human thought has its page in that vast book.' - Victor Hugo":{
|
||||
Italian:"'L'architettura ha registrato le più grandi idee della razza umana. Non solo ogni simbolo religioso, ma ogni pensiero umano ha la sua pagina in quel vasto libro.' - Victor Hugo"
|
||||
}
|
||||
|
||||
"Hagia Sophia":{
|
||||
Italian:"Hagia Sophia"
|
||||
@ -589,6 +629,10 @@
|
||||
Polish:"Hagia Sophia"
|
||||
}
|
||||
|
||||
"'For it soars to a height to match the sky, and as if surging up from among the other buildings it stands on high and looks down upon the remainder of the city, adorning it, because it is a part of it, but glorying in its own beauty' - Procopius, De Aedificis":{
|
||||
Italian:"'Perché si erge così alta da toccare il cielo, e come fluttuando sugli altri edifici guarda dall'alto in basso il resto della città, abbellendola, perché fa parte di essa, ma gloriandosi della propria bellezza.' - Procopio, De Aedificis (Sugli edifici)"
|
||||
}
|
||||
|
||||
"+33% great person generation in all cities":{
|
||||
Italian:"+33% di generazione di Grandi Personaggi in tutte le città"
|
||||
Russian:"+33% к созданию великих людей во всех городах"
|
||||
@ -626,6 +670,10 @@
|
||||
Polish:"Machu Picchu"
|
||||
}
|
||||
|
||||
"'Few romances can ever surpass that of the granite citadel on top of the beetling precipices of Machu Picchu, the crown of Inca Land.' - Hiram Bingham":{
|
||||
Italian:"'Pochi racconti fantastici possono sorpassare quello della cittadella di granito sospesa in cima ai precipizi, Machu Picchu, la corona delle terre degli Inca.' - Hiram Bingham"
|
||||
}
|
||||
|
||||
"Gold from all trade routes +25%":{
|
||||
Italian:"+25% oro da ogni rotta commerciale"
|
||||
Russian:"Золото со всех торговых путей + 25%"
|
||||
@ -672,6 +720,10 @@
|
||||
Russian:"Великая стена"
|
||||
}
|
||||
|
||||
"'The art of war teaches us to rely not on the likelihood of the enemy's not attacking, but rather on the fact that we have made our position unassailable.' - Sun Tzu":{
|
||||
Italian:"'L'arte della guerra ci insegna a non affidarci alla possibilità che il nemico... non ci attacchi, ma piuttosto alla certezza di aver reso la nostra posizione inattaccabile.' - Sun Tzu"
|
||||
}
|
||||
|
||||
"Enemy land units must spend 1 extra movement point when inside your territory (obsolete upon Dynamite)":{
|
||||
Italian:"Le unità nemiche impiegano un punto Movimento extra se all'interno del tuo territorio (diventa obsoleta con la Dinamite)."
|
||||
Simplified_Chinese:"境内敌方陆军单位在任何地块额外消耗1移动力"
|
||||
@ -691,9 +743,8 @@
|
||||
German:"Werkstatt"
|
||||
Polish:"Warsztat"
|
||||
}
|
||||
|
||||
/*
|
||||
"Longhouse":{ //Irochese unique
|
||||
|
||||
"Longhouse":{ // Iroquois unique
|
||||
Italian:"Casa Lunga"
|
||||
French:"Longère"
|
||||
Polish:"Długi dom"
|
||||
@ -704,7 +755,6 @@
|
||||
French:"+1 production pour chaque cases de forêt exploitées par la ville."
|
||||
Polish:"+1 do produkcji za każde pracujące pole lasu"
|
||||
}
|
||||
*/
|
||||
|
||||
"Forge":{
|
||||
Italian:"Fucina"
|
||||
@ -828,6 +878,10 @@
|
||||
Russian:"Альгамбра"
|
||||
}
|
||||
|
||||
"'Justice is an unassailable fortress, built on the brow of a mountain which cannot be overthrown by the violence of torrents, nor demolished by the force of armies.' - Joseph Addison":{
|
||||
Italian:"'La giustizia è una fortezza inespugnabile, costruita sulla cresta di una montagna che non può essere rovesciata dalla violenza dei torrenti né demolita dalla forza degli eserciti.' - Joseph Addison"
|
||||
}
|
||||
|
||||
"All newly-trained melee, mounted, and armored units in this city receive the Drill I promotion":{
|
||||
Italian:"Ogni unità da mischia, a cavallo e corazzata appena reclutata nella città riceve la promozione Addestramento I"
|
||||
German:"Alle neuen Nahkampf-, berittenen und gepanzerten Einheiten in dieser Stadt erhalten eine Drill I Beförderung"
|
||||
@ -849,6 +903,10 @@
|
||||
Polish:"Angkor Wat"
|
||||
}
|
||||
|
||||
"'The temple is like no other building in the world. It has towers and decoration and all the refinements which the human genius can conceive of.' - Antonio da Magdalena":{
|
||||
Italian:"'Il tempio non ha eguali nel mondo. Ha torri e decorazioni e tutti gli abbellimenti che il genio dell'uomo può concepire.' - Antonio da Magdalena"
|
||||
}
|
||||
|
||||
"Cost of acquiring new tiles reduced by 25%":{
|
||||
Italian:"-25% costo per l'acquisto di nuove celle"
|
||||
Russian:"Сокращает стоимость приобретения новых клеток на 25%"
|
||||
@ -1063,6 +1121,7 @@
|
||||
}
|
||||
|
||||
"Get ":{
|
||||
Italian:"Ottieni "
|
||||
Simplified_Chinese:"获得"
|
||||
}
|
||||
|
||||
|
@ -531,11 +531,14 @@
|
||||
"Type: ":{
|
||||
Italian:"Tipo: "
|
||||
Simplified_Chinese:"城邦类型:"
|
||||
Russian:"Тип: "
|
||||
|
||||
}
|
||||
|
||||
"Influence: ":{
|
||||
Italian:"Influenza: "
|
||||
Simplified_Chinese:"影响力:"
|
||||
Russian:"Влияние: "
|
||||
}
|
||||
|
||||
////// Trade
|
||||
@ -756,6 +759,7 @@
|
||||
"Introduction to [nation]":{
|
||||
Italian:"Introduci a [nation]"
|
||||
Simplified_Chinese:"介绍认识[nation]"
|
||||
Russian:"Представиться [nation]"
|
||||
}
|
||||
|
||||
"Luxury resources":{
|
||||
@ -858,7 +862,7 @@
|
||||
Italian:"Alessandro"
|
||||
French:"Alexandre le Grand"
|
||||
Simplified_Chinese:"亚历山大"
|
||||
Russian:"Александр Македонский"
|
||||
Russian:"Александр"
|
||||
},
|
||||
|
||||
"City-State Influence degrades at half and recovers at twice the normal rate": {
|
||||
@ -1214,20 +1218,39 @@
|
||||
Russian:"+2 Наука для всех специалистов и улучшений клеток Великими людьми."
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
"Iroquois":{
|
||||
Italian:"Irochese"
|
||||
French:"Iroquois"
|
||||
Portuguese:"Tribo Iroquois" //tribo meaning tribe of course
|
||||
}
|
||||
|
||||
"Hiawatha":{
|
||||
}
|
||||
|
||||
"Units move through Forest and Jungle in friendly territory as if it is a Road. These tiles can be used to establish Trade Routes upon searching The Wheel.":{
|
||||
Italian:"Le caselle di Foreste e Giungle in territorio amico agiscono come strade, e sono usate per stabilire Rotte Commerciali quando si scopre la Ruota."
|
||||
Portuguese:"Mova-se por florestas e selvas em território amigo como se fossem estradas. Estas terras podem ser usadas para estabelecer rotas de comércio após pesquisar a roda."
|
||||
French:"Les Forêt et les Jungles en territoire alliés ont les mêmes attributs que les routes. A la découverte de la Roue, elles peuvent établir des routes commerciales."
|
||||
}
|
||||
|
||||
|
||||
"Persia":{
|
||||
Italian:"Persia"
|
||||
French:"Perse"
|
||||
Portuguese:"Pérsia"
|
||||
}
|
||||
|
||||
"Darius I":{
|
||||
}
|
||||
|
||||
"Golden Ages last 50% longer. During a Golden Age, units receive +1 Movement and a +10% Combat Strenght bonus.":{
|
||||
Italian:"+50% durata delle Età dell'Oro, durante le quali le unità ricevono +1 Movimento e +10% Forza."
|
||||
Portuguese:"Idades douradas duram 50% mais, unidades recebem 1 movimento a mais e um bonus de +10% em força de combate."
|
||||
French:"Les Ages d'Or durent 50% plus longtemps. Durant les Ages d'Or, les unités gagnent +1 mouvement et +10% de force de Combat."
|
||||
}
|
||||
|
||||
/*
|
||||
"Aztecs":{
|
||||
Italian:"Azteca"
|
||||
French:"Aztèques"
|
||||
@ -1306,17 +1329,6 @@
|
||||
French:"Peut embarquer et bouger sur les océans dès le début. +1 Vision lorsque embarqué."
|
||||
}
|
||||
|
||||
"Persia":{
|
||||
Italian:"Persia"
|
||||
French:"Perse"
|
||||
Portuguese:"Pérsia"
|
||||
}
|
||||
|
||||
"Golden Ages last 50% longer. During a Golden Age, units receive +1 Movement and a +10% Combat Strenght bonus.":{
|
||||
Italian:"+50% durata delle Età dell'Oro, durante le quali le unità ricevono +1 Movimento e +10% Forza."
|
||||
Portuguese:"Idades douradas duram 50% mais, unidades recebem 1 movimento a mais e um bonus de +10% em força de combate."
|
||||
French:"Les Ages d'Or durent 50% plus longtemps. Durant les Ages d'Or, les unités gagnent +1 mouvement et +10% de force de Combat."
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
|
@ -382,6 +382,12 @@
|
||||
French:"Hoplite"
|
||||
}
|
||||
|
||||
"Immortal":{ // Persian unique
|
||||
}
|
||||
|
||||
"+10 HP when healing":{
|
||||
}
|
||||
|
||||
////// Classical Era Units
|
||||
|
||||
"Composite Bowman":{
|
||||
@ -439,6 +445,12 @@
|
||||
German:"Schwertkämpfer"
|
||||
}
|
||||
|
||||
"Mohawk Warrior":{
|
||||
}
|
||||
|
||||
"+33% combat bonus in Forest/Jungle":{
|
||||
}
|
||||
|
||||
"Legion":{
|
||||
Italian:"Legionario"
|
||||
Romanian:"Legionar"
|
||||
|
@ -243,11 +243,10 @@
|
||||
hurryCostModifier:20,
|
||||
attackSound:"metalhit"
|
||||
},
|
||||
/*
|
||||
{
|
||||
name:"Immortal",
|
||||
replaces:"Spearman",
|
||||
uniqueTo:"Persian",
|
||||
uniqueTo:"Persia",
|
||||
unitType:"Melee",
|
||||
movement:2,
|
||||
strength:12,
|
||||
@ -255,12 +254,10 @@
|
||||
requiredTech:"Bronze Working",
|
||||
obsoleteTech:"Civil Service",
|
||||
upgradesTo: "Pikeman",
|
||||
uniques:["Bonus vs Mounted 50%","Heals at double rate"],
|
||||
uniques:["Bonus vs Mounted 50%","+10 HP when healing"],
|
||||
hurryCostModifier:20,
|
||||
attackSound:"metalhit"
|
||||
//Persian unique unit
|
||||
},
|
||||
*/
|
||||
|
||||
|
||||
/* Classical Era */
|
||||
@ -322,6 +319,21 @@
|
||||
hurryCostModifier:20,
|
||||
attackSound:"metalhit"
|
||||
},
|
||||
{
|
||||
name:"Mohawk Warrior",
|
||||
unitType:"Melee",
|
||||
replaces:"Swordsman",
|
||||
uniqueTo:"Iroquois",
|
||||
movement:2,
|
||||
strength:14,
|
||||
cost: 75,
|
||||
requiredTech:"Iron Working",
|
||||
upgradesTo:"Longswordsman",
|
||||
obsoleteTech:"Steel",
|
||||
uniques:["+33% combat bonus in Forest/Jungle"]
|
||||
hurryCostModifier:20,
|
||||
attackSound:"metalhit"
|
||||
},
|
||||
{
|
||||
name:"Legion",
|
||||
unitType:"Melee",
|
||||
@ -338,7 +350,6 @@
|
||||
hurryCostModifier:20,
|
||||
attackSound:"metalhit"
|
||||
},
|
||||
/*
|
||||
{
|
||||
name:"Mohawk Warrior",
|
||||
unitType:"Melee",
|
||||
@ -353,9 +364,7 @@
|
||||
hurryCostModifier:20,
|
||||
uniques:["Combat Bonus in Forest/Jungle 33%"],
|
||||
attackSound:"metalhit"
|
||||
//Iroquese unique unit. Bonus when fighting in Jungles and Forests. Doesn't require Iron.
|
||||
},
|
||||
*/
|
||||
{
|
||||
name:"Horseman",
|
||||
unitType:"Mounted",
|
||||
|
@ -21,8 +21,8 @@ android {
|
||||
applicationId "com.unciv.app"
|
||||
minSdkVersion 14
|
||||
targetSdkVersion 29
|
||||
versionCode 297
|
||||
versionName "3.0.4"
|
||||
versionCode 298
|
||||
versionName "3.0.5"
|
||||
}
|
||||
|
||||
// Had to add this crap for Travis to build, it wanted to sign the app
|
||||
|
@ -41,6 +41,7 @@ class GameInfo {
|
||||
toReturn.difficulty=difficulty
|
||||
toReturn.gameParameters = gameParameters
|
||||
toReturn.gameId = gameId
|
||||
toReturn.oneMoreTurnMode = oneMoreTurnMode
|
||||
return toReturn
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.unciv.logic.battle
|
||||
|
||||
import com.unciv.Constants
|
||||
import com.unciv.logic.map.MapUnit
|
||||
import com.unciv.logic.map.TileInfo
|
||||
import com.unciv.models.gamebasics.unit.UnitType
|
||||
@ -40,47 +41,49 @@ class BattleDamage{
|
||||
for (BDM in getBattleDamageModifiersOfUnit(combatant.unit)) {
|
||||
if (BDM.vs == enemy.getUnitType().toString())
|
||||
addToModifiers(BDM)
|
||||
if(BDM.vs == "wounded units" && enemy is MapUnitCombatant && enemy.getHealth()<100)
|
||||
if (BDM.vs == "wounded units" && enemy is MapUnitCombatant && enemy.getHealth() < 100)
|
||||
addToModifiers(BDM)
|
||||
if(BDM.vs == "land units" && enemy.getUnitType().isLandUnit())
|
||||
if (BDM.vs == "land units" && enemy.getUnitType().isLandUnit())
|
||||
addToModifiers(BDM)
|
||||
if(BDM.vs == "water units" && enemy.getUnitType().isWaterUnit())
|
||||
if (BDM.vs == "water units" && enemy.getUnitType().isWaterUnit())
|
||||
addToModifiers(BDM)
|
||||
if(BDM.vs == "air units" && enemy.getUnitType().isAirUnit())
|
||||
if (BDM.vs == "air units" && enemy.getUnitType().isAirUnit())
|
||||
addToModifiers(BDM)
|
||||
}
|
||||
|
||||
//https://www.carlsguides.com/strategy/civilization5/war/combatbonuses.php
|
||||
val civHappiness = combatant.getCivInfo().getHappiness()
|
||||
if (civHappiness < 0)
|
||||
modifiers["Unhappiness"] = max(0.02f * civHappiness,-0.9f) // otherwise it could exceed -100% and start healing enemy units...
|
||||
modifiers["Unhappiness"] = max(0.02f * civHappiness, -0.9f) // otherwise it could exceed -100% and start healing enemy units...
|
||||
|
||||
if(combatant.getCivInfo().policies.isAdopted("Populism") && combatant.getHealth() < 100){
|
||||
if (combatant.getCivInfo().policies.isAdopted("Populism") && combatant.getHealth() < 100) {
|
||||
modifiers["Populism"] = 0.25f
|
||||
}
|
||||
|
||||
if(combatant.getCivInfo().policies.isAdopted("Discipline") && combatant.isMelee()
|
||||
&& combatant.getTile().neighbors.flatMap { it.getUnits() }
|
||||
.any { it.civInfo==combatant.getCivInfo() && !it.type.isCivilian() && !it.type.isAirUnit()})
|
||||
if (combatant.getCivInfo().policies.isAdopted("Discipline") && combatant.isMelee()
|
||||
&& combatant.getTile().neighbors.flatMap { it.getUnits() }
|
||||
.any { it.civInfo == combatant.getCivInfo() && !it.type.isCivilian() && !it.type.isAirUnit() })
|
||||
modifiers["Discipline"] = 0.15f
|
||||
|
||||
val requiredResource = combatant.unit.baseUnit.requiredResource
|
||||
if(requiredResource!=null && combatant.getCivInfo().getCivResourcesByName()[requiredResource]!!<0
|
||||
&& !combatant.getCivInfo().isBarbarian()){
|
||||
modifiers["Missing resource"]=-0.25f
|
||||
if (requiredResource != null && combatant.getCivInfo().getCivResourcesByName()[requiredResource]!! < 0
|
||||
&& !combatant.getCivInfo().isBarbarian()) {
|
||||
modifiers["Missing resource"] = -0.25f
|
||||
}
|
||||
|
||||
//todo : performance improvement
|
||||
if (combatant.getUnitType()!=UnitType.City) {
|
||||
val nearbyCivUnits = combatant.unit.getTile().getTilesInDistance(2)
|
||||
.filter {it.civilianUnit?.civInfo == combatant.unit.civInfo}
|
||||
.map {it.civilianUnit}
|
||||
if (nearbyCivUnits.any { it!!.hasUnique("Bonus for units in 2 tile radius 15%") }) {
|
||||
modifiers["Great General"]= if (combatant.unit.civInfo.nation.unique ==
|
||||
"Great general provides double combat bonus, and spawns 50% faster") 0.3f
|
||||
else 0.15f
|
||||
}
|
||||
val nearbyCivUnits = combatant.unit.getTile().getTilesInDistance(2)
|
||||
.filter { it.civilianUnit?.civInfo == combatant.unit.civInfo }
|
||||
.map { it.civilianUnit }
|
||||
if (nearbyCivUnits.any { it!!.hasUnique("Bonus for units in 2 tile radius 15%") }) {
|
||||
val greatGeneralModifier = if (combatant.unit.civInfo.nation.unique ==
|
||||
"Great general provides double combat bonus, and spawns 50% faster") 0.3f
|
||||
else 0.15f
|
||||
modifiers["Great General"] = greatGeneralModifier
|
||||
}
|
||||
|
||||
if(combatant.getCivInfo().nation.unique=="Golden Ages last 50% longer. During a Golden Age, units receive +1 Movement and +10% Strength")
|
||||
modifiers["Golden Age"] = 0.1f
|
||||
|
||||
}
|
||||
|
||||
if (combatant.getCivInfo().policies.isAdopted("Honor") && enemy.getCivInfo().isBarbarian())
|
||||
@ -95,22 +98,6 @@ class BattleDamage{
|
||||
if(attacker is MapUnitCombatant) {
|
||||
modifiers.putAll(getTileSpecificModifiers(attacker,defender.getTile()))
|
||||
|
||||
val defenderTile = defender.getTile()
|
||||
val isDefenderInRoughTerrain = defenderTile.isRoughTerrain()
|
||||
for (BDM in getBattleDamageModifiersOfUnit(attacker.unit)) {
|
||||
val text = BDM.getText()
|
||||
if (BDM.vs == "units in open terrain" && !isDefenderInRoughTerrain) {
|
||||
if(modifiers.containsKey(text))
|
||||
modifiers[text] =modifiers[text]!! + BDM.modificationAmount
|
||||
else modifiers[text] = BDM.modificationAmount
|
||||
}
|
||||
if (BDM.vs == "units in rough terrain" && isDefenderInRoughTerrain) {
|
||||
if (modifiers.containsKey(text))
|
||||
modifiers[text] = modifiers[text]!! + BDM.modificationAmount
|
||||
else modifiers[text] = BDM.modificationAmount
|
||||
}
|
||||
}
|
||||
|
||||
for (ability in attacker.unit.getUniques()) {
|
||||
val regexResult = Regex("""Bonus as Attacker [(\d*)]%""").matchEntire(ability) //to do: extend to defender, and penalyy
|
||||
if (regexResult == null) continue
|
||||
@ -119,6 +106,19 @@ class BattleDamage{
|
||||
modifiers["Attacker Bonus"] =modifiers["Attacker Bonus"]!! + bonus
|
||||
else modifiers["Attacker Bonus"] = bonus
|
||||
}
|
||||
|
||||
if(attacker.unit.isEmbarked())
|
||||
modifiers["Landing"] = -0.5f
|
||||
|
||||
if (attacker.isMelee()) {
|
||||
val numberOfAttackersSurroundingDefender = defender.getTile().neighbors.count {
|
||||
it.militaryUnit != null
|
||||
&& it.militaryUnit!!.owner == attacker.getCivInfo().civName
|
||||
&& MapUnitCombatant(it.militaryUnit!!).isMelee()
|
||||
}
|
||||
if (numberOfAttackersSurroundingDefender > 1)
|
||||
modifiers["Flanking"] = 0.1f * (numberOfAttackersSurroundingDefender-1) //https://www.carlsguides.com/strategy/civilization5/war/combatbonuses.php
|
||||
}
|
||||
}
|
||||
|
||||
else if (attacker is CityCombatant) {
|
||||
@ -126,18 +126,7 @@ class BattleDamage{
|
||||
modifiers["Oligarchy"] = 0.5f
|
||||
}
|
||||
|
||||
if (attacker.isMelee()) {
|
||||
val numberOfAttackersSurroundingDefender = defender.getTile().neighbors.count {
|
||||
it.militaryUnit != null
|
||||
&& it.militaryUnit!!.owner == attacker.getCivInfo().civName
|
||||
&& MapUnitCombatant(it.militaryUnit!!).isMelee()
|
||||
}
|
||||
if (numberOfAttackersSurroundingDefender > 1)
|
||||
modifiers["Flanking"] = 0.1f * (numberOfAttackersSurroundingDefender-1) //https://www.carlsguides.com/strategy/civilization5/war/combatbonuses.php
|
||||
}
|
||||
|
||||
if(attacker is MapUnitCombatant && attacker.unit.isEmbarked())
|
||||
modifiers["Landing"] = -0.5f
|
||||
|
||||
return modifiers
|
||||
}
|
||||
@ -155,26 +144,11 @@ class BattleDamage{
|
||||
if (tileDefenceBonus > 0) modifiers["Terrain"] = tileDefenceBonus
|
||||
}
|
||||
|
||||
if(attacker.isRanged()){
|
||||
val defenceVsRanged = 0.25f * defender.unit.getUniques().count{it=="+25% Defence against ranged attacks"}
|
||||
if(defenceVsRanged>0) modifiers["defence vs ranged"] = defenceVsRanged
|
||||
if(attacker.isRanged()) {
|
||||
val defenceVsRanged = 0.25f * defender.unit.getUniques().count { it == "+25% Defence against ranged attacks" }
|
||||
if (defenceVsRanged > 0) modifiers["defence vs ranged"] = defenceVsRanged
|
||||
}
|
||||
|
||||
val defenderTile = defender.getTile()
|
||||
val isDefenderInRoughTerrain = defenderTile.isRoughTerrain()
|
||||
for (BDM in getBattleDamageModifiersOfUnit(defender.unit)) {
|
||||
val text = BDM.getText()
|
||||
if (BDM.vs == "units in open terrain" && !isDefenderInRoughTerrain) {
|
||||
if (modifiers.containsKey(text))
|
||||
modifiers[text] = modifiers[text]!! + BDM.modificationAmount
|
||||
else modifiers[text] = BDM.modificationAmount
|
||||
}
|
||||
if (BDM.vs == "units in rough terrain" && isDefenderInRoughTerrain) {
|
||||
if (modifiers.containsKey(text))
|
||||
modifiers[text] = modifiers[text]!! + BDM.modificationAmount
|
||||
else modifiers[text] = BDM.modificationAmount
|
||||
}
|
||||
}
|
||||
|
||||
if (defender.unit.isFortified())
|
||||
modifiers["Fortification"] = 0.2f * defender.unit.getFortificationTurns()
|
||||
@ -190,6 +164,25 @@ class BattleDamage{
|
||||
if(!isFriendlyTerritory && unit.unit.hasUnique("+20% bonus outside friendly territory"))
|
||||
modifiers["Foreign Land"] = 0.2f
|
||||
|
||||
if(unit.unit.hasUnique("+33% combat bonus in Forest/Jungle")
|
||||
&& (tile.terrainFeature== Constants.forest || tile.terrainFeature==Constants.jungle))
|
||||
modifiers[tile.terrainFeature!!]=0.33f
|
||||
|
||||
val isRoughTerrain = tile.isRoughTerrain()
|
||||
for (BDM in getBattleDamageModifiersOfUnit(unit.unit)) {
|
||||
val text = BDM.getText()
|
||||
if (BDM.vs == "units in open terrain" && !isRoughTerrain) {
|
||||
if (modifiers.containsKey(text))
|
||||
modifiers[text] = modifiers[text]!! + BDM.modificationAmount
|
||||
else modifiers[text] = BDM.modificationAmount
|
||||
}
|
||||
if (BDM.vs == "units in rough terrain" && isRoughTerrain) {
|
||||
if (modifiers.containsKey(text))
|
||||
modifiers[text] = modifiers[text]!! + BDM.modificationAmount
|
||||
else modifiers[text] = BDM.modificationAmount
|
||||
}
|
||||
}
|
||||
|
||||
return modifiers
|
||||
}
|
||||
|
||||
|
@ -109,8 +109,8 @@ class CivilizationInfo {
|
||||
|
||||
fun getTranslatedNation(): Nation {
|
||||
val language = UnCivGame.Current.settings.language.replace(" ","_")
|
||||
if(!Gdx.files.internal("jsons/Nations_$language.json").exists()) return nation
|
||||
val translatedNation = GameBasics.getFromJson(Array<Nation>::class.java, "Nations_$language")
|
||||
if(!Gdx.files.internal("jsons/Nations/Nations_$language.json").exists()) return nation
|
||||
val translatedNation = GameBasics.getFromJson(Array<Nation>::class.java, "Nations/Nations_$language")
|
||||
.firstOrNull { it.name==civName}
|
||||
if(translatedNation==null) // this language's trnslation doesn't contain this nation yet,
|
||||
return nation // default to english
|
||||
|
@ -27,6 +27,8 @@ class GoldenAgeManager{
|
||||
fun enterGoldenAge() {
|
||||
var turnsToGoldenAge = 10.0
|
||||
if (civInfo.containsBuildingUnique("Golden Age length increases +50%")) turnsToGoldenAge *= 1.5
|
||||
if(civInfo.nation.unique=="Golden Ages last 50% longer. During a Golden Age, units receive +1 Movement and +10% Strength")
|
||||
turnsToGoldenAge*=1.5
|
||||
if (civInfo.policies.isAdopted("Freedom Complete")) turnsToGoldenAge *= 1.5
|
||||
turnsToGoldenAge *= civInfo.gameInfo.gameParameters.gameSpeed.getModifier()
|
||||
turnsLeftForCurrentGoldenAge += turnsToGoldenAge.toInt()
|
||||
|
@ -82,18 +82,21 @@ class MapUnit {
|
||||
fun getMovementString(): String = DecimalFormat("0.#").format(currentMovement.toDouble()) + "/" + getMaxMovement()
|
||||
fun getTile(): TileInfo = currentTile
|
||||
fun getMaxMovement(): Int {
|
||||
if(isEmbarked()) return getEmbarkedMovement()
|
||||
if (isEmbarked()) return getEmbarkedMovement()
|
||||
|
||||
var movement = baseUnit.movement
|
||||
movement += getUniques().count{it=="+1 Movement"}
|
||||
movement += getUniques().count { it == "+1 Movement" }
|
||||
|
||||
if(type.isWaterUnit() && !type.isCivilian()
|
||||
if (type.isWaterUnit() && !type.isCivilian()
|
||||
&& civInfo.containsBuildingUnique("All military naval units receive +1 movement and +1 sight"))
|
||||
movement += 1
|
||||
|
||||
if(type.isWaterUnit() && civInfo.nation.unique=="+2 movement for all naval units")
|
||||
movement+=2
|
||||
|
||||
if (type.isWaterUnit() && civInfo.nation.unique == "+2 movement for all naval units")
|
||||
movement += 2
|
||||
|
||||
if(civInfo.nation.unique=="Golden Ages last 50% longer. During a Golden Age, units receive +1 Movement and +10% Strength")
|
||||
movement+=1
|
||||
|
||||
return movement
|
||||
}
|
||||
|
||||
@ -336,11 +339,14 @@ class MapUnit {
|
||||
tile.improvementInProgress = null
|
||||
}
|
||||
|
||||
private fun heal(){
|
||||
if(isEmbarked()) return // embarked units can't heal
|
||||
private fun heal() {
|
||||
if (isEmbarked()) return // embarked units can't heal
|
||||
var amountToHealBy = rankTileForHealing(getTile())
|
||||
if (amountToHealBy == 0) return
|
||||
|
||||
if (hasUnique("+10 HP when healing")) amountToHealBy += 10
|
||||
val adjacentUnits = currentTile.getTilesInDistance(1).flatMap { it.getUnits() }
|
||||
if(adjacentUnits.isNotEmpty())
|
||||
if (adjacentUnits.isNotEmpty())
|
||||
amountToHealBy += adjacentUnits.map { it.adjacentHealingBonus() }.max()!!
|
||||
healBy(amountToHealBy)
|
||||
}
|
||||
|
@ -143,9 +143,12 @@ open class TileInfo {
|
||||
if (terrainFeature == Constants.jungle && city != null
|
||||
&& city.containsBuildingUnique("Jungles provide +2 science"))
|
||||
stats.science += 2f
|
||||
if(terrainFeature=="Oasis" && city!=null
|
||||
if (terrainFeature == "Oasis" && city != null
|
||||
&& city.containsBuildingUnique("+2 Gold for each source of Oil and oasis"))
|
||||
stats.gold += 2
|
||||
if (terrainFeature == Constants.forest && city != null
|
||||
&& city.containsBuildingUnique("Forests provide +1 production"))
|
||||
stats.production += 1
|
||||
}
|
||||
|
||||
if (hasViewableResource(observingCiv)) {
|
||||
|
@ -5,40 +5,46 @@ import com.unciv.Constants
|
||||
import com.unciv.logic.civilization.CivilizationInfo
|
||||
|
||||
class UnitMovementAlgorithms(val unit:MapUnit) {
|
||||
|
||||
// This function is called ALL THE TIME and should be as time-optimal as possible!
|
||||
private fun getMovementCostBetweenAdjacentTiles(from: TileInfo, to: TileInfo, civInfo: CivilizationInfo): Float {
|
||||
var cost = getMovementCostBetweenAdjacentTiles(from,to)
|
||||
|
||||
val toOwner = to.getOwner()
|
||||
if(toOwner!=null && to.isLand && civInfo.isAtWarWith(toOwner) && toOwner.hasActiveGreatWall)
|
||||
cost += 1
|
||||
return cost
|
||||
}
|
||||
|
||||
private fun getMovementCostBetweenAdjacentTiles(from: TileInfo, to: TileInfo): Float {
|
||||
|
||||
if(unit.type.isLandUnit() && (from.isLand != to.isLand))
|
||||
if ((from.isLand != to.isLand) && unit.type.isLandUnit())
|
||||
return 100f // this is embarkment or disembarkment, and will take the entire turn
|
||||
|
||||
if (from.roadStatus === RoadStatus.Railroad && to.roadStatus === RoadStatus.Railroad)
|
||||
return 1 / 10f
|
||||
var extraCost = 0f
|
||||
|
||||
if (from.roadStatus !== RoadStatus.None && to.roadStatus !== RoadStatus.None) //Road
|
||||
val toOwner = to.getOwner()
|
||||
if (toOwner != null && to.isLand && toOwner.hasActiveGreatWall && civInfo.isAtWarWith(toOwner))
|
||||
extraCost += 1
|
||||
|
||||
if (from.roadStatus === RoadStatus.Railroad && to.roadStatus === RoadStatus.Railroad)
|
||||
return 1 / 10f + extraCost
|
||||
|
||||
if (hasRoad(from,civInfo) && hasRoad(to,civInfo))
|
||||
{
|
||||
if (unit.civInfo.tech.movementSpeedOnRoadsImproved) return 1 / 3f
|
||||
else return 1 / 2f
|
||||
if (unit.civInfo.tech.movementSpeedOnRoadsImproved) return 1 / 3f + extraCost
|
||||
else return 1 / 2f + extraCost
|
||||
}
|
||||
if (unit.ignoresTerrainCost) return 1f
|
||||
if(unit.doubleMovementInForestAndJungle && (to.baseTerrain==Constants.forest || to.baseTerrain==Constants.jungle))
|
||||
return 1f
|
||||
if (unit.ignoresTerrainCost) return 1f + extraCost
|
||||
if (unit.doubleMovementInForestAndJungle && (to.baseTerrain == Constants.forest || to.baseTerrain == Constants.jungle))
|
||||
return 1f + extraCost
|
||||
|
||||
if (unit.roughTerrainPenalty
|
||||
&& (to.baseTerrain == Constants.hill || to.terrainFeature == Constants.forest || to.terrainFeature == Constants.jungle))
|
||||
return 4f
|
||||
return 4f + extraCost
|
||||
|
||||
if(unit.doubleMovementInCoast && to.baseTerrain==Constants.coast)
|
||||
return 1/2f
|
||||
if (unit.doubleMovementInCoast && to.baseTerrain == Constants.coast)
|
||||
return 1 / 2f + extraCost
|
||||
|
||||
return to.getLastTerrain().movementCost.toFloat() // no road
|
||||
return to.getLastTerrain().movementCost.toFloat() + extraCost // no road
|
||||
}
|
||||
|
||||
fun hasRoad(tileInfo:TileInfo, civInfo: CivilizationInfo): Boolean {
|
||||
if(tileInfo.roadStatus!==RoadStatus.None) return true
|
||||
if(civInfo.nation.forestsAndJunglesAreRoads && tileInfo.terrainFeature!=null
|
||||
&& (tileInfo.terrainFeature==Constants.jungle || tileInfo.terrainFeature==Constants.forest)) return true
|
||||
return false
|
||||
}
|
||||
|
||||
class ParentTileAndTotalDistance(val parentTile:TileInfo, val totalDistance: Float)
|
||||
|
@ -27,7 +27,7 @@ object GameBasics {
|
||||
|
||||
fun <T> getFromJson(tClass: Class<T>, name: String): T {
|
||||
val jsonText = Gdx.files.internal("jsons/$name.json").readString()
|
||||
return Json().apply { ignoreUnknownFields=true }.fromJson(tClass, jsonText)
|
||||
return Json().apply { ignoreUnknownFields = true }.fromJson(tClass, jsonText)
|
||||
}
|
||||
|
||||
fun <T : INamed> createHashmap(items: Array<T>): LinkedHashMap<String, T> {
|
||||
@ -38,43 +38,49 @@ object GameBasics {
|
||||
}
|
||||
|
||||
init {
|
||||
Buildings += createHashmap(getFromJson(Array<Building>::class.java, "Buildings"))
|
||||
Terrains += createHashmap(getFromJson(Array<Terrain>::class.java, "Terrains"))
|
||||
TileResources += createHashmap(getFromJson(Array<TileResource>::class.java, "TileResources"))
|
||||
TileImprovements += createHashmap(getFromJson(Array<TileImprovement>::class.java, "TileImprovements"))
|
||||
Units += createHashmap(getFromJson(Array<BaseUnit>::class.java, "Units"))
|
||||
UnitPromotions += createHashmap(getFromJson(Array<Promotion>::class.java, "UnitPromotions"))
|
||||
PolicyBranches += createHashmap(getFromJson(Array<PolicyBranch>::class.java, "Policies"))
|
||||
Nations += createHashmap(getFromJson(Array<Nation>::class.java, "Nations"))
|
||||
Difficulties += createHashmap(getFromJson(Array<Difficulty>::class.java, "Difficulties"))
|
||||
|
||||
val techColumns = getFromJson(Array<TechColumn>::class.java, "Techs")
|
||||
for (techColumn in techColumns) {
|
||||
for (tech in techColumn.techs) {
|
||||
tech.cost = techColumn.techCost
|
||||
tech.column = techColumn
|
||||
Technologies[tech.name] = tech
|
||||
}
|
||||
val techColumns = getFromJson(Array<TechColumn>::class.java, "Techs")
|
||||
for (techColumn in techColumns) {
|
||||
for (tech in techColumn.techs) {
|
||||
tech.cost = techColumn.techCost
|
||||
tech.column = techColumn
|
||||
Technologies[tech.name] = tech
|
||||
}
|
||||
for (building in Buildings.values) {
|
||||
if (building.requiredTech == null) continue
|
||||
val column = building.getRequiredTech().column
|
||||
if (building.cost == 0)
|
||||
building.cost = if (building.isWonder || building.isNationalWonder) column!!.wonderCost else column!!.buildingCost
|
||||
}
|
||||
|
||||
for (branch in PolicyBranches.values) {
|
||||
branch.requires = ArrayList()
|
||||
branch.branch = branch.name
|
||||
for (policy in branch.policies) {
|
||||
policy.branch = branch.name
|
||||
if (policy.requires == null) policy.requires = arrayListOf(branch.name)
|
||||
}
|
||||
branch.policies.last().name = branch.name + " Complete"
|
||||
}
|
||||
|
||||
for(file in Gdx.files.internal("jsons/Translations").list())
|
||||
Translations.add(file.readString())
|
||||
}
|
||||
|
||||
Buildings += createHashmap(getFromJson(Array<Building>::class.java, "Buildings"))
|
||||
for (building in Buildings.values) {
|
||||
if (building.requiredTech == null) continue
|
||||
val column = building.getRequiredTech().column
|
||||
if (building.cost == 0)
|
||||
building.cost = if (building.isWonder || building.isNationalWonder) column!!.wonderCost else column!!.buildingCost
|
||||
}
|
||||
|
||||
Terrains += createHashmap(getFromJson(Array<Terrain>::class.java, "Terrains"))
|
||||
TileResources += createHashmap(getFromJson(Array<TileResource>::class.java, "TileResources"))
|
||||
TileImprovements += createHashmap(getFromJson(Array<TileImprovement>::class.java, "TileImprovements"))
|
||||
Units += createHashmap(getFromJson(Array<BaseUnit>::class.java, "Units"))
|
||||
UnitPromotions += createHashmap(getFromJson(Array<Promotion>::class.java, "UnitPromotions"))
|
||||
|
||||
PolicyBranches += createHashmap(getFromJson(Array<PolicyBranch>::class.java, "Policies"))
|
||||
for (branch in PolicyBranches.values) {
|
||||
branch.requires = ArrayList()
|
||||
branch.branch = branch.name
|
||||
for (policy in branch.policies) {
|
||||
policy.branch = branch.name
|
||||
if (policy.requires == null) policy.requires = arrayListOf(branch.name)
|
||||
}
|
||||
branch.policies.last().name = branch.name + " Complete"
|
||||
}
|
||||
|
||||
Nations += createHashmap(getFromJson(Array<Nation>::class.java, "Nations/Nations"))
|
||||
for(nation in Nations.values) nation.setTransients()
|
||||
|
||||
Difficulties += createHashmap(getFromJson(Array<Difficulty>::class.java, "Difficulties"))
|
||||
|
||||
|
||||
|
||||
for (file in Gdx.files.internal("jsons/Translations").list())
|
||||
Translations.add(file.readString())
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -50,18 +50,29 @@ class Nation : INamed {
|
||||
var innerColor: List<Int>?=null
|
||||
var startBias = ArrayList<String>()
|
||||
|
||||
@Transient private lateinit var outerColorObject:Color
|
||||
fun getOuterColor(): Color = outerColorObject
|
||||
|
||||
fun getColor(): Color {
|
||||
return colorFromRGB(outerColor[0], outerColor[1], outerColor[2])
|
||||
}
|
||||
fun getSecondaryColor(): Color {
|
||||
if(innerColor==null) return Color.BLACK
|
||||
return colorFromRGB(innerColor!![0], innerColor!![1], innerColor!![2])
|
||||
}
|
||||
@Transient private lateinit var innerColorObject:Color
|
||||
|
||||
fun getInnerColor(): Color = innerColorObject
|
||||
|
||||
fun isCityState()= cityStateType != null
|
||||
fun isMajorCiv() = !isBarbarian() && !isCityState()
|
||||
fun isBarbarian() = name=="Barbarians"
|
||||
|
||||
// This is its own transient because we'll need to check this for every tile-to-tile movement which is harsh
|
||||
@Transient var forestsAndJunglesAreRoads = false
|
||||
|
||||
fun setTransients(){
|
||||
outerColorObject = colorFromRGB(outerColor[0], outerColor[1], outerColor[2])
|
||||
|
||||
if(innerColor==null) innerColorObject = Color.BLACK
|
||||
else innerColorObject = colorFromRGB(innerColor!![0], innerColor!![1], innerColor!![2])
|
||||
|
||||
if(unique == "All units move through Forest and Jungle tiles in friendly territory as if it is Road. These tiles can be used to establish City Connections upon researching the Wheel.")
|
||||
forestsAndJunglesAreRoads = true
|
||||
}
|
||||
|
||||
lateinit var cities: List<String>
|
||||
}
|
||||
|
@ -122,12 +122,12 @@ class EmpireOverviewScreen : CameraStageBaseScreen(){
|
||||
private fun createOffersTable(civ: CivilizationInfo, offersList: TradeOffersList, numberOfOtherSidesOffers: Int): Table {
|
||||
val table = Table()
|
||||
table.defaults().pad(10f)
|
||||
table.background = ImageGetter.getBackground(civ.nation.getColor())
|
||||
table.add(civ.civName.toLabel().setFontColor(civ.nation.getSecondaryColor())).row()
|
||||
table.background = ImageGetter.getBackground(civ.nation.getOuterColor())
|
||||
table.add(civ.civName.toLabel().setFontColor(civ.nation.getInnerColor())).row()
|
||||
table.addSeparator()
|
||||
for(offer in offersList){
|
||||
val offerText = offer.getOfferText()
|
||||
table.add(offerText.toLabel().setFontColor(civ.nation.getSecondaryColor())).row()
|
||||
table.add(offerText.toLabel().setFontColor(civ.nation.getInnerColor())).row()
|
||||
}
|
||||
for(i in 1..numberOfOtherSidesOffers - offersList.size)
|
||||
table.add("".toLabel()).row() // we want both sides of the general table to have the same number of rows
|
||||
@ -416,8 +416,8 @@ class EmpireOverviewScreen : CameraStageBaseScreen(){
|
||||
label.setFontColor(Color.BLACK)
|
||||
} else if (currentPlayer==civ || UnCivGame.Current.viewEntireMapForDebug || currentPlayer.knows(civ)) {
|
||||
civGroup.add(ImageGetter.getNationIndicator(civ.nation, 30f))
|
||||
civGroup.background = civGroupBackground.tint(civ.nation.getColor())
|
||||
label.setFontColor(civ.nation.getSecondaryColor())
|
||||
civGroup.background = civGroupBackground.tint(civ.nation.getOuterColor())
|
||||
label.setFontColor(civ.nation.getInnerColor())
|
||||
} else {
|
||||
civGroup.background = civGroupBackground.tint(Color.DARK_GRAY)
|
||||
label.setText("???")
|
||||
|
@ -11,24 +11,22 @@ import com.unciv.ui.utils.*
|
||||
|
||||
class NationTable(val nation: Nation, width:Float, onClick:()->Unit)
|
||||
: Table(CameraStageBaseScreen.skin){
|
||||
val innerTable = Table()
|
||||
private val innerTable = Table()
|
||||
init {
|
||||
background = ImageGetter.getBackground(nation.getSecondaryColor())
|
||||
background = ImageGetter.getBackground(nation.getInnerColor())
|
||||
innerTable.pad(10f)
|
||||
innerTable.background = ImageGetter.getBackground(nation.getColor())
|
||||
innerTable.background = ImageGetter.getBackground(nation.getOuterColor())
|
||||
|
||||
val titleTable = Table()
|
||||
titleTable.add(ImageGetter.getNationIndicator(nation, 50f)).pad(10f)
|
||||
titleTable.add(nation.getLeaderDisplayName().toLabel()
|
||||
.apply { setFontColor(nation.getSecondaryColor()); setFontSize(24) })
|
||||
.apply { setFontColor(nation.getInnerColor()); setFontSize(24) })
|
||||
innerTable.add(titleTable).row()
|
||||
|
||||
innerTable.add(getUniqueLabel(nation)
|
||||
.apply { setWrap(true);setFontColor(nation.getSecondaryColor()) })
|
||||
.apply { setWrap(true);setFontColor(nation.getInnerColor()) })
|
||||
.width(width)
|
||||
onClick {
|
||||
onClick()
|
||||
}
|
||||
onClick { onClick() }
|
||||
touchable = Touchable.enabled
|
||||
add(innerTable)
|
||||
}
|
||||
|
@ -45,10 +45,10 @@ class CityButton(val city: CityInfo, internal val tileGroup: WorldTileGroup, ski
|
||||
|
||||
private fun addAirUnitTable() {
|
||||
if (!tileGroup.tileInfo.airUnits.isNotEmpty()) return
|
||||
val secondarycolor = city.civInfo.nation.getSecondaryColor()
|
||||
val secondarycolor = city.civInfo.nation.getInnerColor()
|
||||
val airUnitTable = Table().apply { defaults().pad(5f) }
|
||||
airUnitTable.background = ImageGetter.getDrawable("OtherIcons/civTableBackground")
|
||||
.tint(city.civInfo.nation.getColor())
|
||||
.tint(city.civInfo.nation.getOuterColor())
|
||||
val aircraftImage = ImageGetter.getImage("OtherIcons/Aircraft")
|
||||
aircraftImage.color = secondarycolor
|
||||
airUnitTable.add(aircraftImage).size(15f)
|
||||
@ -89,11 +89,11 @@ class CityButton(val city: CityInfo, internal val tileGroup: WorldTileGroup, ski
|
||||
}
|
||||
|
||||
private fun getIconTable(): Table {
|
||||
val secondaryColor = city.civInfo.nation.getSecondaryColor()
|
||||
val secondaryColor = city.civInfo.nation.getInnerColor()
|
||||
val iconTable = Table()
|
||||
iconTable.touchable=Touchable.enabled
|
||||
iconTable.background = ImageGetter.getDrawable("OtherIcons/civTableBackground")
|
||||
.tint(city.civInfo.nation.getColor())
|
||||
.tint(city.civInfo.nation.getOuterColor())
|
||||
|
||||
if (city.resistanceCounter > 0) {
|
||||
val resistanceImage = ImageGetter.getImage("StatIcons/Resistance")
|
||||
@ -170,7 +170,7 @@ class CityButton(val city: CityInfo, internal val tileGroup: WorldTileGroup, ski
|
||||
group.addActor(circle)
|
||||
group.addActor(image)
|
||||
|
||||
val secondaryColor = cityConstructions.cityInfo.civInfo.nation.getSecondaryColor()
|
||||
val secondaryColor = cityConstructions.cityInfo.civInfo.nation.getInnerColor()
|
||||
val cityCurrentConstruction = cityConstructions.getCurrentConstruction()
|
||||
if(cityCurrentConstruction !is SpecialConstruction) {
|
||||
val turnsToConstruction = cityConstructions.turnsToConstruction(cityCurrentConstruction.name)
|
||||
|
@ -278,7 +278,7 @@ open class TileGroup(var tileInfo: TileInfo, var tileSetStrings:TileSetStrings)
|
||||
previousTileOwner = tileOwner
|
||||
if (tileOwner == null) return
|
||||
|
||||
val civColor = tileInfo.getOwner()!!.nation.getColor()
|
||||
val civColor = tileInfo.getOwner()!!.nation.getOuterColor()
|
||||
for (neighbor in tileInfo.neighbors) {
|
||||
val neighborOwner = neighbor.getOwner()
|
||||
if (neighborOwner == tileOwner && borderImages.containsKey(neighbor)) // the neighbor used to not belong to us, but now it's ours
|
||||
|
@ -67,15 +67,15 @@ object ImageGetter {
|
||||
}
|
||||
|
||||
fun getNationIndicator(nation: Nation, size:Float): IconCircleGroup {
|
||||
val civIndicator = getCircle().apply { color = nation.getSecondaryColor() }
|
||||
.surroundWithCircle(size).apply { circle.color = nation.getColor() }
|
||||
val civIndicator = getCircle().apply { color = nation.getInnerColor() }
|
||||
.surroundWithCircle(size).apply { circle.color = nation.getOuterColor() }
|
||||
|
||||
val civIconName = if(nation.isCityState()) "CityState" else nation.name
|
||||
if(nationIconExists(civIconName)){
|
||||
val cityStateIcon = ImageGetter.getNationIcon(civIconName)
|
||||
cityStateIcon.setSize(size*0.7f,size*0.7f)
|
||||
cityStateIcon.center(civIndicator)
|
||||
cityStateIcon.color = nation.getColor()
|
||||
cityStateIcon.color = nation.getOuterColor()
|
||||
civIndicator.addActor(cityStateIcon)
|
||||
}
|
||||
|
||||
|
@ -11,12 +11,12 @@ class UnitGroup(val unit: MapUnit, val size: Float): Group() {
|
||||
var blackSpinningCircle:Image?=null
|
||||
|
||||
init {
|
||||
val unitBaseImage = ImageGetter.getUnitIcon(unit.name, unit.civInfo.nation.getSecondaryColor())
|
||||
val unitBaseImage = ImageGetter.getUnitIcon(unit.name, unit.civInfo.nation.getInnerColor())
|
||||
.apply { setSize(size * 0.75f, size * 0.75f) }
|
||||
|
||||
val background = getBackgroundImageForUnit(unit)
|
||||
background.apply {
|
||||
this.color = unit.civInfo.nation.getColor()
|
||||
this.color = unit.civInfo.nation.getOuterColor()
|
||||
setSize(size, size)
|
||||
}
|
||||
setSize(size, size)
|
||||
|
@ -78,9 +78,9 @@ class Minimap(val tileMapHolder: TileMapHolder) : ScrollPane(null){
|
||||
if (!(UnCivGame.Current.viewEntireMapForDebug || cloneCivilization.exploredTiles.contains(tileInfo.position)))
|
||||
hex.color = Color.DARK_GRAY
|
||||
else if (tileInfo.isCityCenter() && !tileInfo.isWater)
|
||||
hex.color = tileInfo.getOwner()!!.nation.getSecondaryColor()
|
||||
hex.color = tileInfo.getOwner()!!.nation.getInnerColor()
|
||||
else if (tileInfo.getCity() != null && !tileInfo.isWater)
|
||||
hex.color = tileInfo.getOwner()!!.nation.getColor()
|
||||
hex.color = tileInfo.getOwner()!!.nation.getOuterColor()
|
||||
else hex.color = tileInfo.getBaseTerrain().getColor().lerp(Color.GRAY, 0.5f)
|
||||
}
|
||||
}
|
||||
|
@ -10,10 +10,10 @@ class PlayerReadyScreen(currentPlayerCiv: CivilizationInfo) : CameraStageBaseScr
|
||||
init {
|
||||
val table= Table()
|
||||
table.touchable= Touchable.enabled
|
||||
table.background= ImageGetter.getBackground(currentPlayerCiv.nation.getColor())
|
||||
table.background= ImageGetter.getBackground(currentPlayerCiv.nation.getOuterColor())
|
||||
|
||||
table.add("[$currentPlayerCiv] ready?".toLabel().setFontSize(24)
|
||||
.setFontColor(currentPlayerCiv.nation.getSecondaryColor()))
|
||||
.setFontColor(currentPlayerCiv.nation.getInnerColor()))
|
||||
|
||||
table.onClick {
|
||||
UnCivGame.Current.worldScreen = WorldScreen(currentPlayerCiv)
|
||||
|
@ -36,6 +36,7 @@ Unless otherwise specified, all the following are from [the Noun Project](https:
|
||||
* [Catapult](https://thenounproject.com/search/?q=Spear&i=1233840) By Jakub Ukrop
|
||||
* [Unloaded Crossbow](https://thenounproject.com/term/unloaded-crossbow/815992/) By Hamish as Ballista
|
||||
* [Sword](https://thenounproject.com/search/?q=Sword&i=1215443) By Guilherme Furtado for Swordsman
|
||||
* [Mohawk](https://thenounproject.com/search/?q=mohawk&i=1426649) By Dairy Free Design for Mohawk Warrior
|
||||
* [Roman Helmet](https://thenounproject.com/search/?q=legion&i=440134) By parkjisun for Legion
|
||||
* [Horse](https://thenounproject.com/search/?q=Horse&i=1373793) By AFY Studio for Horseman
|
||||
* [Horse Head](https://thenounproject.com/search/?q=Cavalry&i=374037) By Juan Pablo Bravo for Companion Cavalry
|
||||
@ -45,7 +46,7 @@ Unless otherwise specified, all the following are from [the Noun Project](https:
|
||||
* [Ship](https://thenounproject.com/term/ship/1998589/) By Vanisha for Galleass
|
||||
* [Crossbow](https://thenounproject.com/term/crossbow/965389/) By Creaticca Creative Agency for Crossbowman
|
||||
* [Longbow](https://thenounproject.com/search/?q=longbow&i=815991) By Hamish for Longbowman
|
||||
* [Trebuchet](https://thenounproject.com/search/?q=Trebuchet&i=827987) By Ben Davis
|
||||
* [Trebuchet](https://thenounproject.com/search/?q=trebuchet&i=828475) By Ben Davis
|
||||
* [Sword](https://thenounproject.com/search/?q=Sword&i=1432662) By uzeir syarief for Longswordsman
|
||||
* [Samurai](https://thenounproject.com/search/?q=samurai&i=1683729) By Chanut is Industries
|
||||
* [Spear](https://thenounproject.com/search/?q=Spear&i=1233840) By Alvaro Cabrera for Pikeman
|
||||
@ -167,7 +168,7 @@ Unless otherwise specified, all the following are from [the Noun Project](https:
|
||||
* [Anubis](https://thenounproject.com/term/anubis/1080090/) By Carpe Diem for Burial Tomb
|
||||
* [Parthenon](https://thenounproject.com/term/parthenon/493272/) By Christopher T. Howlett for The Oracle
|
||||
* [Stadium](https://thenounproject.com/term/stadium/1500595/) By sandra for Colosseum
|
||||
* [Terracotta Army](https://thenounproject.com/search/?q=terracotta&i=2306346) By Supalerk Laipawat
|
||||
* [Terracotta Army](https://thenounproject.com/search/?q=terracotta&i=2412905) By Phạm Thanh Lộc
|
||||
* [Stadium](https://thenounproject.com/term/stadium/1152530/) By Creaticca Creative Agency for Circus Maximus
|
||||
* [Market](https://thenounproject.com/term/market/1723050/) By sofi
|
||||
* [Bazaar](https://thenounproject.com/term/bazaar/902288/) By Tokka Elkholy
|
||||
@ -183,12 +184,13 @@ Unless otherwise specified, all the following are from [the Noun Project](https:
|
||||
* [Christian Church](https://thenounproject.com/term/christian-church/1174183/) By Andrejs Kirma for Monastery
|
||||
* [Castle](https://thenounproject.com/search/?q=castle&i=390189) By Mint Shirt
|
||||
* [Red Fort](https://thenounproject.com/arunabh.jain.0fficial/collection/famous-indian-monuments/?i=2092466), [Gateway of India](https://thenounproject.com/arunabh.jain.0fficial/collection/famous-indian-monuments/?i=2092468) By Arunabh Jain, IN for Mughal Fort
|
||||
* [Cambodia](https://thenounproject.com/term/cambodia/1809152/) By Wichai Wi for Angkor Wat
|
||||
* [Alhambra](https://thenounproject.com/search/?q=alhambra&i=403759) By parkjisun
|
||||
* [Angkor Wat](https://thenounproject.com/search/?q=angkor%20wat&i=2412873) By Phạm Thanh Lộc for Angkor Wat
|
||||
* [Alhambra](https://thenounproject.com/search/?q=alhambra&i=2322217) By Phạm Thanh Lộc
|
||||
* [Books](https://thenounproject.com/term/books/1140218/) By Abir Alward for Oxford University
|
||||
* [Forge](https://thenounproject.com/term/forge/1044767/) By Monjin Friends
|
||||
* [Anchor](https://thenounproject.com/term/anchor/1258518/) By Saeful Muslim for Harbor
|
||||
* [Hand saw](https://thenounproject.com/term/hand-saw/990902/) By b farias for Workshop
|
||||
* [House](https://thenounproject.com/search/?q=house&i=1651759) By sofy for Longhouse
|
||||
* [Hagia Sophia](https://thenounproject.com/term/hagia-sophia/1907752/) By Felipe Alvarado
|
||||
* [Factory](https://thenounproject.com/term/factory/1624235/) By Maxim Kulikov for Ironworks
|
||||
* [Notre Dame](https://thenounproject.com/term/notre-dame/1361725/) By Marco Livolsi
|
||||
|