From bcf0a3adef36f4e4652a99f84264a219bfea3cde Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Fri, 3 Jun 2022 04:43:48 +0200 Subject: [PATCH] Correctly (hopefully) calculate the amount based on a range based on quest completed this month --- .../alttd/altitudequests/objects/Variant.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/alttd/altitudequests/objects/Variant.java b/src/main/java/com/alttd/altitudequests/objects/Variant.java index fca83f6..cf9d203 100644 --- a/src/main/java/com/alttd/altitudequests/objects/Variant.java +++ b/src/main/java/com/alttd/altitudequests/objects/Variant.java @@ -3,8 +3,7 @@ package com.alttd.altitudequests.objects; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; -import java.util.List; -import java.util.Random; +import java.util.*; public abstract class Variant { @@ -41,7 +40,16 @@ public abstract class Variant { } public int calculateAmount(int questsCompleted) { - int difficultyOffset = ((rangeMax - rangeMin) / 40) * questsCompleted; - return new Random().nextInt(Integer.min(rangeMax - 1, rangeMin + difficultyOffset), rangeMax); + double difficultyOffset = ((rangeMax - rangeMin) / (double) getDaysInMonth()); + int min = Math.max(rangeMin, rangeMin + (int) (difficultyOffset * (questsCompleted - 5))); + int max = Math.min(rangeMax, rangeMin + (int) (difficultyOffset * (questsCompleted + 5))); + return new Random().nextInt(min, max); + } + + private int getDaysInMonth() { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + + return calendar.getActualMaximum(Calendar.DAY_OF_MONTH); } }