public void retreating() {
		if (isHitByOpponent()) {
			setState(STATE_DEFENDING, "I've been shot by an opponent while retreating");
			return;
		}
		if (getDistanceToTarget() > SEEKING_TO_ATTACKING_DISTANCE) {
			setState(STATE_SEEKING, "distance to " + target + " is outside attacking distance while retreating");
			return;
		} else if (isReadyToFire()) {
			setState(STATE_ATTACKING, "gun has un-jammed or obtained bullets while retreating");
			return;
		}
		evadeTarget();
	}