Multiple-Heals Confusion

Bleser

Prince
Joined
Jun 23, 2002
Messages
445
Location
USA
Hello!

I've been playing Civ VI since the day it came out and love it even though it has its ups and downs. This community has served me well in solving mysteries about how the game works (and all the way back o Civ III when I started the Civ Franchise).

One mystery I have yet to solve (through searching as well) is the mystery of "multiple heals". I just can't figure out the formula.

I get that:
  • Healing in enemy territory = +5 HP per turn
  • Healing in neutral territory = +10 HP per turn
  • Healing in friendly territory = +15 HP per turn
  • Healing in a city = +20 HP per turn
What I don't understand is when I see a unit heal by each value above multiple times per turn, sometimes three or four iterations. i.e. the animation is +10, +10, +10 on one unit for one turn. There are no medics around or anything.

What is causing this? What is the formula so I can plan to take advantage? Thanks!
 
Are they actually going up by +30 in a single turn?

Sometimes if a unit isn't in focus the floating text is still queued and appears the next time you see the unit, giving the illusion that it heals multiple times.
 
Thanks @TheMarshmallowBear, and I know what you are referring to with respect to animations, but that is not what is going on here - I can see the same unit in one turn heal multiple times; the health bar jumping up with each iteration.
 
Thanks @TheMarshmallowBear, and I know what you are referring to with respect to animations, but that is not what is going on here - I can see the same unit in one turn heal multiple times; the health bar jumping up with each iteration.
I have seen it and am curious as well. I have never studied it. I think I notice it happening after a unit has been fortified/on alert for some time then gets into combat, although this may be completely imaginary.
 
I've noticed the same from time to time, some unit that could use maybe two turns stationary so I just skip turn, then it's good for the next turn.
 
I've also noticed this. One of my heavily damaged units (in the red) was inexplicably healed multiple times in one turn to full health. I didn't complain, but I was assuming it was due to one of the mods I had installed.
 
Yeah, I see no mention of this anywhere so maybe it is bug. But I do see it in every game - sometimes for me, sometimes for my enemy. If it isn't a bug, I would love to know the mechanics.
 
it appears to be a random bug [...] we tend to highlight bugs that are bad not good.
Yeah, I see no mention of this anywhere so maybe it is bug. But I do see it in every game
Report the bug. So many players lament, the game is too easy, is boring ...
In the youtube videos I often wondered why the barbs & AI units are dying like flies in the light of the human super heroes ... no wonder ;)
 
If it isn't a bug, I would love to know the mechanics.
For better understanding the mechanics, I would first check for correlation of the multiple healings with the different turn phases of the human player.

I'll have a look into this when we have a stable code base - ie. after the final patch after the release of the 'complete edition'.

In civ4 I used this entry points into different stages of the human player turn:
Spoiler :

def beginTurn(iGameTurn, iPlayer):
'called FROM onBeginPlayerTurn(self, argsList) at the beginning of a players turn'

def endTurn(iGameTurn, iPlayer):
'called FROM onEndPlayerTurn(self, argsList) at the end of a players turn'

def checkTurn(iGameTurn):
'called FROM onBeginGameTurn(self, argsList) at the beginning of the end of each turn'
"""Check once per turn and execute only the (single) human"""

def allEndTurn(iGameTurn):
'called FROM onEndGameTurn(self, argsList) at the end of the end of each turn'


Something like this could be used to print data of all units into PythonDbg.log (and so showing the differences between the healing in the stages above):
Spoiler :

Code:
                        iNumUnits = pPlayer.getNumUnits()
                        iUnit = 0
                        while iUnit < iNumUnits:
                            pUnit = pPlayer.getUnit(iUnit)
                            if not pUnit.isNone():
                                iDomainType = pUnit.getDomainType()
                                if iDomainType == 0:     sAppendix = "   naval "
                                elif iDomainType == 1:   sAppendix = "   AIR "
                                elif iDomainType == 2:   sAppendix = "    "          # land

                                if pUnit.getDamage():    sAppendix = sAppendix + "   w%s" % pUnit.getDamage()

                                print(   "%s~ [%s,%s] %s (%s)%s-%s: %s     Exp%s L%s     F%s %s %s" %
                                         ( iUnit, pUnit.getX(), pUnit.getY(), pUnit.getName(), pUnit.isGroupHead(),
                                           pUnit.getGroupID(), pUnit.getID(), pUnit.getMoves(), pUnit.getExperience (), pUnit.getLevel(),
                                           pUnit.getFortifyTurns(), gc.getUnitAIInfo(pUnit.getUnitAIType()).getDescription(), sAppendix )   )
                            iUnit += 1
 
Top Bottom