Fixed crashing bug where barbarians would capture civilian units - including settlers! - and try to found cities with them

This commit is contained in:
Yair Morgenstern
2018-06-10 20:58:36 +03:00
parent 8d5fd730a0
commit 7108dcae78
3 changed files with 4 additions and 2 deletions

View File

@ -34,7 +34,7 @@ class Battle(val gameInfo:GameInfo=UnCivGame.Current.gameInfo) {
}
}
if(enemy.getCivilization() == enemy.getCivilization().gameInfo.getBarbarianCivilization())
if(enemy.getCivilization().isBarbarianCivilization())
modifiers["vs Barbarians"] = 0.33f
if(combatant.getCivilization().happiness<0)
@ -219,6 +219,7 @@ class Battle(val gameInfo:GameInfo=UnCivGame.Current.gameInfo) {
}
fun captureCivilianUnit(attacker: ICombatant, defender: ICombatant){
if(attacker.getCivilization().isBarbarianCivilization()) defender.takeDamage(100) // barbarians don't capture civilians!
val capturedUnit = (defender as MapUnitCombatant).unit
capturedUnit.civInfo = attacker.getCivilization()
capturedUnit.owner = capturedUnit.civInfo.civName

View File

@ -41,6 +41,7 @@ class CivilizationInfo {
fun getCapital()=cities.first { it.isCapital() }
fun isPlayerCivilization() = gameInfo.getPlayerCivilization()==this
fun isBarbarianCivilization() = gameInfo.getBarbarianCivilization()==this
// negative gold hurts science

View File

@ -80,7 +80,7 @@ class VictoryScreen : PickerScreen() {
val t=Table()
t.defaults().pad(5f)
for (civ in civInfo.gameInfo.civilizations){
if(civ.isPlayerCivilization() || civ == civInfo.gameInfo.getBarbarianCivilization()) continue
if(civ.isPlayerCivilization() || civ.isBarbarianCivilization()) continue
t.add(getMilestone("Destroy "+civ.civName, civ.isDefeated())).row()
}
return t