Add percentage modifiers to timetoheight
This commit is contained in:
		
							parent
							
								
									f4ecbf9ba3
								
							
						
					
					
						commit
						915ca4bf7c
					
				| @ -649,31 +649,32 @@ const functions = { | |||||||
| 		} | 		} | ||||||
| 		return `${waterParts.value} ${waterParts.units}`; | 		return `${waterParts.value} ${waterParts.units}`; | ||||||
| 	}, | 	}, | ||||||
| 	timeToHeight(beginHeight, destHeight) { | 	timeToHeight(beginHeight, destHeight, efficiency, quality) { | ||||||
| 		return new Promise((resolve, reject) => { | 		return new Promise((resolve, reject) => { | ||||||
| 			let time = 0; | 			let time = 0; | ||||||
|  | 			if ((efficiency) && (quality)) { | ||||||
|  | 				for (let i = beginHeight; i < destHeight; i++) { | ||||||
|  | 					const randNum = Math.floor(Math.random() * 100); | ||||||
|  | 					const compostApplied = randNum <= efficiency; | ||||||
|  | 					if (compostApplied) { | ||||||
|  | 						let qualityPercent = quality / 100; | ||||||
|  | 						let waterTime = functions.getWaterTime(i); | ||||||
|  | 						let reductionTime = waterTime * qualityPercent; | ||||||
|  | 						let finalTime = waterTime - reductionTime; | ||||||
|  | 						time += parseFloat(finalTime); | ||||||
|  | 					} else { | ||||||
|  | 						time += parseFloat(functions.getWaterTime(i)); | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 			} else { | ||||||
| 				for (let i = beginHeight; i < destHeight; i++) { | 				for (let i = beginHeight; i < destHeight; i++) { | ||||||
| 					const waterTime = parseFloat(functions.getWaterTime(i)); | 					const waterTime = parseFloat(functions.getWaterTime(i)); | ||||||
| 					// console.log("Height: " + i + "Time: " + waterTime);
 | 					// console.log("Height: " + i + "Time: " + waterTime);
 | ||||||
| 					time += waterTime; | 					time += waterTime; | ||||||
| 				} | 				} | ||||||
| 
 |  | ||||||
| 			// 60 secs in min
 |  | ||||||
| 			// 3600 secs in hr
 |  | ||||||
| 			// 86400 sec in day
 |  | ||||||
| 
 |  | ||||||
| 			let units = " secs"; |  | ||||||
| 			if (60 < time && time <= 3600) { // Minutes
 |  | ||||||
| 				time = parseFloat(time / 60).toFixed(1); |  | ||||||
| 				units = " mins"; |  | ||||||
| 			} else if (3600 < time && time <= 86400) { |  | ||||||
| 				time = parseFloat(time / 3600).toFixed(1); |  | ||||||
| 				units = " hrs"; |  | ||||||
| 			} else if (86400 < time) { |  | ||||||
| 				time = parseFloat(time / 86400).toFixed(1); |  | ||||||
| 				units = " days"; |  | ||||||
| 			} | 			} | ||||||
| 			resolve(time + units); | 			 | ||||||
|  | 			resolve(this.parseWaterTime(time)); | ||||||
| 		}); | 		}); | ||||||
| 	}, | 	}, | ||||||
| 	sleep(ms) { | 	sleep(ms) { | ||||||
|  | |||||||
| @ -9,25 +9,52 @@ module.exports = { | |||||||
| 		.addIntegerOption(o =>  | 		.addIntegerOption(o =>  | ||||||
| 			o.setName('endheight') | 			o.setName('endheight') | ||||||
| 			.setDescription('Ending tree height in feet') | 			.setDescription('Ending tree height in feet') | ||||||
| 			 .setRequired(true)) | 			.setRequired(true) | ||||||
|  | 		) | ||||||
| 		.addIntegerOption(o =>  | 		.addIntegerOption(o =>  | ||||||
| 			o.setName('beginheight') | 			o.setName('beginheight') | ||||||
| 			.setDescription('Beginning tree height in feet') | 			.setDescription('Beginning tree height in feet') | ||||||
| 			 .setRequired(false)), | 			.setRequired(false) | ||||||
|  | 		) | ||||||
|  | 		.addIntegerOption(o =>  | ||||||
|  | 			o.setName('efficiency') | ||||||
|  | 			.setDescription('Composter efficiency percentage, rounded') | ||||||
|  | 			.setRequired(false) | ||||||
|  | 		) | ||||||
|  | 		.addIntegerOption(o =>  | ||||||
|  | 			o.setName('quality') | ||||||
|  | 			.setDescription('Compost quality percentage, rounded') | ||||||
|  | 			.setRequired(false) | ||||||
|  | 		), | ||||||
| 	async execute(interaction) { | 	async execute(interaction) { | ||||||
| 		await interaction.deferReply({ ephemeral: true }); | 		await interaction.deferReply({ ephemeral: true }); | ||||||
| 		let beginHeight = interaction.options.getInteger('beginheight'); | 		const inBeginHeight = interaction.options.getInteger('beginheight'); | ||||||
| 		const endHeight = interaction.options.getInteger('endheight'); | 		const endHeight = interaction.options.getInteger('endheight'); | ||||||
| 		if (!beginHeight) { | 		const efficiency = interaction.options.getInteger('efficiency'); | ||||||
|  | 		const quality = interaction.options.getInteger('quality'); | ||||||
|  | 		let beginHeight, replyContent; | ||||||
|  | 
 | ||||||
|  | 		if ((efficiency && !quality) || (quality && !efficiency)) { | ||||||
|  | 			const reply = fn.builders.embed("You must include **both** efficiency *and* quality, I only received one."); | ||||||
|  | 			await interaction.editReply(reply).catch(e => console.error(e)); | ||||||
|  | 			return; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if (!inBeginHeight) { | ||||||
| 			const guildInfo = interaction.client.guildInfos.get(interaction.guild.id); | 			const guildInfo = interaction.client.guildInfos.get(interaction.guild.id); | ||||||
| 			beginHeight = guildInfo.treeHeight; | 			beginHeight = guildInfo.treeHeight; | ||||||
|  | 		} else { | ||||||
|  | 			beginHeight = inBeginHeight; | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		const timeString = await fn.timeToHeight(beginHeight, endHeight, efficiency, quality); | ||||||
|  | 		if (efficiency && quality) { | ||||||
|  | 			replyContent = `I estimate that a tree with ${efficiency}% Composter Efficiency and ${quality}% Compost Quality growing from ${beginHeight}ft to ${endHeight}ft will take ${timeString}`; | ||||||
|  | 		} else { | ||||||
|  | 			replyContent = `I estimate that a tree growing from ${beginHeight}ft to ${endHeight}ft will take ${timeString}`; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		const reply = fn.builders.embed(replyContent) | ||||||
|  | 		await interaction.editReply(reply); | ||||||
| 	} | 	} | ||||||
|         fn.timeToHeight(beginHeight, endHeight).then(res => { |  | ||||||
|             interaction.editReply(`It will take a tree that is ${beginHeight}ft tall ${res} to reach ${endHeight}ft.`); |  | ||||||
|         }).catch(err => { |  | ||||||
|             interaction.editReply("Error: " + err); |  | ||||||
|             console.error(err); |  | ||||||
|             return; |  | ||||||
|         });  |  | ||||||
| 	}, |  | ||||||
| }; | }; | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user