anchor.diff:  Player CurrentPlayer;
   
   class Player {
  -	int width = 116, height = 137, speed = 300;
  +	static final String DEFAULT_PHYSICS = "normal";
  +	static final int NORMAL_YVEL = 1000;
  +	static final int WATER_YVEL = NORMAL_YVEL ~/ 2;
  +	static final int JUMP_YVEL = 1000;
  +	static final int TRIPLE_JUMP_YVEL = 1560;
  +	static final int SPEED = 300;
  +
  +	int get speed => physics == "normal" ? SPEED : SPEED ~/ 2;
  +
  +	bool get canTripleJump => physics != "water";
  +
  +	int width = 116, height = 137;
   	num posX, posY;
   	num yVel = 0, yAccel = -2400;
   	bool jumping = false, moving = false, climbingUp = false, climbingDown = false;
  
positive.code: 		playerParentElement.append(playerCanvas);
  		view.worldElement.append(superParentElement);
  
  		// TODO: the first load won't trigger it for some reason
  		new Service(["streetLoaded"], (_) => updatePhysics());
  	}
  
  	void updatePhysics() {
  		window.console.info("Physics updated!");
  		canTripleJump = !(
  			// If disabled, the below will return true
  			// Otherwise, it will return false
  			(
  				// Disabled at hub level?
  				mapData.hubData[currentStreet.hub_id] != null &&
  				mapData.hubData[currentStreet.hub_id]["triple_jumping"] == false
  			)
  				||  // ...or maybe...
  			(
  				// Disabled at street level?
  				mapData.streetData[currentStreet.label] != null &&
  				mapData.streetData[currentStreet.label]["triple_jumping"] == false
  			)
  		);
  	}
  
  	Future<List<Animation>> loadAnimations() {
  
negative.code: 		if (doPhysicsApply && !climbingUp && !climbingDown) {
  			// walking
  			yVel -= yAccel * dt;
  			if (physics == "water") {
  				yVel /= 2;
  			}
  			posY += yVel * dt;
  		} else {
  			// climbing
  