LoneGazebo / Community-Patch-DLL

Community Patch for Civilization V - Brave New World
Other
285 stars 158 forks source link

Denmark: embarkation UA bonus and movement points. #2698

Closed Radost closed 7 years ago

Radost commented 7 years ago

UA doesn't interact very well with the embarkation movement points fix. I have maximum of 7 embarked movement points due to various bonuses. Embarking cuts to the maximum of the unit's points and disembarking cuts to the maximum of land movement, thus shaving off any "bonus" embarked points. All that leads to embarked movement bonuses being wasted most of the time, and in case of Denmark UA - to sub-optimal movement for land-water-land-water paths, unless you micromanage. But it's not the kind of micromanaging I find particularly interesting.

LoneGazebo commented 7 years ago

@ilteroi, care to take point on this?

ilteroi commented 7 years ago

which "embarked movement points fix" are you referring to? and what would be the desired behavior?

Radost commented 7 years ago

Before the fix embarked movement transferred to the land, so a 2/2 unit could end up as 6/2 (and be able to fortify/heal on the same turn) if it disembarks on a city at the start of the turn while being on a coast tile. As for desired: 1) Ideally, embarked and land movement should count separately. So the water movement doesn't decrease land movement. 2) Embarking should consume 1 point of water movement while disembarking - 1 point of land movement. This way no unit will be able to fortify on the same turn.

Take note we are talking about Denmark UA and embarking/disembarking on a city tile, in all other cases these actions eat all movement.

ilteroi commented 7 years ago

i didn't do any recent changes regarding embarkation, so i'm confused.

i do remember however that it was tricky to handle these movement range changes in a halfway sane manner. i'll take a look but we need to be careful here.

Radost commented 7 years ago

It's not a recent change.

241

456

LoneGazebo commented 7 years ago

@ilteroi where did we end up with this?

Iamblichos commented 7 years ago

I'll take this I know where the problem is.

Iamblichos commented 7 years ago

Okay taking a look at this, I need more info from your description. Let's use a tank as an example. On Turn Start it has 5/5, when it embarks to water it'll be 4/6, but you think it should be 5/6 after its embark move?

Radost commented 7 years ago

How it works: reality How it should work to not waste embarked movement: expectations

Iamblichos commented 7 years ago

Okay, you're thinking what I thought you were. Man I dunno...that seems really strong. Let's see what @LoneGazebo and @ilteroi think. Is this what we want the UA to be?

Radost commented 7 years ago

It is as strong now if you use cavalry units though.

LoneGazebo commented 7 years ago

The problem is that the recent rewrite of the movement logic does not have a means of 'saving' unit moves as you move to embark/disembark. Correct me if I'm wrong, @ilteroi.

Iamblichos commented 7 years ago

I don't think it's doable in the sense he wants. Because the unit goes through a convert state change when going from land to water or vice-versa. It's fine when going from water to land because you usually have surplus, but from land to water there's no surplus to add to it.

Iamblichos commented 7 years ago

On the other hand, he's got the data moves cached, so if there is a way to subtract out its max moves in pToPlot->getDomain() from the cached move from pFromPlot->getDomain(), it might work.

Iamblichos commented 7 years ago

int iMovesLeft = iStartMoves - iMovementCost;

where

iStartMoves = iBaseMovesInCurrentDomain*GC.getMOVE_DENOMINATOR();

like this, iStartMoves are fixed so it can never subtract out its one MP to move to water from maxmoves in water.

LoneGazebo commented 7 years ago

Interesting. Sounds like you've got a theory. I think it'd be fine (Denmark is far from OP) to make the change.

ilteroi commented 7 years ago

deleted my last comment cause it was incorrect. but anyway i don't see an easy way to implement this as desired. what could possibly work though is 3/3 -> 5/6 -> 1/3 -> 3/6

Iamblichos commented 7 years ago

@ilteroi I think that's the best it's going to get.

And now that I think about it 3/3 -> 5/6 -> 1/3 -> 3/6 is actually consistent...it should NOT go 4/6, in my opinion, since you exhausted 1 MP going back to land, that seems a little unfair.

Radost commented 7 years ago

Knight, which is a generic unit, under the banner of Denmark fare better at pillaging than THE pillaging UU of Denmark by virtue of having 1 more movement point (and getting 1 more after upgrading to a tank, whereas UU loses 1 point on upgrade). To lesser extent it applies to all civs when city embarkation becomes available. It is a technical issue which affects the balance and makes "+x embarked movement" bonus a filler.

Iamblichos commented 7 years ago

Okay, so here's the skinny on this. @ilteroi and I discussed pretty thoroughly the impact of changing these to meet what the OP wants. First, any workaround spent on making this work beyond a hack, isn't worth the time necessary to book keep possibly two different domain moves just for one civ. It might be achievable, but it has an associated risk behind it. Secondly, and most importantly, we have some misgivings and see some conceptual problems of handing out more moves to a unit, than what its starting domain movements are. If you start in land, then the amount of start moves should be based on land and so forth. As it was presented in the OP, a land unit adjacent to water and able to embark, could achieve the same amount of movement (or better) than their counterpart ship units, which seems absurd.

Radost commented 7 years ago

What exactly are "counterpart" ship units to embarked ships? Again, cavalry can abuse it at full potential right now. Both infantry and cavalry (or any land unit in that regard) embark into the same ship, but for some reason a ship with horses has better embarkation mobility than an infantry ship. I guess they use horses for rowing, hence more movement points.

Iamblichos commented 7 years ago

Real ships I meant. It's consistent all the way around. Cavalry have more starting moves than infantry. The scenario you want, is artificial, it's pulling movement points out of thin air as if it started in another domain. I stand by what I said above.

Iamblichos commented 7 years ago

If Denmark needs some help, please let's do something else.

LoneGazebo commented 7 years ago

@Radost, @Iamblichos isn't arguing against you from a 'what should be' perspective - he's arguing against you from a 'what is possible' perspective. Work with him and pivot.