mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-23 11:34:54 -04:00
Resolves #13540 - Fix ancient ruins not spawning as much as they should
This commit is contained in:
parent
ede5ebdf75
commit
4f44c7236c
@ -281,7 +281,8 @@
|
||||
{
|
||||
"name": "Ancient ruins",
|
||||
"terrainsCanBeBuiltOn": ["Land"],
|
||||
"uniques": ["Unpillagable", "Provides a random bonus when entered", "Unbuildable"]
|
||||
"uniques": ["Unpillagable", "Provides a random bonus when entered", "Unbuildable",
|
||||
"Does not need removal of [Forest]", "Does not need removal of [Jungle]"]
|
||||
},
|
||||
{
|
||||
"name": "City ruins",
|
||||
|
@ -270,7 +270,8 @@
|
||||
{
|
||||
"name": "Ancient ruins",
|
||||
"terrainsCanBeBuiltOn": ["Land"],
|
||||
"uniques": ["Unpillagable", "Provides a random bonus when entered", "Unbuildable"]
|
||||
"uniques": ["Unpillagable", "Provides a random bonus when entered", "Unbuildable",
|
||||
"Does not need removal of [Forest]", "Does not need removal of [Jungle]"]
|
||||
},
|
||||
{
|
||||
"name": "City ruins",
|
||||
|
@ -17,6 +17,7 @@ import com.unciv.models.ruleset.unique.Unique
|
||||
import com.unciv.models.ruleset.unique.UniqueType
|
||||
import com.unciv.ui.screens.mapeditorscreen.MapGeneratorSteps
|
||||
import com.unciv.logic.map.tile.TileNormalizer
|
||||
import com.unciv.models.ruleset.tile.TileImprovement
|
||||
import com.unciv.models.ruleset.unique.StateForConditionals
|
||||
import com.unciv.utils.debug
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
@ -353,13 +354,18 @@ class MapGenerator(val ruleset: Ruleset, private val coroutineScope: CoroutineSc
|
||||
val ruinsEquivalents = ruleset.tileImprovements.filter { it.value.isAncientRuinsEquivalent() }
|
||||
if (map.mapParameters.noRuins || ruinsEquivalents.isEmpty() )
|
||||
return
|
||||
val suitableTiles = map.values.filter { it.isLand && !it.isImpassible() }
|
||||
|
||||
fun isPlaceable(improvement: TileImprovement, tile: Tile) =
|
||||
tile.improvementFunctions.canImprovementBeBuiltHere(improvement, stateForConditionals = StateForConditionals.IgnoreConditionals)
|
||||
|
||||
val suitableTiles = map.values.filter { it.isLand && !it.isImpassible()
|
||||
&& ruinsEquivalents.values.any { improvement -> isPlaceable(improvement, it) } }
|
||||
val locations = randomness.chooseSpreadOutLocations(
|
||||
(suitableTiles.size * ruleset.modOptions.constants.ancientRuinCountMultiplier).roundToInt(),
|
||||
suitableTiles,
|
||||
map.mapParameters.mapSize.radius)
|
||||
for (tile in locations)
|
||||
tile.improvement = ruinsEquivalents.keys.random()
|
||||
tile.improvement = ruinsEquivalents.values.filter { isPlaceable(it, tile) }.random().name
|
||||
}
|
||||
|
||||
private fun spreadResources(tileMap: TileMap) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user