how about changing
(rand() >= 0.5 || agent->cur_blow.damage_before_soak <= 15.0)
-> strike2 is played instead of strike3 (short stagger instead of long)
to
(victim_is_not_doing_attack_animation || agent->cur_blow.damage_before_soak <= 15.0)
-> strike2 is played instead of strike3 (short stagger instead of long)
So the random component(50%) is replaced by the condition that the target is caught "offguard" and hit during one of his attacks. This would give polearms the non-random ability to cause a stagger on a successful interception while forbidding polestagger on a defending agent.
No, even worse than random polestagger is polestagger of which you exactly know when it happens. I wouldn't even have the slightest chance against Phyrex with this. You feint, he chamber attempts your feint, hits you and then immediately does a stab cause he knows that you'll get staggered. Please add a random component to this. Do the 50% on top of the 'during an attack thing'.
Or even better, remove it altogether, there is just no need for it.
How does 'victim_is_not_doing_attack_animation' mean that someone should be hit during one of his attacks by the way. I can't help but read 'not doing attack'.