Ну так что тогда про меня говорить?

По идее план у меня был бы такой. Параметры оружия описаны в VH_DBASE.C - но это не интересно, это все правится WUT, и результатов 0. Параметры ракеты - в WN_DBASE.C, но это тоже малоинтересно, M270_227MM_ROCKET практически аналогична ракете Града.

В общем, я бы посмотрел в
WN_MOVE.C:

Похоже, движение неуправляемых ракет и снарядов считается вот здесь, причем ошибка сразу же заложена.

#if !DEBUG_MODULE_DISABLE_ARTILLERY_ERROR

if (weapon_database[raw->mob.sub_type].max_range_error_ratio > 0.0)
{
int
seed;

float
h_error;

seed = get_client_server_entity_random_number_seed (en);

h_error = h_vel * get_delta_time () * weapon_database[raw->mob.sub_type].max_range_error_ratio;

new_position->x += h_error * sfrand1x (&seed);
new_position->z += h_error * sfrand1x (&seed);
}

#endif

Я бы для начала как раз этот ifdef поставил в FALSE и посмотрел тем самым, дело в динамике полета или цель сразу неправильно расчитана. На самом деле, я припоминаю, что этому отклонению max_range_error_ratio можно уже в WUT поставить очень малое значение, и вроде это не помогало. Если конечно, для ракеты Града эта ошибка вычисляется больше (или например чаще), чем для для MLRS, все было бы очень просто. Я бы поставил отладочную печать в случае ракет MLRS и Град

Далее можно попробовать исключить проблемы связанные с параметрами ракет (которые в WUT таки не правятся), сделать Град на время идентичным MLRS.