anchor.diff:  		}
   
   		//primitive jumping
  -		if (inputManager.jumpKey == true && !jumping && !climbingUp && !climbingDown) {
  +		if (inputManager.jumpKey == true && (!jumping || physics == "water") && !climbingUp && !climbingDown) {
   			num jumpMultiplier;
  +			bool spinachBuff = Buff.isRunning("spinach");
   			bool pieBuff = Buff.isRunning("full_of_pie");
  -			bool spinachBuff = Buff.isRunning("spinach");
  -			if (pieBuff) {
  -				jumpMultiplier = 0.65;
  +			if (physics == "water") {
  +				jumpMultiplier = 0.5;
   			} else if (spinachBuff) {
   				jumpMultiplier = 1.65;
  +			} else if (pieBuff) {
  +				jumpMultiplier = 0.65;
   			} else {
   				jumpMultiplier = 1;
   			}
  
positive.code: 		if (doPhysicsApply && !climbingUp && !climbingDown) {
  			// walking
  			yVel -= yAccel * dt;
  			posY += yVel * dt;
  		} else {
  			// climbing
  
negative.code: 		playerParentElement.append(playerCanvas);
  		view.worldElement.append(superParentElement);
  
  		updatePhysics();
  		new Service(["streetLoaded"], (_) => updatePhysics());
  	}
  
  	void updatePhysics([Map street = const {}]) {
  		if (
  			mapData.hubData[street["hub_id"] ?? currentStreet.hub_id] != null &&
  			mapData.hubData[street["hub_id"] ?? currentStreet.hub_id]["physics"] != null
  		) {
  			physics = mapData.hubData[street["hub_id"] ?? currentStreet.hub_id]["physics"];
  		} else {
  			physics = DEFAULT_PHYSICS;
  		}
  	}
  
  	Future<List<Animation>> loadAnimations() {
  