22 #include <yaml-cpp/yaml.h> 26 enum SpecialAbility { SPECAB_NONE, SPECAB_EXPLODEONDEATH, SPECAB_BURNFLOOR, SPECAB_BURN_AND_EXPLODE };
32 int tu, stamina, health, bravery, reactions, firing, throwing, strength, psiStrength, psiSkill, melee;
34 UnitStats() : tu(0), stamina(0), health(0), bravery(0), reactions(0), firing(0), throwing(0), strength(0), psiStrength(0), psiSkill(0), melee(0) {};
35 UnitStats(
int tu_,
int stamina_,
int health_,
int bravery_,
int reactions_,
int firing_,
int throwing_,
int strength_,
int psiStrength_,
int psiSkill_,
int melee_) : tu(tu_), stamina(stamina_), health(health_), bravery(bravery_), reactions(reactions_), firing(firing_), throwing(throwing_), strength(strength_), psiStrength(psiStrength_), psiSkill(psiSkill_), melee(melee_) {};
36 UnitStats& operator+=(
const UnitStats& stats) { tu += stats.tu; stamina += stats.stamina; health += stats.health; bravery += stats.bravery; reactions += stats.reactions; firing += stats.firing; throwing += stats.throwing; strength += stats.strength; psiStrength += stats.psiStrength; psiSkill += stats.psiSkill; melee += stats.melee;
return *
this; }
37 UnitStats operator+(
const UnitStats& stats)
const {
return UnitStats(tu + stats.tu, stamina + stats.stamina, health + stats.health, bravery + stats.bravery, reactions + stats.reactions, firing + stats.firing, throwing + stats.throwing, strength + stats.strength, psiStrength + stats.psiStrength, psiSkill + stats.psiSkill, melee + stats.melee); }
38 UnitStats& operator-=(
const UnitStats& stats) { tu -= stats.tu; stamina -= stats.stamina; health -= stats.health; bravery -= stats.bravery; reactions -= stats.reactions; firing -= stats.firing; throwing -= stats.throwing; strength -= stats.strength; psiStrength -= stats.psiStrength; psiSkill -= stats.psiSkill; melee -= stats.melee;
return *
this; }
39 UnitStats operator-(
const UnitStats& stats)
const {
return UnitStats(tu - stats.tu, stamina - stats.stamina, health - stats.health, bravery - stats.bravery, reactions - stats.reactions, firing - stats.firing, throwing - stats.throwing, strength - stats.strength, psiStrength - stats.psiStrength, psiSkill - stats.psiSkill, melee - stats.melee); }
40 UnitStats operator-()
const {
return UnitStats(-tu, -stamina, -health, -bravery, -reactions, -firing, -throwing, -strength, -psiStrength, -psiSkill, -melee); }
41 void merge(
const UnitStats& stats) { tu = (stats.tu ? stats.tu : tu); stamina = (stats.stamina ? stats.stamina : stamina); health = (stats.health ? stats.health : health); bravery = (stats.bravery ? stats.bravery : bravery); reactions = (stats.reactions ? stats.reactions : reactions); firing = (stats.firing ? stats.firing : firing); throwing = (stats.throwing ? stats.throwing : throwing); strength = (stats.strength ? stats.strength : strength); psiStrength = (stats.psiStrength ? stats.psiStrength : psiStrength); psiSkill = (stats.psiSkill ? stats.psiSkill : psiSkill); melee = (stats.melee ? stats.melee : melee); };
48 double aimAndArmorMultiplier;
65 int _standHeight, _kneelHeight, _floatHeight;
66 std::vector<int> _deathSound;
67 int _value, _aggroSound, _moveSound;
68 int _intelligence, _aggression, _energyRecovery;
69 SpecialAbility _specab;
70 std::string _spawnUnit;
72 std::string _meleeWeapon, _psiWeapon;
73 std::vector<std::vector<std::string> > _builtInWeapons;
76 Unit(
const std::string &type);
80 void load(
const YAML::Node& node,
Mod *mod);
82 std::string getType()
const;
86 int getStandHeight()
const;
88 int getKneelHeight()
const;
90 int getFloatHeight()
const;
92 std::string getArmor()
const;
94 std::string getRace()
const;
96 std::string getRank()
const;
100 const std::vector<int> &getDeathSounds()
const;
102 int getMoveSound()
const;
104 int getIntelligence()
const;
106 int getAggression()
const;
108 int getSpecialAbility()
const;
110 std::string getSpawnUnit()
const;
112 int getAggroSound()
const;
114 int getEnergyRecovery()
const;
116 bool isLivingWeapon()
const;
118 std::string getMeleeWeapon()
const;
120 std::string getPsiWeapon()
const;
122 const std::vector<std::vector<std::string> > &getBuiltInWeapons()
const;
136 node[
"stamina"] = rhs.stamina;
137 node[
"health"] = rhs.health;
138 node[
"bravery"] = rhs.bravery;
139 node[
"reactions"] = rhs.reactions;
140 node[
"firing"] = rhs.firing;
141 node[
"throwing"] = rhs.throwing;
142 node[
"strength"] = rhs.strength;
143 node[
"psiStrength"] = rhs.psiStrength;
144 node[
"psiSkill"] = rhs.psiSkill;
145 node[
"melee"] = rhs.melee;
154 rhs.tu = node[
"tu"].as<
int>(rhs.tu);
155 rhs.stamina = node[
"stamina"].as<
int>(rhs.stamina);
156 rhs.health = node[
"health"].as<
int>(rhs.health);
157 rhs.bravery = node[
"bravery"].as<
int>(rhs.bravery);
158 rhs.reactions = node[
"reactions"].as<
int>(rhs.reactions);
159 rhs.firing = node[
"firing"].as<
int>(rhs.firing);
160 rhs.throwing = node[
"throwing"].as<
int>(rhs.throwing);
161 rhs.strength = node[
"strength"].as<
int>(rhs.strength);
162 rhs.psiStrength = node[
"psiStrength"].as<
int>(rhs.psiStrength);
163 rhs.psiSkill = node[
"psiSkill"].as<
int>(rhs.psiSkill);
164 rhs.melee = node[
"melee"].as<
int>(rhs.melee);
Contains all the game-specific static data that never changes throughout the game, like rulesets and resources.
Definition: Mod.h:87
Definition: Position.h:88
This struct holds some plain unit attribute data together.
Definition: Unit.h:30
Definition: BaseInfoState.cpp:40
Represents the static data for a unit that is generated on the battlescape, this includes: HWPs...
Definition: Unit.h:57