This commit is contained in:
YueR 2019-09-29 22:57:57 +08:00
commit d75bb46b99
8 changed files with 78 additions and 29 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View file

@ -48,7 +48,7 @@
declaringWar:"Sei sulla mia strada, e pertanto devo distruggerti."
attacked:"Ad essere onesto, mi sono stancato di starmene impalato e di riposare sugli allori. Vieni, le mie armate ti accoglieranno a braccia aperte!"
defeated:"Così come in fretta era iniziata, così ora la mia lunga marcia giunge alla fine."
introduction:"Benvenuto, straniero! Sono Alexandros, figlio di re e nipote degli dei! Cerco amici gagliardi o nemici degni della mia lama. A quale dei due gruppi appartieni?"
introduction:"Benvenuto, straniero! Sono Alexandros, erede di Eracle, figlio di re e nipote degli dei! Cerco amici gagliardi o nemici degni della mia lama. A quale dei due gruppi appartieni?"
neutralHello:"Saluti..."
neutralLetsHearIt:["Ti ascolto.","Avanti.","Sì?","Parla."]
@ -65,10 +65,8 @@
outerColor:[181, 232, 232],
innerColor:[68,142,249],
/*
uniqueName:"Lega Ellenica",
unique:"L'Influenza delle Città-Stato cala il doppio più lentamente e cresce il doppio rispetto al normale.",
*/
cities:["Atene","Sparta","Corinto","Argo","Cnosso","Micene","Farsalo","Efeso","Alicarnasso","Rodi",
"Eretria","Pergamo","Mileto","Megara","Focea","Sicyon","Tirinto","Samo","Mitilene","Chio",
"Paros","Ellis","Siracusa","Eracleia","Gortyn","Chalkis","Pilo","Pella","Naxos"]
@ -85,7 +83,7 @@
declaringWar:"Non ti permetterò più di infastidirmi. Preparati a incontrare Yama."
attacked:"Folle! Ti costringerò a guardare il tuo popolo venire massacrato!"
defeated:"Ti sei dimostrato un avversario astuto e competente. Mi congratulo per la tua vittoria."
introduction:"Saluti! Sono l'imperatrice della Cina Wu Zetian. La Cina desidera solo una coesistenza pacifica e un commercio equo, ma risponderà con la forza a ogni aggressione. Spero che condividiate la nostra visione."
introduction:"Saluti! Sono l'imperatrice della Cina, Wu Zetian. La Cina desidera solo una coesistenza pacifica e un commercio equo, ma risponderà con la forza a ogni aggressione. Spero che condividiate la nostra visione."
neutralHello:"Bella giornata, oggi, vero?"
neutralLetsHearIt:["Continua.","Ebbene?","Dunque?"]
@ -265,7 +263,7 @@
declaringWar:"Il mio tesoro va scarseggiando e i miei soldati si stanno spazientendo... <sigh> ...pertanto, credo proprio che dovrò muoverti guerra. Alea jacta eat - il dado è tratto!"
attacked:"La tua arroganza sarà la tua rovina! Nessun potere, per quanto prode o forte, può sconfiggere Roma!"
defeated:"Gli dei hanno privato Roma del loro favore. Siamo stati sconfitti."
introduction:"Ave. Sono Augusto, Princeps, Imperator e Pontifex Maximus di Roma. Se sei amico di Roma, sei il benvenuto."
introduction:"Ave. Sono Augusto, Princeps, Imperator e Pontifex Maximus di Roma. Se sei amico di Roma, sei il benvenuto, ma sappi che Roma è mortale contro i suoi nemici."
neutralHello:"Saluti."
neutralLetsHearIt:["Comincia pure.","Continua."]
@ -300,7 +298,7 @@
declaringWar:"Invero, è un peccato che dobbiamo passare alle maniere forti... non è tradizione per un re uccidere un altro re, né per un regno uccidere un altro regno."
attacked:"Ti avverto almeno di non farti un'abitudine di spargere sangue. Il sangue non dorme mai."
defeated:"Hai vinto. Complimenti. Ora il palazzo è nelle tue mani. Ti prego di prenderti cura del mio pavone."
introduction:"Salve, straniero. Sono Harun Al-Rashid, Califfo degli Arabi. Vieni, raccontami del tuo impero."
introduction:"Salve, straniero. Sono Harun Al-Rashid, Califfo degli Arabi. Vieni ad ammirare la sontuosità del mio palazzo, e parlami del tuo impero."
neutralHello:"Pace a te."
neutralLetsHearIt:["Cos'é questo?","Cosa stavi dicendo?"]
@ -371,7 +369,7 @@
declaringWar:"Come samurai siamo gente onesta, e noi troviamo onesto volerti esprimere la nostra intenzione di cancellarti dalla faccia della terra con questo messaggio."
attacked:"Fatti pure avanti! Il kamikaze (vento divino) ci proteggerà, e tu cadrai, come altri prima di te!"
defeated:"Poni fine al disonore che è caduto sulla mia famiglia... sul mio popolo."
introduction:"Io sono Oda Nobunaga, capo del grande clan Oda. Mi auguro una relazione giusta e leale nei vostri confronti."
introduction:"In verità, il cielo ci ha rivolto il suo sorriso conducendoci alla vostra augusta presenza. Io sono Oda Nobunaga, capo del grande clan Oda. Mi auguro una relazione giusta ed equa tra i nostri popoli."
neutralHello:"Salve."
neutralLetsHearIt:["Vai avanti.","Procedi.","Ti ascolto."]
@ -517,7 +515,7 @@
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!"
defeated:"Ora resta da vedere chi proteggerà il mio popolo... Il buio è giunto."
introduction:"Benvenuto nel palazzo dei Choson, straniero. Io sono il re Sejong l'Istruito, sovrano di queste terre e di questo popolo."
introduction:"Benvenuto nel palazzo dei Choson, onorato straniero. Io sono il re Sejong l'Istruito, condottiero illuminato e sovrano di queste terre e di questo popolo."
neutralHello:"Salve."
neutralLetsHearIt:["Sentiamo.","Vai avanti","Continue."]
@ -589,7 +587,7 @@
declaringWar:"La tua continua esistenza rappresenta un imbarazzo per tutti i leader del mondo! Farò loro un favore distruggendoti!"
attacked:"Non hai forse udito le storie sulla potenza e sulla grandezza delle mie armate? Forse, se le vedrai, ci penserai due volte prima di affrontarmi!"
defeated:"Canaglia! Che Ahura Mazda ti maledica! Il mondo ricorderà a lungo l'errore che hai commesso!"
introduction:"Che la pace scenda su di te! Io sono Dario, il grande re dei re della Persia... ma sono certo che tu già lo sappia."
introduction:"Ti saluto con calore, e generosamente ti offro la mia mano in amicizia. Io sono Dario, il grande re dei re della Persia... ma sono certo che tu già lo sappia."
neutralHello:"Buona giornata!"
neutralLetsHearIt:["Va' avanti.","Parla."]

View file

@ -53,29 +53,30 @@
/////// Turn
"Next turn":{
Dutch:"Volgende beurt"
French:"Prochain tour"
Dutch:"Volgende beurt"
French:"Prochain tour"
German:"Nächste Runde"
Italian:"Fine turno"
Japanese:"次のターン"
Portuguese:"Proximo turno"
Japanese:"次のターン"
Portuguese:"Proximo turno"
Romanian:"Runda următoare"
Russian:"Следующий ход"
Simplified_Chinese:"下一回合"
Spanish:"Siguiente turno"
Thai:"เริ่มเกมใหม่"
}
"Turn":{ // For main screen at top left, e.g. Turn 234
Dutch:"Beurt"
Dutch:"Beurt"
French:"Tour"
German:"Runde"
Italian:"Turno"
Italian:"Turno"
Japanese:"順番"
Portuguese:"Turno"
Portuguese:"Turno"
Romanian:"Runda"
Russian:"Ход"
Simplified_Chinese:"回合"
Russian:"Ход"
Simplified_Chinese:"回合"
Spanish:"Turno"
}
@ -209,7 +210,7 @@
Dutch:"Verbetering bouwen"
Spanish:"Construir mejora"
Simplified_Chinese:"建造设施"
Portuguese:"Construir melhoria"
Portuguese:"Construir melhoria"
Japanese:"構造改善"
}
@ -841,6 +842,10 @@
Japanese:"何もない"
}
"Annex city":{ // For a puppetted city
Italian:"Annetti città"
}
"Specialist Buildings":{
Italian:"Edifici specialisti"
Russian:"Специализированные Здания"
@ -1804,6 +1809,10 @@
Russian:"Аннексировать"
}
"Puppet City":{
Italian:"Riduci a Stato Fantoccio"
}
"Raze":{
Italian:"Distruggi"
French:"Razer"
@ -2038,5 +2047,24 @@
Portuguese:"Língua"
Russian:"Язык"
}
// Map editor
"Terrains & Resources":{
Italian:"Terreni e risorse"
}
"Improvements":{
Italian:"Miglioramenti"
}
"Barbarian encampment":{
Italian:"Accampamento barbaro"
}
"[nation] starting location":{
Italian:"Punto iniziale di [nation]"
}
}

View file

@ -429,6 +429,11 @@ class NextTurnAutomation{
private fun reassignWorkedTiles(civInfo: CivilizationInfo) {
for (city in civInfo.cities) {
if (city.isPuppet && city.population.population > 9
&& city.resistanceCounter == 0) {
city.annexCity()
}
city.reassignWorkers()
city.cityConstructions.chooseNextConstruction()

View file

@ -230,7 +230,13 @@ class Battle(val gameInfo:GameInfo) {
if (attacker.getCivInfo().isPlayerCivilization())
attackerCiv.popupAlerts.add(PopupAlert(AlertType.CityConquered, city.name))
else city.puppetCity(attacker.getCivInfo())
else {
city.puppetCity(attacker.getCivInfo())
if (city.population.population < 4) {
city.annexCity()
city.isBeingRazed = true
}
}
}
fun getMapCombatantOfTile(tile:TileInfo): ICombatant? {

View file

@ -4,7 +4,9 @@ import com.unciv.Constants
import com.unciv.logic.map.MapUnit
import com.unciv.logic.map.TileInfo
import com.unciv.models.gamebasics.unit.UnitType
import java.util.Random
import java.util.*
import kotlin.collections.HashMap
import kotlin.collections.set
import kotlin.math.max
import kotlin.math.pow
@ -226,13 +228,21 @@ class BattleDamage{
if(attacker.isRanged()) return 0
if(defender.getUnitType().isCivilian()) return 0
val ratio = getAttackingStrength(attacker,defender) / getDefendingStrength(attacker,defender)
val i = if (ratio < 1) -1 else 1
return ((24 + 12 * Random().nextFloat()) * (((ratio.pow(i) + 3).pow(4) / 512 + 0.5).pow(i)) * getHealthDependantDamageRatio(defender)).toInt()
return (damageModifier(ratio, true) * getHealthDependantDamageRatio(defender)).toInt()
}
fun calculateDamageToDefender(attacker: ICombatant, defender: ICombatant): Int {
val ratio = getAttackingStrength(attacker,defender) / getDefendingStrength(attacker,defender)
val i = if (ratio < 1) -1 else 1
return ((24 + 12 * Random().nextFloat()) / (((ratio.pow(i) + 3).pow(4) / 512 + 0.5).pow(i)) * getHealthDependantDamageRatio(attacker)).toInt()
return (damageModifier(ratio,false) * getHealthDependantDamageRatio(attacker)).toInt()
}
fun damageModifier(attackerToDefenderRatio:Float, damageToAttacker:Boolean): Float {
// https://forums.civfanatics.com/threads/getting-the-combat-damage-math.646582/#post-15468029
val strongerToWeakerRatio = attackerToDefenderRatio.pow(if (attackerToDefenderRatio < 1) -1 else 1)
var ratioModifier = ((((strongerToWeakerRatio + 3)/4).pow(4) +1)/2)
if((damageToAttacker && attackerToDefenderRatio>1) || (!damageToAttacker && attackerToDefenderRatio<1)) // damage ratio from the weaker party is inverted
ratioModifier = ratioModifier.pow(-1)
val randomCenteredAround30 = (24 + 12 * Random().nextFloat())
return randomCenteredAround30 * ratioModifier
}
}

View file

@ -55,9 +55,11 @@ class Fonts {
fun getCharsForFont(withChinese:Boolean): String {
val defaultText = "ABCČĆDĐEFGHIJKLMNOPQRSŠTUVWXYZŽaäàâăbcčćçdđeéfghiîjklmnoöpqrsșštțuüvwxyzž" +
"АБВГҐДЂЕЁЄЖЗЅИІЇЙЈКЛЉМНЊОПРСТЋУЎФХЦЧЏШЩЪЫЬЭЮЯабвгґдђеёєжзѕиіїйјклљмнњопрстћуўфхцчџшщъыьэюя" +
"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωάßΆέΈέΉίϊΐΊόΌύΰϋΎΫΏ" +
"ÀÄĂÂĎÊĚÉÈÍÎŁĹĽÔÓÖƠŘŔŚŤƯŮÚÜŻŹäâąďêęěłĺľńňôöơřŕśťưůýżźáèìíóú1234567890" +
"АБВГҐДЂЕЁЄЖЗЅИІЇЙЈКЛЉМНЊОПРСТЋУЎФХЦЧЏШЩЪЫЬЭЮЯабвгґдђеёєжзѕиіїйјклљмнњопрстћуўфхцчџшщъыьэюя" + // Russian
"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωάßΆέΈέΉίϊΐΊόΌύΰϋΎΫΏ" + // Greek
"ÀÄĂÂĎÊĚÉÈÍÎŁĹĽÔÓÖƠŘŔŚŤƯŮÚÜŻŹäâąďêęěłĺľńňôöơřŕśťưůýżźáèìíóú" +
"กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛" + // Thai
"1234567890" +
"?'“!”(%)[#]{@}/&\\<-+÷×=>®©\$€£¥¢:;,.¡*|"
val charSet = HashSet<Char>()
charSet.addAll(defaultText.asIterable())

View file

@ -26,7 +26,7 @@ Unless otherwise specified, all the following are from [the Noun Project](https:
* [Fishing Vessel](https://thenounproject.com/term/fishing-vessel/23815/) By Luis Prado for Work Boats
* [Greek Trireme](https://thenounproject.com/search/?q=ancient%20boat&i=1626303) By Zachary McCune for Trireme
* [Chariot](https://thenounproject.com/search/?q=Chariot&i=1189930) By Andrew Doane for Chariot Archer
* [Elephant](https://thenounproject.com/Luis/uploads/?i=14048) By Luis Prado, US for War Elephant
* [Elephant](https://thenounproject.com/Luis/uploads/?i=14048) By Luis Prado for War Elephant
* [Spear](https://thenounproject.com/search/?q=Spear&i=11432) By Stephen Copinger for Spearman
* [Greek shield](https://thenounproject.com/search/?q=hoplite&i=440135) for Hoplite
* [Spiked club](https://thenounproject.com/search/?q=club%20weapon&creator=1933477&i=831794) for Brute