mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-24 03:53:12 -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",
|
"name": "Ancient ruins",
|
||||||
"terrainsCanBeBuiltOn": ["Land"],
|
"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",
|
"name": "City ruins",
|
||||||
|
@ -270,7 +270,8 @@
|
|||||||
{
|
{
|
||||||
"name": "Ancient ruins",
|
"name": "Ancient ruins",
|
||||||
"terrainsCanBeBuiltOn": ["Land"],
|
"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",
|
"name": "City ruins",
|
||||||
|
@ -17,6 +17,7 @@ import com.unciv.models.ruleset.unique.Unique
|
|||||||
import com.unciv.models.ruleset.unique.UniqueType
|
import com.unciv.models.ruleset.unique.UniqueType
|
||||||
import com.unciv.ui.screens.mapeditorscreen.MapGeneratorSteps
|
import com.unciv.ui.screens.mapeditorscreen.MapGeneratorSteps
|
||||||
import com.unciv.logic.map.tile.TileNormalizer
|
import com.unciv.logic.map.tile.TileNormalizer
|
||||||
|
import com.unciv.models.ruleset.tile.TileImprovement
|
||||||
import com.unciv.models.ruleset.unique.StateForConditionals
|
import com.unciv.models.ruleset.unique.StateForConditionals
|
||||||
import com.unciv.utils.debug
|
import com.unciv.utils.debug
|
||||||
import kotlinx.coroutines.CoroutineScope
|
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() }
|
val ruinsEquivalents = ruleset.tileImprovements.filter { it.value.isAncientRuinsEquivalent() }
|
||||||
if (map.mapParameters.noRuins || ruinsEquivalents.isEmpty() )
|
if (map.mapParameters.noRuins || ruinsEquivalents.isEmpty() )
|
||||||
return
|
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(
|
val locations = randomness.chooseSpreadOutLocations(
|
||||||
(suitableTiles.size * ruleset.modOptions.constants.ancientRuinCountMultiplier).roundToInt(),
|
(suitableTiles.size * ruleset.modOptions.constants.ancientRuinCountMultiplier).roundToInt(),
|
||||||
suitableTiles,
|
suitableTiles,
|
||||||
map.mapParameters.mapSize.radius)
|
map.mapParameters.mapSize.radius)
|
||||||
for (tile in locations)
|
for (tile in locations)
|
||||||
tile.improvement = ruinsEquivalents.keys.random()
|
tile.improvement = ruinsEquivalents.values.filter { isPlaceable(it, tile) }.random().name
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun spreadResources(tileMap: TileMap) {
|
private fun spreadResources(tileMap: TileMap) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user