void WidowDisrupt(edict_t *self) { vec3_t start; vec3_t dir; vec3_t forward, right; float len; if (!self) { return; } AngleVectors(self->s.angles, forward, right, NULL); G_ProjectSource(self->s.origin, monster_flash_offset[MZ2_WIDOW_DISRUPTOR], forward, right, start); VectorSubtract(self->pos1, self->enemy->s.origin, dir); len = VectorLength(dir); if (len < 30) { VectorSubtract(self->pos1, start, dir); VectorNormalize(dir); monster_fire_tracker(self, start, dir, 20, 500, self->enemy, MZ2_WIDOW_DISRUPTOR); } else { PredictAim(self->enemy, start, 1200, true, 0, dir, NULL); monster_fire_tracker(self, start, dir, 20, 1200, NULL, MZ2_WIDOW_DISRUPTOR); } }
void WidowDisrupt (edict_t *self) { vec3_t start; vec3_t dir; vec3_t forward, right; float len; AngleVectors (self->s.angles, forward, right, NULL); G_ProjectSource (self->s.origin, monster_flash_offset[MZ2_WIDOW_DISRUPTOR], forward, right, start); VectorSubtract (self->pos1, self->enemy->s.origin, dir); len = VectorLength (dir); if (len < 30) { // if ((g_showlogic) && (g_showlogic->value)) // gi.dprintf ("target locked - dist %2.2f\n", len); // calc direction to where we targeted VectorSubtract (self->pos1, start, dir); VectorNormalize (dir); monster_fire_tracker(self, start, dir, 20, 500, self->enemy, MZ2_WIDOW_DISRUPTOR); } else { // if ((g_showlogic) && (g_showlogic->value)) // gi.dprintf ("target missed - dist %2.2f\n", len); PredictAim (self->enemy, start, 1200, true, 0, dir, NULL); // VectorSubtract (self->enemy->s.origin, start, dir); // VectorNormalize (dir); monster_fire_tracker(self, start, dir, 20, 1200, NULL, MZ2_WIDOW_DISRUPTOR); } }