Firstly, i'd make sure that you're properly null-checking the arrows before trying to pick them up. You're probably getting a ton of errors in your console at the moment, or would do if there were no addy arrows around.
Secondly, perhaps try changing your inCombat() method. You're currently checking if you're fighting, which is when you are attacking someone else. This is not what you want. Instead, perhaps try myPlayer().isUnderAttack()
Good luck
Apa