Oh, I see. I missed that this was calling AttackTurreted specifically.

Could you please move HasValidTarget up to AttackBase? I'd like to fix #3659 by adding an extra check to that function, but that will only be useful if it applies to all the Attack* traits. If you could do that that my comment above about `Requires<AttackBaseInfo>` will also be valid.