From ff8aab4694e791061be60888a824afd43a0eed39 Mon Sep 17 00:00:00 2001 From: Kp Date: Tue, 15 Sep 2015 02:48:03 +0000 Subject: [PATCH] Move guided missile logic to helper function Fix original bug that tested wrong field for guided missile signature check. --- similar/main/laser.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/similar/main/laser.cpp b/similar/main/laser.cpp index bf717fcfd..7c7af667a 100644 --- a/similar/main/laser.cpp +++ b/similar/main/laser.cpp @@ -1472,6 +1472,18 @@ void Flare_create(const vobjptridx_t obj) #define HOMING_MISSILE_SCALE 8 #elif defined(DXX_BUILD_DESCENT_II) #define HOMING_MISSILE_SCALE 16 + +static bool is_any_guided_missile(const vcobjptr_t obj) +{ + if (get_weapon_id(obj) != GUIDEDMISS_ID) + return false; + if (obj->ctype.laser_info.parent_type != OBJ_PLAYER) + return false; + const auto pnum = get_player_id(vcobjptr(obj->ctype.laser_info.parent_num)); + if (obj != Guided_missile[pnum]) + return false; + return obj->signature == Guided_missile_sig[pnum]; +} #endif //-------------------------------------------------------------------- @@ -1528,7 +1540,7 @@ void Laser_do_weapon_sequence(const vobjptridx_t obj) #if defined(DXX_BUILD_DESCENT_I) if (Weapon_info[get_weapon_id(obj)].homing_flag) #elif defined(DXX_BUILD_DESCENT_II) - if (Weapon_info[get_weapon_id(obj)].homing_flag && !(get_weapon_id(obj)==GUIDEDMISS_ID && obj->ctype.laser_info.parent_type==OBJ_PLAYER && obj==Guided_missile[get_player_id(&Objects[obj->ctype.laser_info.parent_num])] && obj->signature==Guided_missile[Objects[obj->ctype.laser_info.parent_num].id]->signature)) + if (Weapon_info[get_weapon_id(obj)].homing_flag && !is_any_guided_missile(obj)) #endif { vms_vector vector_to_object, temp_vec;