Skip to content

Commit 53c6df2

Browse files
committed
- Fixed bug in soldier saving.
- Fixed bug in soldier/craft transfers.
1 parent 9e83b1f commit 53c6df2

3 files changed

Lines changed: 22 additions & 14 deletions

File tree

‎src/Savegame/Soldier.cpp‎

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -93,17 +93,18 @@ void Soldier::load(const YAML::Node &node)
9393
std::string name;
9494
node["name"] >> name;
9595
_name = Language::utf8ToWstr(name);
96-
node["tu"] >> _currentStats.tu;
97-
node["stamina"] >> _currentStats.stamina;
98-
node["health"] >> _currentStats.health;
99-
node["bravery"] >> _currentStats.bravery;
100-
node["reactions"] >> _currentStats.reactions;
101-
node["firing"] >> _currentStats.firing;
102-
node["throwing"] >> _currentStats.throwing;
103-
node["strength"] >> _currentStats.strength;
104-
node["psiStrength"] >> _currentStats.psiStrength;
105-
node["psiSkill"] >> _currentStats.psiSkill;
106-
node["melee"] >> _currentStats.melee;
96+
node["tu"] >> _initialStats.tu;
97+
node["stamina"] >> _initialStats.stamina;
98+
node["health"] >> _initialStats.health;
99+
node["bravery"] >> _initialStats.bravery;
100+
node["reactions"] >> _initialStats.reactions;
101+
node["firing"] >> _initialStats.firing;
102+
node["throwing"] >> _initialStats.throwing;
103+
node["strength"] >> _initialStats.strength;
104+
node["psiStrength"] >> _initialStats.psiStrength;
105+
node["psiSkill"] >> _initialStats.psiSkill;
106+
node["melee"] >> _initialStats.melee;
107+
_currentStats = _initialStats;
107108
node["rank"] >> a;
108109
_rank = (SoldierRank)a;
109110
node["gender"] >> a;

‎src/Savegame/Transfer.cpp‎

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ namespace OpenXcom
3131
* Initializes a transfer.
3232
* @param hours Hours in-transit.
3333
*/
34-
Transfer::Transfer(int hours) : _hours(hours), _soldier(0), _craft(0), _itemId(""), _itemQty(0), _scientists(0), _engineers(0)
34+
Transfer::Transfer(int hours) : _hours(hours), _soldier(0), _craft(0), _itemId(""), _itemQty(0), _scientists(0), _engineers(0), _delivered(false)
3535
{
3636
}
3737

@@ -40,8 +40,11 @@ Transfer::Transfer(int hours) : _hours(hours), _soldier(0), _craft(0), _itemId("
4040
*/
4141
Transfer::~Transfer()
4242
{
43-
delete _soldier;
44-
delete _craft;
43+
if (!_delivered)
44+
{
45+
delete _soldier;
46+
delete _craft;
47+
}
4548
}
4649

4750
/**
@@ -76,6 +79,7 @@ void Transfer::load(const YAML::Node &node, Base *base, Ruleset *rule)
7679
{
7780
*pName >> _engineers;
7881
}
82+
node["delivered"] >> _delivered;
7983
}
8084

8185
/**
@@ -109,6 +113,7 @@ void Transfer::save(YAML::Emitter &out) const
109113
{
110114
out << YAML::Key << "engineers" << YAML::Value << _engineers;
111115
}
116+
out << YAML::Key << "delivered" << YAML::Value << _delivered;
112117
out << YAML::EndMap;
113118
}
114119

@@ -280,6 +285,7 @@ void Transfer::advance(Base *base)
280285
{
281286
base->setEngineers(base->getEngineers() + _engineers);
282287
}
288+
_delivered = true;
283289
}
284290
}
285291

‎src/Savegame/Transfer.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class Transfer
4646
Craft *_craft;
4747
std::string _itemId;
4848
int _itemQty, _scientists, _engineers;
49+
bool _delivered;
4950
public:
5051
/// Creates a new transfer.
5152
Transfer(int hours);

0 commit comments

Comments
 (0)