From 60230220774a2374ab07c61954edc02057e1d2c7 Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Wed, 13 Mar 2024 21:23:47 -0500 Subject: [PATCH] drop rate work --- src/engine/devcmd/cmds/SimulateBootyCmd.java | 20 ++++++++++-- src/engine/gameManager/LootManager.java | 32 +++++++++++++++----- 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/src/engine/devcmd/cmds/SimulateBootyCmd.java b/src/engine/devcmd/cmds/SimulateBootyCmd.java index 7249ee3b..0701df3b 100644 --- a/src/engine/devcmd/cmds/SimulateBootyCmd.java +++ b/src/engine/devcmd/cmds/SimulateBootyCmd.java @@ -1,10 +1,12 @@ package engine.devcmd.cmds; +import engine.Enum; import engine.devcmd.AbstractDevCmd; import engine.gameManager.LootManager; import engine.gameManager.ZoneManager; import engine.loot.BootySetEntry; import engine.objects.*; +import org.pmw.tinylog.Logger; import java.util.ArrayList; import java.util.concurrent.ThreadLocalRandom; @@ -26,7 +28,9 @@ public class SimulateBootyCmd extends AbstractDevCmd { String output; output = "Booty Simulation:" + newline; - + if(target.getObjectType().equals(Enum.GameObjectType.Mob) == false){ + return;//ugh what? + } Mob mob = (Mob) target; output += "Name: " + mob.getName() + newline; output += "Special Loot:" + newline; @@ -51,7 +55,7 @@ public class SimulateBootyCmd extends AbstractDevCmd { int failures = 0; int goldAmount = 0; - for (int i = 0; i < 10000; ++i) { + for (int i = 0; i < 1000; ++i) { try { mob.loadInventory(); @@ -85,6 +89,9 @@ public class SimulateBootyCmd extends AbstractDevCmd { } } catch (Exception ex) { failures++; + //throwbackError(playerCharacter,ex.getLocalizedMessage()); + //Logger.error(ex.fillInStackTrace()); + //return; } if (mob.getEquip() != null) { for (MobEquipment me : mob.getEquip().values()) { @@ -131,8 +138,17 @@ public class SimulateBootyCmd extends AbstractDevCmd { } output += "GLASS DROPS: " + GlassItems.size() + newline; + for(Item glass : GlassItems){ + output += " " + glass.getName() + newline; + } output += "RUNE DROPS: " + Runes.size() + newline; + for(Item rune : Runes){ + output += " " + rune.getName() + newline; + } output += "CONTRACTS DROPS: " + Contracts.size() + newline; + for(Item contract : Contracts){ + output += " " + contract.getName() + newline; + } output += "RESOURCE DROPS: " + Resources.size() + newline; output += "OFFERINGS DROPPED: " + Offerings.size() + newline; output += "ENCHANTED ITEMS DROPPED: " + OtherDrops.size() + newline; diff --git a/src/engine/gameManager/LootManager.java b/src/engine/gameManager/LootManager.java index 759dac23..dd56b1e9 100644 --- a/src/engine/gameManager/LootManager.java +++ b/src/engine/gameManager/LootManager.java @@ -116,10 +116,18 @@ public enum LootManager { private static void RunBootySet(ArrayList entries, Mob mob) { float dropRate = NORMAL_DROP_RATE; - + //roll the geenric world drop table + GenerateLootDrop(mob, 1300); + if(ThreadLocalRandom.current().nextInt(1, 10000) == 5000) { + MobLoot extraLoot = rollForGlass(mob); + if (extraLoot != null) { + mob.getCharItemManager().addItemToInventory(extraLoot); + } + } // Iterate all entries in this bootySet and process accordingly - + boolean hasExtraRolled = false; for (BootySetEntry bse : entries) { + switch (bse.bootyType) { case "GOLD": GenerateGoldDrop(mob, bse); @@ -128,7 +136,7 @@ public enum LootManager { if (ThreadLocalRandom.current().nextInt(1, 100 + 1) < (bse.dropChance * dropRate)) GenerateLootDrop(mob, bse.genTable); //generate normal loot drop if(mob.parentZone.getSafeZone() == 0) { - if (ThreadLocalRandom.current().nextInt(1, 10000) < 10) { + if (hasExtraRolled == false && ThreadLocalRandom.current().nextInt(1, 10000) < 5 * dropRate) { int roll = ThreadLocalRandom.current().nextInt(1, 101); MobLoot extraLoot = null; if (roll >= 1 && roll <= 50) { @@ -137,12 +145,13 @@ public enum LootManager { if (roll >= 51 && roll <= 94) { extraLoot = rollForRune(bse.genTable, mob); } - if (roll >= 95) { - extraLoot = rollForGlass(mob); - } + //if (roll >= 95) { + // extraLoot = rollForGlass(mob); + //} if (extraLoot != null) { mob.getCharItemManager().addItemToInventory(extraLoot); } + hasExtraRolled = true; } } break; @@ -492,7 +501,10 @@ public enum LootManager { } public static MobLoot rollForContract(int table, Mob mob){ - GenTableEntry selectedRow = GenTableEntry.rollTable(table, 99, 1.0f); + int roll = 99; + if (table == 1900 || table == 1500) + roll = 73; + GenTableEntry selectedRow = GenTableEntry.rollTable(table, roll, 1.0f); if (selectedRow == null) return null; @@ -515,7 +527,11 @@ public enum LootManager { return null; } public static MobLoot rollForRune(int table, Mob mob){ - GenTableEntry selectedRow = GenTableEntry.rollTable(table, 97, 1.0f); + int roll = 97; + if(table == 1900 || table == 1500){ + roll = 77; + } + GenTableEntry selectedRow = GenTableEntry.rollTable(table, roll, 1.0f); if (selectedRow == null) return null;