boolean shootDroid(JSONObject action, int turnsLeft){
	int droidLevel = 1; // TODO
	if(primaryWeapon.equals("droid")){
	    droidLevel = primaryWeaponLevel;
	}
	else if(secondaryWeapon.equals("droid")){
	    droidLevel = secondaryWeaponLevel;
	}
	else {
	    Debug.warn("User '" + username
			       + "' attempted to shoot the droid, but doesn't have it");
	    return false;
	}
	int range = 3;
	if(droidLevel == 2) {range = 4;}
	if(droidLevel == 3) {range = 5;} // replicated here for more friendly error messages
	try {
	    JSONArray directionSequence = action.getJSONArray("sequence");
	    Droid droid = new Droid(this, turnsLeft);
	    if(directionSequence.length() > range){
		Debug.warn("Got " + directionSequence.length() + " commands for the droid, but your droids level ("
			   + droidLevel + ") only supports " + range + " steps.");
		sendError("Got " + directionSequence.length() + " commands for the droid, but your droids level ("
			  + droidLevel + ") only supports " + range + " steps.");
	    }
	    if(droid.setDirections(directionSequence, droidLevel)){
		droid.setPosition(position);
		int stepsTaken = droid.performShot();
		JSONArray truncatedArray = new JSONArray();
		for(int i = 0; i < stepsTaken; i++){
		    truncatedArray.put(directionSequence.get(i));
		}
		action.put("sequence", truncatedArray);
		Debug.debug("droid steps taken: " + stepsTaken);
	    }
	    else {
		sendError("Invalid shot: unknown direction in droid sequence");
		return false;
	    }
	    return true;
	}
	catch (JSONException e){
	    sendError("Invalid shot: lacks a direction key");
	}
	return false;
    }