diff --git a/android/assets/UnitIcons/Bowman.png b/android/assets/UnitIcons/Bowman.png new file mode 100644 index 0000000000..dee542a35a Binary files /dev/null and b/android/assets/UnitIcons/Bowman.png differ diff --git a/android/assets/jsons/Units.json b/android/assets/jsons/Units.json index ae086ca567..07934da2d2 100644 --- a/android/assets/jsons/Units.json +++ b/android/assets/jsons/Units.json @@ -49,6 +49,20 @@ obsoleteTech:"Machinery", upgradesTo:"Crossbowman" }, + { + name:"Bowman", + unitType:"Ranged", + movement:2, + strength:7, + rangedStrength:9, + cost: 40, + hurryCostModifier:20 + requiredTech:"Archery", + obsoleteTech:"Machinery", + replaces:"Archer", + uniqueTo:"Babylon" + upgradesTo:"Crossbowman" + }, { name:"Chariot Archer", unitType:"Ranged", diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index ef4b5d4bca..2ba426f0e6 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -131,7 +131,7 @@ class Battle(val gameInfo:GameInfo=UnCivGame.Current.gameInfo) { // Remove all national wonders when conquering a city for(building in city.cityConstructions.getBuiltBuildings().filter { it.requiredBuildingInAllCities!=null }) city.cityConstructions.builtBuildings.remove(building.name) - + (attacker as MapUnitCombatant).unit.moveToTile(city.getCenterTile()) city.civInfo.gameInfo.updateTilesToCities() } diff --git a/core/src/com/unciv/models/gamebasics/unit/Unit.kt b/core/src/com/unciv/models/gamebasics/unit/Unit.kt index 7d9bcaf26e..9f8ca70398 100644 --- a/core/src/com/unciv/models/gamebasics/unit/Unit.kt +++ b/core/src/com/unciv/models/gamebasics/unit/Unit.kt @@ -4,6 +4,7 @@ import com.unciv.logic.city.CityConstructions import com.unciv.logic.city.IConstruction import com.unciv.logic.civilization.CivilizationInfo import com.unciv.logic.map.MapUnit +import com.unciv.models.gamebasics.GameBasics import com.unciv.models.gamebasics.ICivilopedia import com.unciv.models.stats.INamed import com.unciv.ui.utils.tr @@ -24,6 +25,8 @@ class Unit : INamed, IConstruction, ICivilopedia { var uniques:HashSet?=null var obsoleteTech:String?=null var upgradesTo:String? = null + var replaces:String?=null + var uniqueTo:String?=null override val description: String @@ -81,6 +84,8 @@ class Unit : INamed, IConstruction, ICivilopedia { if (unbuildable) return false if (requiredTech!=null && !civInfo.tech.isResearched(requiredTech!!)) return false if (obsoleteTech!=null && civInfo.tech.isResearched(obsoleteTech!!)) return false + if(uniqueTo!=null && uniqueTo!=civInfo.civName) return false + if(GameBasics.Units.values.any { it.uniqueTo==civInfo.civName && it.replaces==name }) return false if (requiredResource!=null && !civInfo.getCivResources().keys.any { it.name == requiredResource }) return false return true }