From 653a705e90ce2e52f6d2ab294cf0e35b1b3cee82 Mon Sep 17 00:00:00 2001 From: Kp Date: Wed, 21 Aug 2019 02:54:08 +0000 Subject: [PATCH] Test that guided missile's parent is still a player If a guided missile is in flight, and its owning player dies, the player's type is changed to OBJ_GHOST. The damage that killed the player should have put the guided missile into autonomous mode, so for this purpose, return that the missile is not actively guided. Reported-by: Johnsondr80 --- similar/main/laser.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/similar/main/laser.cpp b/similar/main/laser.cpp index 77a2094da..25f98668c 100644 --- a/similar/main/laser.cpp +++ b/similar/main/laser.cpp @@ -1579,7 +1579,10 @@ static bool is_active_guided_missile(d_level_unique_object_state &LevelUniqueObj if (obj->ctype.laser_info.parent_type != OBJ_PLAYER) return false; auto &vcobjptr = LevelUniqueObjectState.get_objects().vcptr; - const auto pnum = get_player_id(vcobjptr(obj->ctype.laser_info.parent_num)); + auto &parent_obj = *vcobjptr(obj->ctype.laser_info.parent_num); + if (parent_obj.type != OBJ_PLAYER) + return false; + const auto pnum = get_player_id(parent_obj); return LevelUniqueObjectState.Guided_missile.get_player_active_guided_missile(pnum) == obj; } #endif