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

Method Soldier

src/Savegame/Soldier.cpp:43–77  ·  view source on GitHub ↗

* Initializes a new soldier, either blank or randomly generated. * @param rules Soldier ruleset. * @param armor Soldier armor. * @param names List of name pools for soldier generation. * @param id Pointer to unique soldier id for soldier generation. */

Source from the content-addressed store, hash-verified

41 * @param id Pointer to unique soldier id for soldier generation.
42 */
43Soldier::Soldier(RuleSoldier *rules, Armor *armor, const std::vector<SoldierNamePool*> *names, int id) : _name(L""), _id(id), _improvement(0), _rules(rules), _initialStats(), _currentStats(), _rank(RANK_ROOKIE), _craft(0), _gender(GENDER_MALE), _look(LOOK_BLONDE), _missions(0), _kills(0), _recovery(0), _recentlyPromoted(false), _psiTraining(false), _armor(armor), _equipmentLayout(), _death(0)
44{
45 if (names != 0)
46 {
47 UnitStats minStats = rules->getMinStats();
48 UnitStats maxStats = rules->getMaxStats();
49
50 _initialStats.tu = RNG::generate(minStats.tu, maxStats.tu);
51 _initialStats.stamina = RNG::generate(minStats.stamina, maxStats.stamina);
52 _initialStats.health = RNG::generate(minStats.health, maxStats.health);
53 _initialStats.bravery = RNG::generate(minStats.bravery/10, maxStats.bravery/10)*10;
54 _initialStats.reactions = RNG::generate(minStats.reactions, maxStats.reactions);
55 _initialStats.firing = RNG::generate(minStats.firing, maxStats.firing);
56 _initialStats.throwing = RNG::generate(minStats.throwing, maxStats.throwing);
57 _initialStats.strength = RNG::generate(minStats.strength, maxStats.strength);
58 _initialStats.psiStrength = RNG::generate(minStats.psiStrength, maxStats.psiStrength);
59 _initialStats.melee = RNG::generate(minStats.melee, maxStats.melee);
60 _initialStats.psiSkill = minStats.psiSkill;
61
62 _currentStats = _initialStats;
63
64 if (!names->empty())
65 {
66 size_t nationality = RNG::generate(0, names->size()-1);
67 _name = names->at(nationality)->genName(&_gender);
68 _look = (SoldierLook)names->at(nationality)->genLook(4); // Once we add the ability to mod in extra looks, this will need to reference the ruleset for the maximum amount of looks.
69 }
70 else
71 {
72 _name = L"";
73 _gender = (SoldierGender)RNG::generate(0, 1);
74 _look = (SoldierLook)RNG::generate(0,3);
75 }
76 }
77}
78
79/**
80 *

Callers

nothing calls this directly

Calls 6

generateFunction · 0.85
getMinStatsMethod · 0.80
getMaxStatsMethod · 0.80
genNameMethod · 0.80
genLookMethod · 0.80
emptyMethod · 0.45

Tested by

no test coverage detected