Debug profession & chance stat

This commit is contained in:
Ka0rX 2022-07-25 09:33:54 +02:00
parent 9454302f4a
commit cb84d26735
2 changed files with 15 additions and 1 deletions

View File

@ -6,6 +6,7 @@ import net.Indyuce.mmocore.api.util.math.formula.RandomAmount;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.loot.LootBuilder; import net.Indyuce.mmocore.loot.LootBuilder;
import io.lumine.mythic.lib.api.MMOLineConfig; import io.lumine.mythic.lib.api.MMOLineConfig;
import org.bukkit.Bukkit;
public abstract class DropItem { public abstract class DropItem {
protected static final Random random = new Random(); protected static final Random random = new Random();
@ -13,6 +14,8 @@ public abstract class DropItem {
private final double chance, weight; private final double chance, weight;
private final RandomAmount amount; private final RandomAmount amount;
private static final double CHANCE_COEFFICIENT = 7. / 100;
public DropItem(MMOLineConfig config) { public DropItem(MMOLineConfig config) {
chance = config.args().length > 0 ? Double.parseDouble(config.args()[0]) : 1; chance = config.args().length > 0 ? Double.parseDouble(config.args()[0]) : 1;
amount = config.args().length > 1 ? new RandomAmount(config.args()[1]) : new RandomAmount(1, 1); amount = config.args().length > 1 ? new RandomAmount(config.args()[1]) : new RandomAmount(1, 1);
@ -35,11 +38,21 @@ public abstract class DropItem {
return amount.calculateInt(); return amount.calculateInt();
} }
/**
* CHANCE stat = 0 | tier chances are unchanged
* CHANCE stat = +inf | uniform law for any drop item
* CHANCE stat = 100 | all tier chances are taken their square root
*
* @return The real weight of an item considering the player's CHANCE stat.
*/
/** /**
* If the player chance is 0 the random value will remain the same. When he get lucks the chance gets closer to one. * If the player chance is 0 the random value will remain the same. When he get lucks the chance gets closer to one.
*/ */
public boolean rollChance(PlayerData player) { public boolean rollChance(PlayerData player) {
return Math.pow(random.nextDouble(), 1 / Math.log(1 + player.getStats().getStat("CHANCE"))) < chance; double value=random.nextDouble();
return value< Math.pow(chance, 1 / Math.pow(1 + CHANCE_COEFFICIENT * player.getStats().getStat("CHANCE"), 1.0 / 3.0));
} }
public abstract void collect(LootBuilder builder); public abstract void collect(LootBuilder builder);

View File

@ -138,6 +138,7 @@ public class MySQLPlayerDataManager extends PlayerDataManager {
} }
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
cancel();
} }
}); });
} }