anchor.diff:  	Future<bool> _setLevelBasedMetabolics(int level, String action, String email) async {
   		int mood = 2;
   		int imgMin = 5;
  -		int energy = ACTION_ENERGY;
  +		int energy = 0;
   
   		if (action == 'hoe') {
  -			energy = HOE_ENERGY;
  +			energy = ENERGY_REQ_HOE.energyAmount;
   		} else if (action == 'water') {
  -			energy = WATER_ENERGY;
  +			energy = ENERGY_REQ_WATER.energyAmount;
   		} else if (action == 'harvest') {
  -			energy = HARVEST_ENERGY;
  +			energy = ENERGY_REQ_HARVEST.energyAmount;
   		}
   
   		if (level > 0) {
  
positive.code: 				Item musicblock = items[Crab.randomMusicblock()];
  				await InventoryV2.addItemToUser(email, musicblock.getMap(), 1, id);
  				toast(
  					"You got a ${musicblock.name}!", userSocket,
  					onClick: "iteminfo|${musicblock.name}"
  					);
  			}
  		}
  
negative.code: }
  
  class Garden extends NPC {
  	static final String SKILL = 'croppery';
  	static bool sentMap = false;
  
  	static final List<String> CROPS = ['broccoli', 'cabbage', 'carrot', 'corn', 'cucumber', 'onion', 'parsnip', 'potato', 'pumpkin', 'rice', 'spinach', 'tomato', 'zucchini'];
  
  	static final ItemRequirements
  		ITEM_REQ_HOE = new ItemRequirements()
  			..any = ['hoe', 'high_class_hoe']
  			..error = "You don't want to get your fingers dirty.",
  		ITEM_REQ_WATER = new ItemRequirements()
  			..any = ['watering_can', 'irrigator_9000']
  			..error = "Gardens don't like to be peed on. Go find some clean water, please.",
  		ITEM_REQ_PLANT = new ItemRequirements()
  			..any = [
  				'Seed_Broccoli', 'Seed_Cabbage', 'Seed_Carrot', 'Seed_Corn', 'Seed_Cucumber', 'Seed_Onion', 'Seed_Parsnip', 'Seed_Potato', 'Seed_Pumpkin', 'Seed_Rice', 'Seed_Spinach', 'Seed_Tomato', 'Seed_Zucchini']
  			..error = 'You need some crops to plant';
  
  	static final EnergyRequirements
  		ENERGY_REQ_HOE = new EnergyRequirements(energyAmount: -5),
  		ENERGY_REQ_WATER = new EnergyRequirements(energyAmount: -2),
  		ENERGY_REQ_HARVEST = new EnergyRequirements(energyAmount: -3);
  
  	static final Map<String, Spritesheet> STATES = {
  		'new': new Spritesheet('new',
  			'http://childrenofur.com/assets/entityImages/garden_plot_new.png',
  			100, 90, 100, 90, 1, false),
  		'hoed': new Spritesheet('hoed',
  			'http://childrenofur.com/assets/entityImages/garden_plot_hoed.png',
  			100, 90, 100, 90, 1, false),
  		'watered': new Spritesheet('watered',
  			'http://childrenofur.com/assets/entityImages/garden_plot_watered.png',
  			100, 90, 100, 90, 1, false),
  		'planted_baby': new Spritesheet('planted_baby',
  			'http://childrenofur.com/assets/entityImages/garden_plot_planted_baby.png',
  			100, 90, 100, 90, 1, false),
  	};
  
  	GardenStates gardenState = GardenStates.NEW;
  	String plantedWith = 'none';
  	int plantedState = -1;
  	DateTime plantedAt, stage1Time, stage2Time, stage3Time;
  	Action hoeAction, waterAction, plantAction, viewAction, harvestAction;
  	bool restored = false;
  
  	Garden(String id, num x, num y, String streetName) : super(id, x, y, streetName) {
  		type = 'Crop Garden';
  
  		hoeAction = new Action.withName('hoe')
  			..actionWord = 'hoeing'
  			..timeRequired = 2000
  			..energyRequirements = ENERGY_REQ_HOE
  			..itemRequirements = ITEM_REQ_HOE
  			..associatedSkill = SKILL;
  
  		waterAction = new Action.withName('water')
  			..actionWord = 'watering'
  			..timeRequired = 2000
  			..energyRequirements = ENERGY_REQ_WATER
  			..itemRequirements = ITEM_REQ_WATER
  			..associatedSkill = SKILL;
  
  		plantAction = new Action.withName('plant')
  			..itemRequirements = ITEM_REQ_PLANT
  			..associatedSkill = SKILL;
  
  		viewAction = new Action.withName('view');
  
  		harvestAction = new Action.withName('harvest')
  			..actionWord = 'harvesting'
  			..timeRequired = 5000
  			..energyRequirements = ENERGY_REQ_HARVEST
  			..associatedSkill = SKILL;
  
  		states = STATES;
  		_createCropStates();
  		setState('new');
  
  		actions = [hoeAction];
  	}
  
  	///This will add all of the crop states to the [states] array so that it doesn't
  	///take up so much room and is easier to edit. Just add to the [crops] list to edit it
  	void _createCropStates() {
  
  		for (String crop in CROPS) {
  			for (int i=1; i<4; i++) {
  				String cropState = '${crop}_${i}';
  				states[cropState] = new Spritesheet(cropState, 'http://childrenofur.com/assets/entityImages/$cropState.png', 100, 90, 100, 90, 1, false);
  