mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-27 05:46:43 -04:00
Fixed promise not to settle (#10488)
* Settlers now account for the AgreedToNotSettleNearUs * If the two Civs are at war the AI no longer cares about AgreedToNotSettleNearUs
This commit is contained in:
parent
cfeed82800
commit
32639f1ff5
@ -3,6 +3,7 @@ package com.unciv.logic.automation.unit
|
|||||||
import com.unciv.logic.automation.Automation
|
import com.unciv.logic.automation.Automation
|
||||||
import com.unciv.logic.city.City
|
import com.unciv.logic.city.City
|
||||||
import com.unciv.logic.civilization.Civilization
|
import com.unciv.logic.civilization.Civilization
|
||||||
|
import com.unciv.logic.civilization.diplomacy.DiplomacyFlags
|
||||||
import com.unciv.logic.map.mapunit.MapUnit
|
import com.unciv.logic.map.mapunit.MapUnit
|
||||||
import com.unciv.logic.map.tile.Tile
|
import com.unciv.logic.map.tile.Tile
|
||||||
import com.unciv.models.ruleset.tile.ResourceType
|
import com.unciv.models.ruleset.tile.ResourceType
|
||||||
@ -51,6 +52,13 @@ object CityLocationTileRanker {
|
|||||||
if (tile.getOwner() != null && tile.getOwner() != civ) return false
|
if (tile.getOwner() != null && tile.getOwner() != civ) return false
|
||||||
for (city in nearbyCities) {
|
for (city in nearbyCities) {
|
||||||
val distance = city.getCenterTile().aerialDistanceTo(tile)
|
val distance = city.getCenterTile().aerialDistanceTo(tile)
|
||||||
|
// todo: AgreedToNotSettleNearUs is hardcoded for now but it may be better to softcode it below in getDistanceToCityModifier
|
||||||
|
if (distance <= 6 && civ.knows(city.civ)
|
||||||
|
&& !civ.isAtWarWith(city.civ)
|
||||||
|
// If the CITY OWNER knows that the UNIT OWNER agreed not to settle near them
|
||||||
|
&& city.civ.getDiplomacyManager(civ)
|
||||||
|
.hasFlag(DiplomacyFlags.AgreedToNotSettleNearUs))
|
||||||
|
return false
|
||||||
if (tile.getContinent() == city.getCenterTile().getContinent()) {
|
if (tile.getContinent() == city.getCenterTile().getContinent()) {
|
||||||
if (distance <= modConstants.minimalCityDistance) return false
|
if (distance <= modConstants.minimalCityDistance) return false
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user