diff --git a/android/Images/UnitPromotionIcons/Heal_Instantly_(Civ5).png b/android/Images/UnitPromotionIcons/Heal_Instantly_(Civ5).png new file mode 100644 index 0000000000..c99269575a Binary files /dev/null and b/android/Images/UnitPromotionIcons/Heal_Instantly_(Civ5).png differ diff --git a/android/assets/game.atlas b/android/assets/game.atlas index 44bfcaebb3..18b434c3ff 100644 --- a/android/assets/game.atlas +++ b/android/assets/game.atlas @@ -398,7 +398,7 @@ BuildingIcons/Paper Maker index: -1 BuildingIcons/Pentagon rotate: false - xy: 1632, 729 + xy: 1530, 744 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -797,28 +797,28 @@ ImprovementIcons/Quarry index: -1 ImprovementIcons/Railroad rotate: false - xy: 1102, 724 + xy: 898, 622 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/Railroad rotate: false - xy: 1102, 724 + xy: 898, 622 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/FantasyHex/Railroad rotate: false - xy: 1102, 724 + xy: 898, 622 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/ThorfMaps/Railroad rotate: false - xy: 1102, 724 + xy: 898, 622 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -923,7 +923,7 @@ OtherIcons/MenuIcon index: -1 OtherIcons/Pentagon rotate: false - xy: 1530, 744 + xy: 1632, 729 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -1980,7 +1980,7 @@ TechIcons/Radio index: -1 TechIcons/Railroad rotate: false - xy: 898, 622 + xy: 1102, 724 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -3070,164 +3070,171 @@ UnitPromotionIcons/Formation_I_(Civ5) orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Indirect_Fire_(Civ5) +UnitPromotionIcons/Heal_Instantly_(Civ5) rotate: false xy: 2020, 568 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Logistics_(Civ5) +UnitPromotionIcons/Indirect_Fire_(Civ5) rotate: false xy: 2020, 546 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/March_(Civ5) +UnitPromotionIcons/Logistics_(Civ5) rotate: false xy: 2020, 524 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 +UnitPromotionIcons/March_(Civ5) + rotate: false + xy: 1356, 8 + size: 20, 20 + orig: 20, 20 + offset: 0, 0 + index: -1 UnitPromotionIcons/Medic_(Civ5) - rotate: false - xy: 1356, 8 - size: 20, 20 - orig: 20, 20 - offset: 0, 0 - index: -1 -UnitPromotionIcons/Medic_II_(Civ5) - rotate: false - xy: 1356, 8 - size: 20, 20 - orig: 20, 20 - offset: 0, 0 - index: -1 -UnitPromotionIcons/Mobility_(Civ5) rotate: false xy: 1378, 8 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Range_(Civ5) +UnitPromotionIcons/Medic_II_(Civ5) + rotate: false + xy: 1378, 8 + size: 20, 20 + orig: 20, 20 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Mobility_(Civ5) rotate: false xy: 1400, 8 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Scouting_III_(Civ5) +UnitPromotionIcons/Range_(Civ5) rotate: false xy: 1422, 8 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Scouting_II_(Civ5) +UnitPromotionIcons/Scouting_III_(Civ5) rotate: false xy: 1444, 8 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Scouting_I_(Civ5) +UnitPromotionIcons/Scouting_II_(Civ5) rotate: false xy: 1466, 8 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Sentry_(Civ5) +UnitPromotionIcons/Scouting_I_(Civ5) rotate: false xy: 1488, 8 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Shock_III_(Civ5) +UnitPromotionIcons/Sentry_(Civ5) rotate: false xy: 1510, 8 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Shock_II_(Civ5) +UnitPromotionIcons/Shock_III_(Civ5) rotate: false xy: 1532, 8 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Shock_I_(Civ5) +UnitPromotionIcons/Shock_II_(Civ5) rotate: false xy: 1750, 302 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Siege_(Civ5) +UnitPromotionIcons/Shock_I_(Civ5) rotate: false xy: 1750, 280 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Targeting_III_(Civ5) +UnitPromotionIcons/Siege_(Civ5) rotate: false xy: 1750, 258 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Targeting_II_(Civ5) +UnitPromotionIcons/Targeting_III_(Civ5) rotate: false xy: 1750, 236 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Targeting_I_(Civ5) +UnitPromotionIcons/Targeting_II_(Civ5) rotate: false xy: 1750, 214 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Volley_(Civ5) +UnitPromotionIcons/Targeting_I_(Civ5) rotate: false xy: 1750, 192 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Wolfpack_III_(Civ5) +UnitPromotionIcons/Volley_(Civ5) rotate: false xy: 1750, 170 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Wolfpack_II_(Civ5) +UnitPromotionIcons/Wolfpack_III_(Civ5) rotate: false xy: 1750, 148 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Wolfpack_I_(Civ5) +UnitPromotionIcons/Wolfpack_II_(Civ5) rotate: false xy: 2000, 1046 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 -UnitPromotionIcons/Woodsman_(Civ5) +UnitPromotionIcons/Wolfpack_I_(Civ5) rotate: false xy: 1802, 444 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 +UnitPromotionIcons/Woodsman_(Civ5) + rotate: false + xy: 442, 752 + size: 20, 20 + orig: 20, 20 + offset: 0, 0 + index: -1 diff --git a/android/assets/game.png b/android/assets/game.png index 88eb6f05e4..e1581dd6ad 100644 Binary files a/android/assets/game.png and b/android/assets/game.png differ diff --git a/android/assets/jsons/Translations/Units - Copy.json b/android/assets/jsons/Translations/Units - Copy.json deleted file mode 100644 index 4eb7c3f983..0000000000 --- a/android/assets/jsons/Translations/Units - Copy.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/android/assets/jsons/Translations/Units,Promotions.json b/android/assets/jsons/Translations/Units,Promotions.json index dad46a1659..97e35f47b5 100644 --- a/android/assets/jsons/Translations/Units,Promotions.json +++ b/android/assets/jsons/Translations/Units,Promotions.json @@ -1471,5 +1471,16 @@ Simplified_Chinese:"狼群III级" } + "Wolfpack III":{ + Italian:"Attacco in massa III" + German:"Rudeltaktik III" + French:"Meute III" + Russian:"Массовая атака III" + Simplified_Chinese:"狼群III级" + } + + "Heal Instantly":{} + "Heal this Unit by 50 HP; Doing so will consume this opportunity to choose a Promotion":{} + } \ No newline at end of file diff --git a/android/assets/jsons/UnitPromotions.json b/android/assets/jsons/UnitPromotions.json index 073be0d6e9..f676d8cd41 100644 --- a/android/assets/jsons/UnitPromotions.json +++ b/android/assets/jsons/UnitPromotions.json @@ -1,5 +1,10 @@ [ + { + name:"Heal Instantly", + effect:"Heal this Unit by 50 HP; Doing so will consume this opportunity to choose a Promotion", + unitTypes:["Melee","Mounted","Scout","Siege","Ranged","Armor","WaterMelee","WaterRanged","WaterSubmarine"] + } { name:"Accuracy I", effect:"Bonus vs units in open terrain 15%", @@ -292,7 +297,4 @@ effect:"This unit and all others in adjacent tiles heal 5 additional HP. This unit heals 5 additional HP outside of friendly territory.", unitTypes:["Melee","Mounted","Scout"] } - - - ] diff --git a/core/src/com/unciv/logic/city/CityConstructions.kt b/core/src/com/unciv/logic/city/CityConstructions.kt index a641d914e0..7e12054685 100644 --- a/core/src/com/unciv/logic/city/CityConstructions.kt +++ b/core/src/com/unciv/logic/city/CityConstructions.kt @@ -1,8 +1,8 @@ package com.unciv.logic.city import com.badlogic.gdx.graphics.Color -import com.unciv.logic.automation.Automation import com.unciv.Constants +import com.unciv.logic.automation.Automation import com.unciv.models.gamebasics.Building import com.unciv.models.gamebasics.GameBasics import com.unciv.models.gamebasics.tr @@ -108,8 +108,8 @@ class CityConstructions { else return 0 } - fun getRemainingWork(constructionName: String) = getConstruction(constructionName) - .getProductionCost(cityInfo.civInfo.policies.adoptedPolicies) - getWorkDone(constructionName) + fun getRemainingWork(constructionName: String) = + getConstruction(constructionName).getProductionCost(cityInfo.civInfo.policies.adoptedPolicies) - getWorkDone(constructionName) fun turnsToConstruction(constructionName: String): Int { val workLeft = getRemainingWork(constructionName) diff --git a/core/src/com/unciv/logic/map/UnitPromotions.kt b/core/src/com/unciv/logic/map/UnitPromotions.kt index 81a7f661cb..213a85f7ce 100644 --- a/core/src/com/unciv/logic/map/UnitPromotions.kt +++ b/core/src/com/unciv/logic/map/UnitPromotions.kt @@ -20,7 +20,13 @@ class UnitPromotions{ XP -= xpForNextPromotion() numberOfPromotions++ } - promotions.add(promotionName) + + if(promotionName=="Heal Instantly"){ + unit.health += 50 + if(unit.health>100) unit.health=100 + } + else promotions.add(promotionName) + unit.updateUniques() unit.civInfo.updateViewableTiles() // some promotions give the unit bonus sight } diff --git a/core/src/com/unciv/ui/pickerscreens/PromotionPickerScreen.kt b/core/src/com/unciv/ui/pickerscreens/PromotionPickerScreen.kt index 67762a2bdb..fd3031ed7a 100644 --- a/core/src/com/unciv/ui/pickerscreens/PromotionPickerScreen.kt +++ b/core/src/com/unciv/ui/pickerscreens/PromotionPickerScreen.kt @@ -31,7 +31,9 @@ class PromotionPickerScreen(mapUnit: MapUnit) : PickerScreen() { val unitType = mapUnit.type val promotionsForUnitType = GameBasics.UnitPromotions.values.filter { it.unitTypes.contains(unitType.toString()) } val unitAvailablePromotions = mapUnit.promotions.getAvailablePromotions() + for (promotion in promotionsForUnitType) { + if(promotion.name=="Heal Instantly" && mapUnit.health==100) continue val isPromotionAvailable = promotion in unitAvailablePromotions val unitHasPromotion = mapUnit.promotions.promotions.contains(promotion.name) val promotionButton = Button(skin) diff --git a/core/src/com/unciv/ui/worldscreen/optionstable/WorldScreenOptionsTable.kt b/core/src/com/unciv/ui/worldscreen/optionstable/WorldScreenOptionsTable.kt index 3b65cceb30..9fef1b9ca0 100644 --- a/core/src/com/unciv/ui/worldscreen/optionstable/WorldScreenOptionsTable.kt +++ b/core/src/com/unciv/ui/worldscreen/optionstable/WorldScreenOptionsTable.kt @@ -187,14 +187,14 @@ class WorldScreenOptionsTable(screen:WorldScreen) : PopupTable(screen){ }) if (languageSelectBox.selected.percentComplete != 100) { - add("Missing translations:".toLabel()).pad(5f).row() + add("Missing translations:".toLabel()).pad(5f).colspan(2).row() val missingTextSelectBox = SelectBox(skin) val missingTextArray = Array() val currentLanguage = UnCivGame.Current.settings.language GameBasics.Translations.filter { !it.value.containsKey(currentLanguage) }.forEach { missingTextArray.add(it.key) } missingTextSelectBox.items = missingTextArray missingTextSelectBox.selected = "Untranslated texts" - add(missingTextSelectBox).pad(10f).width(UnCivGame.Current.worldScreen.stage.width / 2).row() + add(missingTextSelectBox).pad(10f).width(UnCivGame.Current.worldScreen.stage.width / 2).colspan(2).row() } }