* Trains a soldier's Psychic abilities after 1 day. * (anytimePsiTraining option) */
| 488 | * (anytimePsiTraining option) |
| 489 | */ |
| 490 | void 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 |
no test coverage detected