Yes it does, because recoil/draining etc is executed in Substitute's ```onTryPrimaryHit```. The damage is only calculated to be >0 in ```onTryPrimaryHit``` and is 0 everywhere else, so if that weren't the case there would be no healing/recoil at all