Move player killer_objnum to object.ctype.player_info
This commit is contained in:
parent
6037372cdf
commit
8d6949efa6
|
@ -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.
|
||||
};
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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++)
|
||||
|
|
Loading…
Reference in a new issue