Собсно, простое решение такое:
Нужно всего-лишь прописать в методе ImpactEffect( trace_t &traceHit ) твоего оружия такой вот код
code:
if ( ImpactWater( traceHit.startpos, traceHit.endpos ) )
return;
UTIL_ImpactTrace( &traceHit, DMG_SLASH);
Здесь ключевую роль играет
DMG_SLASH, ибо этот тип повреждения создает "резанные" декали.
После этих изменений будут нормальные "резанные" декали на статике, но на некоторых моделях (с крупными полигонами) появляются артефакты. Это связано, как я понял, с генерацией текстурных координат. По-хорошему они клампится должны (как на следах от пуль), а они почемуто репитятся и вместо одной декали получается полигон, мощеный этими декалями. Эту проблему еще предстоит решить...
Для того, чтобы менять декаль в зависимости от типа поверхности, нужно идти и редактировать метод
CBaseEntity:
amageDecal( int bitsDamageType, int gameMaterial )
Соответствие имени и текстуры декали ищим в скрипте decals.txt. Вроде все... Наслаждайтесь!
UPD:
Все, нашел в чем проблема размножения декалей. Действительно, в текстуре не был выставлен кламп. Т.е. нужно как-нибудь ( например VTFEdit подойдет ) отредактировать файлы manhackcut.vtf, manhackcut2.vtf, manhackcut3.vtf и поставить в них опции Clamp S и Clamp T.