boolean shootLaser(JSONObject action, GraphicsConnection graphicsConnection, int turnsLeft){
	int laserLevel = 1;
	if(primaryWeapon.equals("laser")){
	    laserLevel = primaryWeaponLevel;
	}
	else if(secondaryWeapon.equals("laser")){
	    laserLevel = secondaryWeaponLevel;
	}
	else {
	    return false;
	}
	try {
	    String direction = action.getString("direction");
	    Laser laser = new Laser(this, turnsLeft);
	    if(laser.setDirection(direction)){
		laser.setPosition(position);
		Coordinate endvector = laser.performShot(laserLevel);
		graphicsConnection.setStartStopHack(position.coords, endvector);
	    }
	    else {
		sendError("Invalid shot: unknown direction '"  + direction + "'");
		return false;
	    }
	    return true;
	}
	catch (JSONException e){
	    sendError("Invalid shot: lacks a direction key");
	}
	return false;
    }