Does trace set result automatically? I don't think so (?). You ignore "you" (see trace_mode) but check the you pointer after the trace call, do you do that on purpose? You can use f.i. the variable trace_hit to check if the trace has hit anything at all and when you remove ignore_you from trace_mode, (you == null) means that you've hit a block.
"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual