From 8d6949efa60f4e141bba1a006aade0a52eddf0a6 Mon Sep 17 00:00:00 2001 From: Kp Date: Sat, 7 Nov 2015 21:55:59 +0000 Subject: [PATCH] Move player killer_objnum to object.ctype.player_info --- common/main/object.h | 1 + common/main/player.h | 1 - similar/main/collide.cpp | 2 +- similar/main/gameseq.cpp | 5 ++--- similar/main/multi.cpp | 2 +- similar/main/object.cpp | 7 ++++--- similar/main/state.cpp | 4 ++-- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/common/main/object.h b/common/main/object.h index 1ff2504f9..dab29ed94 100644 --- a/common/main/object.h +++ b/common/main/object.h @@ -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 secondary_ammo; // How much ammo of each type. }; diff --git a/common/main/player.h b/common/main/player.h index d08d0f8bf..a54da4b89 100644 --- a/common/main/player.h +++ b/common/main/player.h @@ -60,7 +60,6 @@ struct player : public prohibit_void_ptr 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) diff --git a/similar/main/collide.cpp b/similar/main/collide.cpp index bd24e8c6d..4c9e2051a 100644 --- a/similar/main/collide.cpp +++ b/similar/main/collide.cpp @@ -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) diff --git a/similar/main/gameseq.cpp b/similar/main/gameseq.cpp index fd3040b82..7a6e2edbf 100644 --- a/similar/main/gameseq.cpp +++ b/similar/main/gameseq.cpp @@ -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(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); diff --git a/similar/main/multi.cpp b/similar/main/multi.cpp index 8e3ffe2df..03b1b77bf 100644 --- a/similar/main/multi.cpp +++ b/similar/main/multi.cpp @@ -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; diff --git a/similar/main/object.cpp b/similar/main/object.cpp index 2f8a4b401..3ba5033fc 100644 --- a/similar/main/object.cpp +++ b/similar/main/object.cpp @@ -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; diff --git a/similar/main/state.cpp b/similar/main/state.cpp index 368666827..1b85ba93c 100644 --- a/similar/main/state.cpp +++ b/similar/main/state.cpp @@ -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++)