Move guided missile logic to helper function

Fix original bug that tested wrong field for guided missile signature
check.
This commit is contained in:
Kp 2015-09-15 02:48:03 +00:00
parent 3823f0f414
commit ff8aab4694

View file

@ -1472,6 +1472,18 @@ void Flare_create(const vobjptridx_t obj)
#define HOMING_MISSILE_SCALE 8 #define HOMING_MISSILE_SCALE 8
#elif defined(DXX_BUILD_DESCENT_II) #elif defined(DXX_BUILD_DESCENT_II)
#define HOMING_MISSILE_SCALE 16 #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 #endif
//-------------------------------------------------------------------- //--------------------------------------------------------------------
@ -1528,7 +1540,7 @@ void Laser_do_weapon_sequence(const vobjptridx_t obj)
#if defined(DXX_BUILD_DESCENT_I) #if defined(DXX_BUILD_DESCENT_I)
if (Weapon_info[get_weapon_id(obj)].homing_flag) if (Weapon_info[get_weapon_id(obj)].homing_flag)
#elif defined(DXX_BUILD_DESCENT_II) #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 #endif
{ {
vms_vector vector_to_object, temp_vec; vms_vector vector_to_object, temp_vec;