long instf_creature_fire_shot(struct Thing *creatng, long *param) { struct CreatureControl *cctrl; struct Thing *target; int i; TRACE_THING(creatng); cctrl = creature_control_get_from_thing(creatng); if (cctrl->targtng_idx <= 0) { if ((creatng->alloc_flags & TAlF_IsControlled) == 0) i = 4; else i = 1; } else if ((creatng->alloc_flags & TAlF_IsControlled) != 0) { target = thing_get(cctrl->targtng_idx); TRACE_THING(target); if (target->class_id == TCls_Object) i = 1; else i = 2; } else { target = thing_get(cctrl->targtng_idx); TRACE_THING(target); if (target->class_id == TCls_Object) i = 1; else if (target->owner == creatng->owner) i = 2; else i = 4; } if (cctrl->targtng_idx > 0) { target = thing_get(cctrl->targtng_idx); SYNCDBG(8,"The %s index %d fires %s at %s index %d",thing_model_name(creatng),(int)creatng->index,shot_code_name(*param),thing_model_name(target),(int)target->index); TRACE_THING(target); } else { target = NULL; SYNCDBG(8,"The %s index %d fires %s",thing_model_name(creatng),(int)creatng->index,shot_code_name(*param)); } creature_fire_shot(creatng, target, *param, 1, i); return 0; }
long instf_creature_fire_shot(struct Thing *creatng, long *param) { struct CreatureControl *cctrl; struct Thing *target; int i; TRACE_THING(creatng); cctrl = creature_control_get_from_thing(creatng); if (cctrl->targtng_idx <= 0) { if ((creatng->alloc_flags & TAlF_IsControlled) == 0) i = 4; else i = 1; } else if ((creatng->alloc_flags & TAlF_IsControlled) != 0) { target = thing_get(cctrl->targtng_idx); TRACE_THING(target); if (target->class_id == TCls_Object) i = 1; else i = 2; } else { target = thing_get(cctrl->targtng_idx); TRACE_THING(target); if (target->class_id == TCls_Object) i = 1; else if (target->owner == creatng->owner) i = 2; else i = 4; } if (cctrl->targtng_idx > 0) { target = thing_get(cctrl->targtng_idx); TRACE_THING(target); } else { target = NULL; } creature_fire_shot(creatng, target, *param, 1, i); return 0; }