Comments (10)
Oh my - debug("Replacing fort in progress with new improvement")
- does that mean that my strategy to leave build-fort instructions everywhere the AI will expand to but I won't is now moot?
Still haven't found a good place to set a conditional breakpoint to let autoplay generate that missing save for us...
But there's some linting to be had:
Index: core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt b/core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt
--- a/core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt (revision 371460038446e2e9efd6fc3b39c9bbecf5374711)
+++ b/core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt (date 1707298117918)
@@ -57,9 +57,12 @@
* The improvementPriority and bestImprovement are by default not set.
* Once improvementPriority is set we have already checked for the best improvement, repairImprovement.
*/
- data class TileImprovementRank(val tilePriority: Float, var improvementPriority: Float? = null,
- var bestImprovement: TileImprovement? = null,
- var repairImprovment: Boolean? = null)
+ data class TileImprovementRank(
+ val tilePriority: Float,
+ var improvementPriority: Float? = null,
+ var bestImprovement: TileImprovement? = null,
+ var repairImprovement: Boolean? = null
+ )
private val tileRankings = HashMap<Tile, TileImprovementRank>()
@@ -114,7 +117,7 @@
if (tileHasWorkToDo(currentTile, unit)) {
val tileRankings = tileRankings[currentTile]!!
- if (tileRankings.repairImprovment!!) {
+ if (tileRankings.repairImprovement!!) {
debug("WorkerAutomation: $unit -> repairs $currentTile")
UnitActionsFromUniques.getRepairAction(unit)?.action?.invoke()
return
@@ -206,7 +209,7 @@
}
/**
- * Calculate a priority for the tile without accounting for the improvement it'self
+ * Calculate a priority for the tile without accounting for the improvement itself
* This is a cheap guess on how helpful it might be to do work on this tile
*/
fun getBasePriority(tile: Tile, unit: MapUnit): Float {
@@ -249,11 +252,11 @@
private fun getImprovementPriority(tile: Tile, unit: MapUnit): Float {
getBasePriority(tile, unit)
val rank = tileRankings[tile]
- if(rank!!.improvementPriority == null) {
+ if (rank!!.improvementPriority == null) {
// All values of rank have to be initialized
rank.improvementPriority = -100f
rank.bestImprovement = null
- rank.repairImprovment = false
+ rank.repairImprovement = false
val bestImprovement = chooseImprovement(unit, tile)
if (bestImprovement != null) {
@@ -270,16 +273,17 @@
var repairBonusPriority = tile.getImprovementToRepair()!!.getTurnsToBuild(unit.civ,unit) - UnitActionsFromUniques.getRepairTurns(unit)
if (tile.improvementInProgress == Constants.repair) repairBonusPriority += UnitActionsFromUniques.getRepairTurns(unit) - tile.turnsToImprovement
- val repairPriority = repairBonusPriority + Automation.rankStatsValue(TileStatFunctions(tile).getStatDiffForImprovement(tile.getTileImprovement()!!, unit.civ, tile.owningCity), unit.civ)
+ val repairPriority = repairBonusPriority +
+ Automation.rankStatsValue(TileStatFunctions(tile).getStatDiffForImprovement(tile.getTileImprovement()!!, unit.civ, tile.owningCity), unit.civ)
if (repairPriority > rank.improvementPriority!!) {
rank.improvementPriority = repairPriority
rank.bestImprovement = null
- rank.repairImprovment = true
+ rank.repairImprovement = true
}
}
}
// A better tile than this unit can build might have been stored in the cache
- if (!rank.repairImprovment!! && (rank.bestImprovement == null ||
+ if (!rank.repairImprovement!! && (rank.bestImprovement == null ||
!unit.canBuildImprovement(rank.bestImprovement!!, tile))) return -100f
return rank.improvementPriority!!
}
@@ -296,7 +300,7 @@
*/
private fun tileHasWorkToDo(tile: Tile, unit: MapUnit): Boolean {
if (getImprovementPriority(tile, unit) <= 0) return false
- if (!(tileRankings[tile]!!.bestImprovement != null || tileRankings[tile]!!.repairImprovment!!))
+ if (!(tileRankings[tile]!!.bestImprovement != null || tileRankings[tile]!!.repairImprovement!!))
throw IllegalStateException("There was an improvementPriority > 0 and nothing to do")
return true
}
from unciv.
I have noticed it for Customs House, Holy site, but I thought that was just the way the stat valuing system works. I'll look into a more complete solution that isn't don't replace great improvements
.
from unciv.
Here's a cheated example
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
Next turn, that Tyre Worker will try to replace the Holy Site with a Farm. Caught with a breakpoint on WorkerAutomation line 127 (return currentTile.startWorkingOnImprovement
), condition currentTile.containsGreatImprovement()
.
... is the problem here that getImprovementPriority is positive? I don't think I have the big picture anymore... OK, when getStatDiffForImprovement runs for that it correctly says +2Food,-6Faith. Automation.rankStatsValue then converts that to +2.4 value, which is still in the ranking instance when startWorkingOnImprovement is reached. Why + for a net -? Faith has no value at all...
Could we find a non-faith, non-gold such example?
from unciv.
(...uh, shouldn't we remove the Holy site from the Vanilla ruleset?)
from unciv.
So far no luck. Ran several games now, (annoying due to this bug still unfixed), and the breakpoint with condition currentTile.containsGreatImprovement() && currentTile.improvement != "Holy site" && currentTile.improvement != "Customs house"
only hits for - Citadel.
So - if the issue claim is true for all Great Improvements, we need proof in form of a save just before such a replace happens. Holy site is explained by the tile ranking function valuing faith at zero, and Customs house -probably- is explained by the ranking function devaluating gold yield by 67% (imho a slight contradiction with the comment text there - the comment would justify 33%).
from unciv.
Holy site is explained by the tile ranking function valuing faith at zero, and Customs house -probably- is explained by the ranking function devaluating gold yield by 67% (imho a slight contradiction with the comment text there - the comment would justify 33%).
I did notice that the AI workers don't like the base holy site and customs house. But since it was a stat rating problem I deemed it out of the scope of what I wanted to change. Interestingly, it is only causing a problem now since the automated workers do work.
Are holy sites even worth it as a player? I never build them or the culture great improvements.
from unciv.
Are holy sites even worth it as a player
Other way round: The player decided a Holy sh - ahem, site - was worth spending a Prophet on. How exactly should we respect that?
I'd say simply change the Automation.rankStatsValue function to place less widely varying weights. Maybe aim for max-weight/min-weight <= 5 and not βΎοΈ . That would mean no stat gets < 0.75f weight if the happiness one stays as-is. And with faith worth 0.75, a Farm overridung a Holy outh... Merde! ... a Farm overriding a Holy site would no longer be considered a win. As for a Grinchhouse - with gold up to 0.75 from 0.33 - 3 to 2.4 at most - also not a win. Replacing with something other than a Farm, if in synergy with a bonus resource maybe - they could still be built over, but then maybe rightfully so?
from unciv.
And/Or - make all those weight factors moddable. And I can't even do division properly.
from unciv.
Tile ranking for Faith should definitely not be zero, good catch! e6893ef
from unciv.
Summary:
- Holy site very likely fixed
- Customs house still a known victim - due to unbalance in the same ranking function, overemphasis on food and too much devaluing gold, so 2 food becomes better than 6 gold
- All others unproven, and unless a save is forthcoming should be assumed false alarm
from unciv.
Related Issues (20)
- Effect "<for [amount] turns> <upon being defeated>" not working HOT 19
- Crash on next turn HOT 3
- Units that can't fortify stay fortified after upgrading HOT 6
- Exploit with pillage and repair tile improvement on enemy's lands HOT 19
- 4.10.11 (970) crashing every game -- UnreachableDestinationException HOT 3
- Credits.md maintenance - broken links HOT 3
- Feature request: Change ESC behavior HOT 4
- Automated workers get lost in the ocean HOT 2
- "Hidden from users" modifier not hiding uniques of tile improvements HOT 2
- Unciv Wiki Page: Mod File Structure - Uniques Page is broken on the Unciv Wiki HOT 6
- AI movement. HOT 2
- AI not using work boats to access luxury resources HOT 1
- 'Cannot move' cannot be added with some filters HOT 4
- AI declaring war on me and declaring friendship with me on the same turn HOT 1
- Feature request: Some way to scroll over large text boxes HOT 5
- Current master does not load **any** game HOT 4
- Feature request: Flat north and south boundaries for rectangular map HOT 4
- ΠΠ HOT 3
- Gods and Kings giving an error in the mod checker HOT 2
- Quicker selection of civilizations for custom maps HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from unciv.