|
|
|
@ -127,38 +127,43 @@ public enum LootManager {
@@ -127,38 +127,43 @@ public enum LootManager {
|
|
|
|
|
float dropRate; |
|
|
|
|
|
|
|
|
|
if (!mob.getSafeZone()) { |
|
|
|
|
int baseBound = 100000; |
|
|
|
|
int levelPenalty = (int) (Math.max(0, Math.abs(50 - mob.level)) * 0.01 * 100000); |
|
|
|
|
int totalRange = baseBound + levelPenalty; |
|
|
|
|
boolean allow = false; |
|
|
|
|
if(mob.level >= 50){ |
|
|
|
|
totalRange = baseBound; |
|
|
|
|
//totalRange = baseBound;
|
|
|
|
|
allow = true; |
|
|
|
|
}else{ |
|
|
|
|
if((50 - mob.level) < ThreadLocalRandom.current().nextInt(0,101)){ |
|
|
|
|
allow = true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Roll within the adjusted range
|
|
|
|
|
int specialCaseRoll = ThreadLocalRandom.current().nextInt(1, totalRange + 1); |
|
|
|
|
|
|
|
|
|
// Special Case Contract Drop
|
|
|
|
|
if (specialCaseRoll <= 400) { // 0.4% of the range
|
|
|
|
|
SpecialCaseResourceDrop(mob, entries); |
|
|
|
|
} else if (specialCaseRoll <= 800) { // Next 0.4% of the range
|
|
|
|
|
SpecialCaseContractDrop(mob, entries); |
|
|
|
|
} else if (specialCaseRoll <= 1200) { // Next 0.4% of the range
|
|
|
|
|
SpecialCaseRuneDrop(mob, entries); |
|
|
|
|
} else if (specialCaseRoll <= 1210) { // Next 0.01% of the range
|
|
|
|
|
int glassID = rollRandomItem(126); |
|
|
|
|
ItemBase glassItem = ItemBase.getItemBase(glassID); |
|
|
|
|
if (glassItem != null) { |
|
|
|
|
MobLoot toAddGlass = new MobLoot(mob, glassItem, false); |
|
|
|
|
if (toAddGlass != null) |
|
|
|
|
mob.getCharItemManager().addItemToInventory(toAddGlass); |
|
|
|
|
} |
|
|
|
|
} else if (specialCaseRoll <= 1220) { // Next 0.01% of the range
|
|
|
|
|
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); |
|
|
|
|
if (toAddContract != null) |
|
|
|
|
mob.getCharItemManager().addItemToInventory(toAddContract); |
|
|
|
|
if(allow) { |
|
|
|
|
// Roll within the adjusted range
|
|
|
|
|
int specialCaseRoll = ThreadLocalRandom.current().nextInt(1, 100000 + 1); |
|
|
|
|
|
|
|
|
|
// Special Case Contract Drop
|
|
|
|
|
if (specialCaseRoll <= 400) { // 0.4% of the range
|
|
|
|
|
SpecialCaseResourceDrop(mob, entries); |
|
|
|
|
} else if (specialCaseRoll <= 800) { // Next 0.4% of the range
|
|
|
|
|
SpecialCaseContractDrop(mob, entries); |
|
|
|
|
} else if (specialCaseRoll <= 1200) { // Next 0.4% of the range
|
|
|
|
|
SpecialCaseRuneDrop(mob, entries); |
|
|
|
|
} else if (specialCaseRoll <= 1210) { // Next 0.01% of the range
|
|
|
|
|
int glassID = rollRandomItem(126); |
|
|
|
|
ItemBase glassItem = ItemBase.getItemBase(glassID); |
|
|
|
|
if (glassItem != null) { |
|
|
|
|
MobLoot toAddGlass = new MobLoot(mob, glassItem, false); |
|
|
|
|
if (toAddGlass != null) |
|
|
|
|
mob.getCharItemManager().addItemToInventory(toAddGlass); |
|
|
|
|
} |
|
|
|
|
} else if (specialCaseRoll <= 1220) { // Next 0.01% of the range
|
|
|
|
|
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); |
|
|
|
|
if (toAddContract != null) |
|
|
|
|
mob.getCharItemManager().addItemToInventory(toAddContract); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|