Move player killer_objnum to object.ctype.player_info

This commit is contained in:
Kp 2015-11-07 21:55:59 +00:00
parent 6037372cdf
commit 8d6949efa6
7 changed files with 11 additions and 11 deletions

View file

@ -87,6 +87,7 @@ struct reactor_static {
struct player_info
{
fix energy; // Amount of energy remaining.
objnum_t killer_objnum; // Who killed me.... (-1 if no one)
uint16_t vulcan_ammo;
array<uint8_t, MAX_SECONDARY_WEAPONS> secondary_ammo; // How much ammo of each type.
};

View file

@ -60,7 +60,6 @@ struct player : public prohibit_void_ptr<player>
sbyte level; // Current level player is playing. (must be signed for secret levels)
stored_laser_level laser_level; // Current level of the laser.
sbyte starting_level; // What level the player started on.
objnum_t killer_objnum; // Who killed me.... (-1 if no one)
#if defined(DXX_BUILD_DESCENT_I)
ubyte primary_weapon_flags; // bit set indicates the player has this weapon.
#elif defined(DXX_BUILD_DESCENT_II)

View file

@ -2069,7 +2069,7 @@ void apply_damage_to_player(const vobjptr_t playerobj, const cobjptridx_t killer
if (shields < 0)
{
get_local_player().killer_objnum = killer;
get_local_plrobj().ctype.player_info.killer_objnum = killer;
playerobj->flags |= OF_SHOULD_BE_DEAD;
#if defined(DXX_BUILD_DESCENT_II)

View file

@ -267,7 +267,6 @@ void init_player_stats_game(ubyte pnum)
Players[pnum].time_total = 0;
Players[pnum].hours_level = 0;
Players[pnum].hours_total = 0;
Players[pnum].killer_objnum = object_none;
Players[pnum].net_killed_total = 0;
Players[pnum].net_kills_total = 0;
Players[pnum].num_kills_level = 0;
@ -324,7 +323,7 @@ void init_player_stats_level(const secret_restore secret_flag)
get_local_player().hours_level = 0;
}
get_local_player().killer_objnum = object_none;
get_local_plrobj().ctype.player_info.killer_objnum = object_none;
get_local_player().num_kills_level = 0;
get_local_player().num_robots_level = count_number_of_robots();
@ -378,6 +377,7 @@ void init_player_stats_new_ship(ubyte pnum)
plrobj->shields = StartingShields;
auto &player_info = plrobj->ctype.player_info;
player_info.energy = INITIAL_ENERGY;
player_info.killer_objnum = object_none;
player_info.secondary_ammo = {{
static_cast<uint8_t>(2 + NDL - Difficulty_level)
}};
@ -451,7 +451,6 @@ void init_player_stats_new_ship(ubyte pnum)
#endif
}
Players[pnum].laser_level = granted_laser_level;
Players[pnum].killer_objnum = object_none;
Players[pnum].hostages_on_board = 0;
Players[pnum].primary_weapon_flags = HAS_LASER_FLAG;
Players[pnum].flags &= ~(PLAYER_FLAGS_QUAD_LASERS | PLAYER_FLAGS_CLOAKED | PLAYER_FLAGS_INVULNERABLE);

View file

@ -2819,7 +2819,7 @@ void multi_send_kill(const vobjptridx_t objnum)
int count = 0;
Assert(get_player_id(objnum) == Player_num);
auto killer_objnum = get_local_player().killer_objnum;
const auto killer_objnum = get_local_plrobj().ctype.player_info.killer_objnum;
count += 1;
multibuf[count] = Player_num; count += 1;

View file

@ -1505,11 +1505,12 @@ static void start_player_death_sequence(const vobjptr_t player)
if (get_local_player_secondary_ammo()[PROXIMITY_INDEX] < 12)
{
const auto is_bad_kill = []{
if (get_local_player().killer_objnum == get_local_player().objnum)
auto &lplr = get_local_player();
auto &lplrobj = get_local_plrobj();
const auto killer_objnum = lplrobj.ctype.player_info.killer_objnum;
if (killer_objnum == lplr.objnum)
/* Self kill */
return true;
auto &lplr = get_local_player();
const auto killer_objnum = lplr.killer_objnum;
if (killer_objnum == object_none)
/* Non-player kill */
return true;

View file

@ -478,7 +478,7 @@ static void state_player_to_player_rw(const fix pl_shields, const player *pl, pl
pl_rw->level = pl->level;
pl_rw->laser_level = pl->laser_level;
pl_rw->starting_level = pl->starting_level;
pl_rw->killer_objnum = pl->killer_objnum;
pl_rw->killer_objnum = pl_info.killer_objnum;
pl_rw->primary_weapon_flags = pl->primary_weapon_flags;
pl_rw->secondary_weapon_flags = 0;
pl_rw->vulcan_ammo = pl_info.vulcan_ammo;
@ -528,7 +528,7 @@ static void state_player_rw_to_player(const player_rw *pl_rw, player *pl, player
pl->level = pl_rw->level;
pl->laser_level = stored_laser_level(pl_rw->laser_level);
pl->starting_level = pl_rw->starting_level;
pl->killer_objnum = pl_rw->killer_objnum;
pl_info.killer_objnum = pl_rw->killer_objnum;
pl->primary_weapon_flags = pl_rw->primary_weapon_flags;
pl_info.vulcan_ammo = pl_rw->vulcan_ammo;
for (i = 0; i < MAX_SECONDARY_WEAPONS; i++)