Browse Source

adjusted global drop rates

lakebane2
FatBoy-DOTC 3 weeks ago
parent
commit
26eda324dc
  1. 80
      src/engine/gameManager/LootManager.java

80
src/engine/gameManager/LootManager.java

@ -127,46 +127,58 @@ public enum LootManager {
float dropRate; float dropRate;
if (!mob.getSafeZone()) { if (!mob.getSafeZone()) {
boolean allow = false; int contractLow = 1, contractHigh = 400;
if(mob.level >= 50){ int runeLow = 401, runeHigh = 800;
allow = true; int resourceLow = 801, resourceHigh = 900;
}else{ int glassLow = 901, glassHigh = 910;
if((50 - mob.level) > ThreadLocalRandom.current().nextInt(0,101)){ int guardLow = 911, guardHigh = 920;
allow = true;
} // Pre-compute adjusted high values
int contractAdjust = 0, runeAdjust = 0, resourceAdjust = 0, glassAdjust = 0, guardAdjust = 0;
if (mob.level < 50) {
int dif = 50 - mob.level;
contractAdjust = (int)(400 * (dif * 0.02f));
runeAdjust = (int)(400 * (dif * 0.02f));
resourceAdjust = (int)(100 * (dif * 0.02f));
glassAdjust = (int)(10 * (dif * 0.02f));
guardAdjust = (int)(10 * (dif * 0.02f));
} }
if(allow) { // Generate a single random roll
// Roll within the adjusted range int specialCaseRoll = ThreadLocalRandom.current().nextInt(1, 100001);
int specialCaseRoll = ThreadLocalRandom.current().nextInt(1, 100000 + 1);
// Calculate adjusted high values once
// Special Case Contract Drop int contractHighAdjusted = contractHigh - contractAdjust;
if (specialCaseRoll <= 400) { // 0.4% of the range int runeHighAdjusted = runeHigh - runeAdjust;
SpecialCaseResourceDrop(mob, entries); int resourceHighAdjusted = resourceHigh - resourceAdjust;
} else if (specialCaseRoll <= 800) { // Next 0.4% of the range int glassHighAdjusted = glassHigh - glassAdjust;
SpecialCaseContractDrop(mob, entries); int guardHighAdjusted = guardHigh - guardAdjust;
} else if (specialCaseRoll <= 1200) { // Next 0.4% of the range
SpecialCaseRuneDrop(mob, entries); // Check the roll range and handle accordingly
} else if (specialCaseRoll <= 1210) { // Next 0.01% of the range if (specialCaseRoll >= contractLow && specialCaseRoll <= contractHighAdjusted) {
int glassID = rollRandomItem(126); SpecialCaseContractDrop(mob, entries);
ItemBase glassItem = ItemBase.getItemBase(glassID); } else if (specialCaseRoll >= runeLow && specialCaseRoll <= runeHighAdjusted) {
if (glassItem != null) { SpecialCaseRuneDrop(mob, entries);
MobLoot toAddGlass = new MobLoot(mob, glassItem, false); } else if (specialCaseRoll >= resourceLow && specialCaseRoll <= resourceHighAdjusted) {
if (toAddGlass != null) SpecialCaseResourceDrop(mob, entries);
mob.getCharItemManager().addItemToInventory(toAddGlass); } else if (specialCaseRoll >= glassLow && specialCaseRoll <= glassHighAdjusted) {
} int glassID = rollRandomItem(126);
} else if (specialCaseRoll <= 1220) { // Next 0.01% of the range ItemBase glassItem = ItemBase.getItemBase(glassID);
int guardContractID = racial_guard_uuids.get(new java.util.Random().nextInt(racial_guard_uuids.size())); if (glassItem != null) {
ItemBase guardContract = ItemBase.getItemBase(guardContractID); MobLoot toAddGlass = new MobLoot(mob, glassItem, false);
if (guardContract != null) { mob.getCharItemManager().addItemToInventory(toAddGlass);
MobLoot toAddContract = new MobLoot(mob, guardContract, false); }
if (toAddContract != null) } else if (specialCaseRoll >= guardLow && specialCaseRoll <= guardHighAdjusted) {
mob.getCharItemManager().addItemToInventory(toAddContract); int guardContractID = racial_guard_uuids.get(new java.util.Random().nextInt(racial_guard_uuids.size()));
} ItemBase guardContract = ItemBase.getItemBase(guardContractID);
if (guardContract != null) {
MobLoot toAddContract = new MobLoot(mob, guardContract, false);
mob.getCharItemManager().addItemToInventory(toAddContract);
} }
} }
} }
// Iterate all entries in this bootySet and process accordingly // Iterate all entries in this bootySet and process accordingly
for (BootySetEntry bse : entries) { for (BootySetEntry bse : entries) {
switch (bse.bootyType) { switch (bse.bootyType) {

Loading…
Cancel
Save