* Trains a soldier's Psychic abilities after 1 month. */
| 463 | * Trains a soldier's Psychic abilities after 1 month. |
| 464 | */ |
| 465 | void Soldier::trainPsi() |
| 466 | { |
| 467 | _improvement = 0; |
| 468 | // -10 days - tolerance threshold for switch from anytimePsiTraining option. |
| 469 | // If soldier has psiskill -10..-1, he was trained 20..59 days. 81.7% probability, he was trained more that 30 days. |
| 470 | if (_currentStats.psiSkill < -10 + _rules->getMinStats().psiSkill) |
| 471 | _currentStats.psiSkill = _rules->getMinStats().psiSkill; |
| 472 | else if(_currentStats.psiSkill <= _rules->getMaxStats().psiSkill) |
| 473 | { |
| 474 | int max = _rules->getMaxStats().psiSkill + _rules->getMaxStats().psiSkill / 2; |
| 475 | _improvement = RNG::generate(_rules->getMaxStats().psiSkill, max); |
| 476 | } |
| 477 | else if(_currentStats.psiSkill <= (_rules->getStatCaps().psiSkill / 2)) |
| 478 | _improvement = RNG::generate(5, 12); |
| 479 | else if(_currentStats.psiSkill < _rules->getStatCaps().psiSkill) |
| 480 | _improvement = RNG::generate(1, 3); |
| 481 | _currentStats.psiSkill += _improvement; |
| 482 | if(_currentStats.psiSkill > 100) |
| 483 | _currentStats.psiSkill = 100; |
| 484 | } |
| 485 | |
| 486 | /** |
| 487 | * Trains a soldier's Psychic abilities after 1 day. |
no test coverage detected