updated fight function