Note #1: This information probably will not make much sence if you unfamiliar with the trace scripting.
I found the way to change a bullet/particle power directly through fraction traceresult. The problem is that the [power | fraction] dependence are nonlinear.
Quick question, what is TR_flFraction (and the other stuff for that matter). I haven't had much experience with trace_line() and would appreciate a quick explanation .
It's a trace result data member. Probably represents a tracing time in some units. To reproduce hit effect without any damage you can set it to high value for example to 100.0.
flFraction is a variable within this TraceResult structure that tells you how far the trace went before it hit something. For example if you are tracing between 2 points that are 100 units apart and TraceLine returns with flFraction = 0.75 then you know that 3/4 of the way from the start point to the end point something was in the way.
So, the reason that all TraceLine codes assume that you didn't hit anything if flFraction is 1.0, is because that means that the trace made it 100% of the way before hitting anything (aka, it never hit anything).