There might be something wrong with reports atm.
Our testing file gives Nami 0 vitality from the beginning. If you set her to rest and go to the next day, the next day log will have two events about her. One will give +70 vitality, another one about -60. And the resulting vitality will be about 80 if you look at her stats.
Two events happen because we mistakenly have two places which could restore vitality.
if self.AP > 0:
if self.health < 90:
txt += "She had some strength left left over today so she took some time to heal her wounds. \n"
self.health += self.AP*2
self.vitality += self.AP*4
else:
txt += "She had some strength left over today so she spent some time taking a break and having fun. \n"
self.joy += self.AP
self.vitality += self.AP * 5
and
while self.worker.AP and not all([(self.worker.vitality + self.workermod.get('vitality', 0) >= self.worker.get_max("vitality") - 50),
(self.worker.health + self.workermod.get('health', 0) >= self.worker.get_max('health') - 5)]):
self.loggs('health', randint(2, 3))
self.loggs('vitality', randint(35, 40))
self.loggs('mp', randint(1, 3))
self.loggs('joy', randint(1, 2))
self.worker.AP -= 1
But it's not the point. Even if these events work one after another, there is no way for self.vitality += self.AP * 5 to give -60, and there is no way for 70-60=80, nor 70+60=80. And she doesn't even have any special traits with effects.