MCPcopy Create free account
hub / github.com/OpenXcom/OpenXcom / trainPsi1Day

Method trainPsi1Day

src/Savegame/Soldier.cpp:490–516  ·  view source on GitHub ↗

* Trains a soldier's Psychic abilities after 1 day. * (anytimePsiTraining option) */

Source from the content-addressed store, hash-verified

488 * (anytimePsiTraining option)
489 */
490void Soldier::trainPsi1Day()
491{
492 if (!_psiTraining)
493 {
494 _improvement = 0;
495 return;
496 }
497
498 if (_currentStats.psiSkill > 0) // yes, 0. _rules->getMinStats().psiSkill was wrong.
499 {
500 if (8 * 100 >= _currentStats.psiSkill * RNG::generate(1, 100) && _currentStats.psiSkill < _rules->getStatCaps().psiSkill)
501 {
502 ++_improvement;
503 ++_currentStats.psiSkill;
504 }
505 }
506 else if (_currentStats.psiSkill < _rules->getMinStats().psiSkill)
507 {
508 if (++_currentStats.psiSkill == _rules->getMinStats().psiSkill) // initial training is over
509 {
510 _improvement = _rules->getMaxStats().psiSkill + RNG::generate(0, _rules->getMaxStats().psiSkill / 2);
511 _currentStats.psiSkill = _improvement;
512 }
513 }
514 else // minStats.psiSkill <= 0 && _currentStats.psiSkill == minStats.psiSkill
515 _currentStats.psiSkill -= RNG::generate(30, 60); // set initial training from 30 to 60 days
516}
517
518/**
519 * returns whether or not the unit is in psi training

Callers 1

time1DayMethod · 0.80

Calls 4

generateFunction · 0.85
getStatCapsMethod · 0.80
getMinStatsMethod · 0.80
getMaxStatsMethod · 0.80

Tested by

no test coverage detected