better implementation of player firing