From e0a00eb9a5d9c7c148eacf74f4f6dbf3b889b61a Mon Sep 17 00:00:00 2001 From: JackRainy Date: Sat, 25 Jan 2020 19:43:53 +0200 Subject: [PATCH] Implemented aircraft carrier "Flight Deck" and "Armor Plating" promotions (#1754) * Implemented aircraft carrier "Flight Deck" and "Armor Plating" promotions * Template for the translation strings * New icons are added Co-authored-by: ltrcao --- .../UnitPromotionIcons/Armor Plating.png | Bin 0 -> 1324 bytes .../Images/UnitPromotionIcons/Flight Deck.png | Bin 0 -> 1384 bytes android/assets/jsons/UnitPromotions.json | 36 ++++++++++++++++++ .../translationsByLanguage/English.properties | 8 ++++ .../template.properties | 8 ++++ .../com/unciv/logic/battle/BattleDamage.kt | 3 ++ .../unciv/logic/map/UnitMovementAlgorithms.kt | 2 +- docs/Credits.md | 2 + 8 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 android/Images/UnitPromotionIcons/Armor Plating.png create mode 100644 android/Images/UnitPromotionIcons/Flight Deck.png diff --git a/android/Images/UnitPromotionIcons/Armor Plating.png b/android/Images/UnitPromotionIcons/Armor Plating.png new file mode 100644 index 0000000000000000000000000000000000000000..804c4ceecc7e8e3914f20311e0bfea625d1f6881 GIT binary patch literal 1324 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=3?wxlRx|@C#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvNA9*GX(gAxB|uh|NjppN5N=%qI*bL4Lu&j4+Y`L-2QYRbUd} zEbxddW?=6D0u zw0gQYhIn|t?RVrlV8Fq0`@g+a>)oX+LCI@Es!qt*9Fc5t=l=ZrNsPlPA=`5cZ>hfN zS;=^3Np#TJzmJ@^+RRLg2$DT#K7lbzm?x-qAOBVT^Ywlkj1Nr8`uWo?Wb*U<9vfym zZv9guzv}SMV^VaiKs&lrKF~(o){`Pz_=S)yy_H^}g JS?83{1OOY(Y&-w} literal 0 HcmV?d00001 diff --git a/android/Images/UnitPromotionIcons/Flight Deck.png b/android/Images/UnitPromotionIcons/Flight Deck.png new file mode 100644 index 0000000000000000000000000000000000000000..e40a5a78bcf52e1105c34a0cfe0a7049f7ccff6a GIT binary patch literal 1384 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=3?wxlRx|@C#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvNA9*GX(gAxB|uh|NjppN5N=%qI*bL4Lu&j4+Y`L-2QYRbUd} zEbxddW?=6D0u z9Q1T?4Ds-O+aJiqtjOc?`Y-?9-p4CCPp;Dl;(Gi0;+ZF$`_`pyniQmUnC0DD&7#kK zGKzPCog&=l1aB$~>wLBR&5R}uo~L($Z8VJM=uSLT+t{cYup=&E*+;H&Z6DEhzh{`7 z`F$@YGgOw1^}FERlbND1wyUOGu8~h<`F+S-+xCd=qU}XeOPg~zvcDLrGJXBQXSqz| z@v%;kcj+@En%*bp8Hl`kA=<-rjGs%5_p|8I(9#e0-4`d^`FLu|{!OR+wXc6=6TTbN Ua3F2}ZBRz=boFyt=akR{0J6V{Gynhq literal 0 HcmV?d00001 diff --git a/android/assets/jsons/UnitPromotions.json b/android/assets/jsons/UnitPromotions.json index 71ce5cb723..cce24b535e 100644 --- a/android/assets/jsons/UnitPromotions.json +++ b/android/assets/jsons/UnitPromotions.json @@ -224,6 +224,42 @@ "unitTypes": ["WaterSubmarine"] }, + // Aircraft Carrier + { + "name": "Armor Plating I", + "effect": "+25% Combat Bonus when defending", + "unitTypes": ["WaterAircraftCarrier"] + }, + { + "name": "Armor Plating II", + "prerequisites": ["Armor Plating I"], + "effect": "+25% Combat Bonus when defending", + "unitTypes": ["WaterAircraftCarrier"] + }, + { + "name": "Armor Plating III", + "prerequisites": ["Armor Plating II"], + "effect": "+25% Combat Bonus when defending", + "unitTypes": ["WaterAircraftCarrier"] + }, + { + "name": "Flight Deck I", + "effect": "Can carry 1 extra air unit", + "unitTypes": ["WaterAircraftCarrier"] + }, + { + "name": "Flight Deck II", + "prerequisites": ["Flight Deck I"], + "effect": "Can carry 1 extra air unit", + "unitTypes": ["WaterAircraftCarrier"] + }, + { + "name": "Flight Deck III", + "prerequisites": ["Flight Deck II"], + "effect": "Can carry 1 extra air unit", + "unitTypes": ["WaterAircraftCarrier"] + }, + // Bomber { "name": "Siege I", diff --git a/android/assets/jsons/translationsByLanguage/English.properties b/android/assets/jsons/translationsByLanguage/English.properties index 2bfca968b2..fa0468503e 100644 --- a/android/assets/jsons/translationsByLanguage/English.properties +++ b/android/assets/jsons/translationsByLanguage/English.properties @@ -3114,6 +3114,14 @@ Bonus when intercepting [amount]% = Ambush I = # Requires translation! Ambush II = +Armor Plating I = Armor Plating I +Armor Plating II = Armor Plating II +Armor Plating III = Armor Plating III ++25% Combat Bonus when defending = +25% Combat Bonus when defending +Flight Deck I = Flight Deck I +Flight Deck II = Flight Deck II +Flight Deck III = Flight Deck III +Can carry 1 extra air unit = Can carry 1 extra air unit Can carry 2 aircraft = Can carry 2 aircraft # Requires translation! Haka War Dance = diff --git a/android/assets/jsons/translationsByLanguage/template.properties b/android/assets/jsons/translationsByLanguage/template.properties index d2d3abff18..7970ae9f08 100644 --- a/android/assets/jsons/translationsByLanguage/template.properties +++ b/android/assets/jsons/translationsByLanguage/template.properties @@ -1663,6 +1663,14 @@ Reduces damage taken from interception by 50% = Bonus when intercepting [amount]% = Ambush I = Ambush II = +Armor Plating I = +Armor Plating II = +Armor Plating III = ++25% Combat Bonus when defending = +Flight Deck I = +Flight Deck II = +Flight Deck III = +Can carry 1 extra air unit = Can carry 2 aircraft = Haka War Dance = -10% combat strength for adjacent enemy units = diff --git a/core/src/com/unciv/logic/battle/BattleDamage.kt b/core/src/com/unciv/logic/battle/BattleDamage.kt index b5641ed649..783541f092 100644 --- a/core/src/com/unciv/logic/battle/BattleDamage.kt +++ b/core/src/com/unciv/logic/battle/BattleDamage.kt @@ -166,6 +166,9 @@ class BattleDamage{ if (defenceVsRanged > 0) modifiers["defence vs ranged"] = defenceVsRanged } + val carrierDefenceBonus = 0.25f * defender.unit.getUniques().count { it == "+25% Combat Bonus when defending" } + if (carrierDefenceBonus > 0) modifiers["Armor Plating"] = carrierDefenceBonus + if (defender.unit.isFortified()) modifiers["Fortification"] = 0.2f * defender.unit.getFortificationTurns() diff --git a/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt b/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt index e9bf4a9070..c8cece644a 100644 --- a/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt +++ b/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt @@ -297,7 +297,7 @@ class UnitMovementAlgorithms(val unit:MapUnit) { val unitAtDestination = tile.militaryUnit!! var unitCapacity = if (unitAtDestination.getUniques().contains("Can carry 2 aircraft")) 2 else 0 - // unitCapacity += unitAtDestination.getUniques().count { it == "Can carry 1 extra air unit" } + unitCapacity += unitAtDestination.getUniques().count { it == "Can carry 1 extra air unit" } return ((unitAtDestination.type.isAircraftCarrierUnit() && !unit.type.isMissileUnit()) || (unitAtDestination.type.isMissileCarrierUnit() && unit.type.isMissileUnit())) diff --git a/docs/Credits.md b/docs/Credits.md index 5eb732b426..1be98cedff 100644 --- a/docs/Credits.md +++ b/docs/Credits.md @@ -481,6 +481,8 @@ Unless otherwise specified, all the following are from [the Noun Project](https: * [Submarine](https://thenounproject.com/search/?q=submarines&i=96833) by Lloyd Humphreys for Wolfpack * [Axe](https://thenounproject.com/search/?q=axe&i=14290) by Brian Oppenlander for Woodsman * [Competition](https://thenounproject.com/search/?q=move%20fast&i=1743826) by luca fruzza +* Icon for Flight Deck is made by [JackRainy](https://github.com/JackRainy) +* Icon for Armor Plating is made by [JackRainy](https://github.com/JackRainy) ## Others