Comments (19)
The word "loot" has a meaning in Unciv elsewhere. This is "pillage". And "in sieges and battles" has no relevanve to the issue, not really. And "exploit" is a clearer term than cheating. Still, there are much more confusing issue titles...
That said, I'm pretty sure it's simply - pillage should not be allowed in enemy land, and I'm also pretty sure it must be a recent regression... Might investigate later.
from unciv.
Pillage should be allowed only in enemy land! The repair should be limited, and I thought it was, we'll need to check this
from unciv.
I can confirm that it's possible to repair lands outside of your own borders. I take advantage of this to fix tile improvements in city-state territory if someone has been pillaging my allies, but it is also possible to repair tiles in enemy territory, allowing for endless pillaging.
from unciv.
pillage should not be allowed in enemy land
Definitely a fumble. Meant repair.
I can confirm that it's possible
As in - current Unciv, older Unciv, or original Civ5?
I'd say:
Pillage in any friendly (owned by anybody not at war with) - NO, pillage in unowned - ??? tend to yes, pillage in enemy - YES.
Repair in own - YES, repair in friendly (including allied and neutral CS, or open borders???) - yes, repair in neutral - no, repair in enemy - NO.
from unciv.
As in - current Unciv, older Unciv, or original Civ5?
Current Unciv. I don't know if it works in the original Civ V.
Repair in own - YES, repair in friendly (including allied and neutral CS, or open borders???) - yes, repair in neutral - no, repair in enemy - NO.
I can think of one case where you'd want to repair improvements in neutral territory: if you've got a road outside your borders and someone pillages it, you should be able to fix it. This might also apply to forts and roads within enemy territory, because you want to be able to fix those for your own sake.
from unciv.
you'd want
Wishful thinking should not control the rules. Certainly, we can make it so. But for Unciv, reusing the balancing decisions of the original - and simplicity are also factors. See this issue - things go wrong too easily with complexity. Or should we make every aspect of this moddable through OnlyAvailable uniques with arbitrary conditionals as much as you want? Should be possible. Volunteers to do the coding? Warning: Initial effort estimate: coding 1% testing 11% finding all edge cases and ironing them out 111%...
Heh, now I want to buy a brooklyn bridge from the queen of england....
from unciv.
At the very least, since it is possible to build roads and forts in neutral territory, it should be possible to maintain roads and forts in neutral territory. If you have to do so by building a new road or fort, that's fine, as long as you have some way of fixing things. I think that's both fair and realistic.
As for fixing pillaged improvements in enemy territory, it makes sense to disallow that, but would doing so complicate the code for the repair action?
from unciv.
build ability = maintain ability
Good argument. Also strengthens the argument for Forts&Roads to have/be-allowed-to-have different pillage/repair rules vs Farms to Academies...
would doing so complicate the code
No idea at the moment - consensus is more important, my gut feeling just tends to "no" (no repair in hostile, no matter what) but could be wrong. As for what's a good balance of efficient, "KISS", and logical - would need to dig in, not relaxed enough right now.
from unciv.
The word "loot" has a meaning in Unciv elsewhere. This is "pillage". And "in sieges and battles" has no relevanve to the issue, not really. And "exploit" is a clearer term than cheating. Still, there are much more confusing issue titles...
@SomeTroglodyte Excuse me for mistakes, english not my native language, I only try to describe situation in a few words.
Of course, it's pillage, not looting. Yeah, it's not a clear bug, maybe exploit would be a good term. But there was no variant "exploit" when i created the issue.
from unciv.
As in - current Unciv, older Unciv, or original Civ5?
@SomeTroglodyte, I don't remember I could use such exploit in original Civ5 (or Civ4/3/2/1).
from unciv.
OK, time to code this, weekend and release approaching:
Simplest common denominator?
- Block repair altogether in enemy land.
Desirable but could get complicated?
- Block repair in enemy land if and only if the improvement has a tangible benefit through a set of uniques: PillageYieldRandom, PillageYieldFixed, and a newly to be created one that backs the currently hardcoded healing effect...
Volunteers? Use 'assign yourself' top right.
@NoobTutorial - good first issue!
from unciv.
I think you can only see that because of your repo privilege 😜
A comment will suffice :)
from unciv.
🙈 of course assignments are collaborator-level.... But with our coder shortage, isn't there only one coder left without, Oscar?
from unciv.
...Still, if I'm still awake after my soup, my movie, my 666 miles on bike, and a summit or two - you might see someone assigned up there.
from unciv.
Looked into it, and there's too much stuff that puzzles me..
But at least it looks like @SpacedOutChicken 's argument "should be able to repair what I can build" should be no harder than my simple "no repair in hostile land".
- Why does
MapUnit.canBuildImprovement
check for repair from theimprovementInProgress
and not itsimprovement
parameter? Like - "yes, Legionary, you can build a Farm here, because you have anyBuildImprovements
unique and on the Tile there's currently a Mine being repaired???" - Looking through call trees shows that some automation code does not go through
UnitActionType.Repair
... But that would be the place to lay down these rules??? Example: automateConnectRoad - is it possible there are more? - Why does
automateImprovementPlacer
not return the success or failure ofinvokeUnitAction
to its caller?
Otherwise, looks like one or two of the commented clauses, likely the improvementFunctions
one, in the following:
val damagedImprovement = tile.getTileImprovement() ?: return null
val couldConstruct = unit.currentMovement > 0
&& !tile.isCityCenter()
&& tile.improvementInProgress != Constants.repair
&& !tile.isEnemyTerritory(unit.civ) // Simple allow repair in friendly or neutral land only ??
&& tile.improvementFunctions.canBuildImprovement(damagedImprovement, unit.civ) // Does enemy land checks through the improvement's uniques - would allow repairing forts ?? Also includes isCityCenter check
&& unit.canBuildImprovement(damagedImprovement) // Only repair the kinds of improvements we can build from scratch ?? canBuildImprovement looks like that's not intended..
...? Also, I haven't got any saves allowing to test this!
from unciv.
@SomeTroglodyte, or maybe simply just checking tile.isEnemyTerritory(unit.civ)
— and if its true
— add some value to the number of turns required to repair the improvement. Of course, the number of turns added should depend on the difficulty level of the game, the speed of the game, and so on. Maybe, add a method like .getTileRepairImprovementCostTurns(tile)
which returns correct value.
Over the days, I've played at different difficulty levels and game speeds. And I'll say this: even if a worker can fix an improvement in 2 turns (at the epic speed of the game), this already complicates the use of the exploit.
My main idea is not to remove the possibility of this exploit altogether, but to make the bonus of using it insignificant.
from unciv.
add some value to the number of turns required to repair the improvement
That's mod territory. We try to be faithful to some original somewhere... Only for this there's no clear sources, or are there? Hey, come to think of it, a few hours of digging in the dll sources might turn up something clear. IIRC, Unciv had 2-turn repairs long ago, so someone must have successfully argumented that was not the Civ5 way - if you find that please link.
The rest is compromising on that faithfulness and implementation detail...
Letting mods decide who can repair what where in what time - could require some new UniqueTypes...
from unciv.
That's mod territory.
Letting mods decide who can repair what where in what time
@SomeTroglodyte, from this point of view — agree and support such decision.
I've dig into undocumented Civ5 features and found that, really, worker in original Civ could repair improvements on enemy territory. Proof on Russian forum https://www.strategium.ru/forum/topic/51753-nedokumentirovannyie-osobennosti-igryi-v-tsiv5/, that's quote:
- Рабочие могут чинить улучшения на чужой территории.
То есть, имея пирамиды+политику из воли, можно каждый ход на стандартной скорости чинить улучшение, его тут же грабить и восстанавливать по 25 хп. И ещё останутся очки движения, чтобы пострелять по городу, например.
translation:
- Workers can repair improvements on someone else's territory.
That is, having pyramids + a policy of will, you can fix an improvement every turn at standard speed, immediately rob it and restore it by 25 hp. And there will still be movement points to shoot around the city, for example.
Now i have clear understanding this exploit was part of original mechanic of the game. So, changing this is really modder's territory.
from unciv.
OK, if this exploit was part of Civ5 - open to discussion, but I would vote fix it anyway = allow repair only where you could build the thing from scratch.
But - that link talks about BNW, and some parts (me no russkiy read) sound like they contain info that may point out other deviations of our rules from the original... Ruins no Faith until turn 20? Maybe we have that. Gifted Great People? I'm sure ours are more frequent. Then again - BNW, at least some city-state quest rules will be different from G&K which we emulate. Care to analyze and make a List of what may be worth checking?
from unciv.
Related Issues (20)
- Escorted movement crash HOT 2
- City-state condemnation mechanics
- RFC: Fly-by observations (and mini-bugs) concerning Espionage HOT 8
- Culture order error in declear war notification. HOT 1
- Trigger "Enemy City" tutorial when I disbanded all my units. HOT 2
- Unit automation uses defunct `UnitActionType.StartGoldenAge` HOT 2
- Unable to start on custom map HOT 3
- AI players ignore the One City Challenge HOT 1
- Mods broken since 4.11.12 HOT 5
- Atlas and game.png file generation should make exceptions accessible to a Modder HOT 9
- Feature Request: Implement the remaining countables HOT 1
- Notifications of Science building in puppet cities HOT 4
- Feature Request: Support for Civ4-like non-permanent civics HOT 12
- Feature Request: Add buildingFilter values support for cityFilter HOT 1
- Rename Kawanai -> Kānāwai HOT 2
- Feature request: Enable OR when specifying multiple Tech Requirements HOT 4
- Suppress online cheating HOT 5
- Suppress online cheating HOT 1
- "when below [amount] [resource]" causing crash with city-level resources HOT 6
- 'Unavailable" is not valid for Tech
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.