states.push({
	id: "harvest",
	button: "Gather Debris",
	action: "Harvesting",
	duration: () => selectedItems.length * 500,
	step: () => selectedItems.length,
	requires: () => {
		let selectCount = selectedItems.length;
		let enoughEnergy = userData.energy >= selectCount;
		let enoughSpace = selectCount <= userData.maxCargoCapacity && (userData.maxCargoCapacity - userData.inCargoHold.length >= selectCount);
		if (!enoughEnergy) { errorMessage = "insufficient energy to gather all selected debris"; }
		if (!enoughSpace) { errorMessage = "insufficient cargo space to store all selected debris"; }
		if(selectedItems.length == 0) {
			receiveMessage({name:"[Ship]", id:-1, style: ""}, "No valid targets to gather. Please select debris.")
		}
		return enoughEnergy && enoughSpace;
	},
	start: () => {
		play('harvesting-debris');
	},
	run: () => {
		selectedItems.forEach(item => {
			let index = userData.debrisInSpace.indexOf(item);
			if(index > -1) {
				userData.debrisInSpace.splice(index, 1);
				userData.inCargoHold.push(item);
				userData.energy--;
			}
		});
		selectedItems = [];
	},
});