Reset values that should have been in the savegame, but are not
This commit is contained in:
parent
171e87a1e7
commit
f62ed80205
|
@ -546,7 +546,9 @@ static void state_player_rw_to_player(const player_rw *pl_rw, player *pl, player
|
||||||
pl->time_total = pl_rw->time_total;
|
pl->time_total = pl_rw->time_total;
|
||||||
pl_info.cloak_time = pl_rw->cloak_time;
|
pl_info.cloak_time = pl_rw->cloak_time;
|
||||||
pl_info.invulnerable_time = pl_rw->invulnerable_time;
|
pl_info.invulnerable_time = pl_rw->invulnerable_time;
|
||||||
#if defined(DXX_BUILD_DESCENT_II)
|
#if defined(DXX_BUILD_DESCENT_I)
|
||||||
|
pl_info.KillGoalCount = 0;
|
||||||
|
#elif defined(DXX_BUILD_DESCENT_II)
|
||||||
pl_info.KillGoalCount = pl_rw->KillGoalCount;
|
pl_info.KillGoalCount = pl_rw->KillGoalCount;
|
||||||
#endif
|
#endif
|
||||||
pl_info.net_killed_total = pl_rw->net_killed_total;
|
pl_info.net_killed_total = pl_rw->net_killed_total;
|
||||||
|
@ -1704,11 +1706,20 @@ int state_restore_all_sub(const char *filename, const secret_restore secret)
|
||||||
else
|
else
|
||||||
PHYSFS_read(fp, &Automap_visited[0], sizeof(ubyte), MAX_SEGMENTS_ORIGINAL);
|
PHYSFS_read(fp, &Automap_visited[0], sizeof(ubyte), MAX_SEGMENTS_ORIGINAL);
|
||||||
|
|
||||||
|
/* These values were never saved, so coerce them to a sane default.
|
||||||
|
*/
|
||||||
|
pl_info.Fusion_charge = 0;
|
||||||
|
pl_info.Player_eggs_dropped = false;
|
||||||
|
pl_info.FakingInvul = false;
|
||||||
|
pl_info.lavafall_hiss_playing = false;
|
||||||
|
pl_info.missile_gun = 0;
|
||||||
|
pl_info.Last_bumped_local_player = 0;
|
||||||
// Restore hacked up weapon system stuff.
|
// Restore hacked up weapon system stuff.
|
||||||
auto &player_info = plrobj.ctype.player_info;
|
auto &player_info = plrobj.ctype.player_info;
|
||||||
auto &Next_laser_fire_time = player_info.Next_laser_fire_time;
|
auto &Next_laser_fire_time = player_info.Next_laser_fire_time;
|
||||||
auto &Next_missile_fire_time = player_info.Next_missile_fire_time;
|
auto &Next_missile_fire_time = player_info.Next_missile_fire_time;
|
||||||
player_info.Auto_fire_fusion_cannon_time = 0;
|
player_info.Auto_fire_fusion_cannon_time = 0;
|
||||||
|
player_info.Next_flare_fire_time = GameTime64;
|
||||||
Next_laser_fire_time = GameTime64;
|
Next_laser_fire_time = GameTime64;
|
||||||
Next_missile_fire_time = GameTime64;
|
Next_missile_fire_time = GameTime64;
|
||||||
|
|
||||||
|
@ -1825,16 +1836,16 @@ int state_restore_all_sub(const char *filename, const secret_restore secret)
|
||||||
First_secret_visit = 0;
|
First_secret_visit = 0;
|
||||||
|
|
||||||
player_info.Omega_charge = 0;
|
player_info.Omega_charge = 0;
|
||||||
|
/* The savegame does not record this, so pick a value. Be
|
||||||
|
* nice to the player: let the cannon recharge immediately.
|
||||||
|
*/
|
||||||
|
player_info.Omega_recharge_delay = 0;
|
||||||
if (version >= 22)
|
if (version >= 22)
|
||||||
{
|
{
|
||||||
auto i = PHYSFSX_readSXE32(fp, swap);
|
auto i = PHYSFSX_readSXE32(fp, swap);
|
||||||
if (secret != secret_restore::survived)
|
if (secret != secret_restore::survived)
|
||||||
{
|
{
|
||||||
player_info.Omega_charge = i;
|
player_info.Omega_charge = i;
|
||||||
/* The savegame does not record this, so pick a value. Be
|
|
||||||
* nice to the player: let the cannon recharge immediately.
|
|
||||||
*/
|
|
||||||
player_info.Omega_recharge_delay = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue