|
|
|
@ -104,7 +104,7 @@ public class LootManager {
@@ -104,7 +104,7 @@ public class LootManager {
|
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case "ITEM": |
|
|
|
|
GenerateItemLootDrop(mob,bse); |
|
|
|
|
GenerateItemLootDrop(mob,bse,multiplier); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -114,7 +114,7 @@ public class LootManager {
@@ -114,7 +114,7 @@ public class LootManager {
|
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
MobLoot outItem; |
|
|
|
|
int genRoll = new Random().nextInt(101); |
|
|
|
|
int genRoll = new Random().nextInt(100)+1; |
|
|
|
|
GenTableRow selectedRow = generalItemTables.get(genTableID).getRowForRange(genRoll); |
|
|
|
|
if (selectedRow == null) { |
|
|
|
|
return null; |
|
|
|
@ -138,12 +138,12 @@ public class LootManager {
@@ -138,12 +138,12 @@ public class LootManager {
|
|
|
|
|
Enum.ItemType outType = outItem.getItemBase().getType(); |
|
|
|
|
if (outType.ordinal() == Enum.ItemType.WEAPON.ordinal() || outType.ordinal() == Enum.ItemType.ARMOR.ordinal() || outType.ordinal() == Enum.ItemType.JEWELRY.ordinal()) { |
|
|
|
|
if (outItem.getItemBase().isGlass() == false) { |
|
|
|
|
int prefixChanceRoll = ThreadLocalRandom.current().nextInt(101); |
|
|
|
|
int prefixChanceRoll = ThreadLocalRandom.current().nextInt(100)+1; |
|
|
|
|
double prefixChance = 2.057 * mob.level - 28.67; |
|
|
|
|
if (prefixChanceRoll < prefixChance) { |
|
|
|
|
ModTypeTable prefixTable = modTypeTables.get(selectedRow.pModTable); |
|
|
|
|
|
|
|
|
|
int prefixroll = ThreadLocalRandom.current().nextInt(101); |
|
|
|
|
int prefixroll = ThreadLocalRandom.current().nextInt(100)+1; |
|
|
|
|
if (modTables.get(prefixTable.getRowForRange(prefixroll).modTableID) != null) { |
|
|
|
|
ModTable prefixModTable = modTables.get(prefixTable.getRowForRange(prefixroll).modTableID); |
|
|
|
|
ModTableRow prefixMod = prefixModTable.getRowForRange(TableRoll(mob.level)); |
|
|
|
@ -153,10 +153,10 @@ public class LootManager {
@@ -153,10 +153,10 @@ public class LootManager {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
int suffixChanceRoll = ThreadLocalRandom.current().nextInt(101); |
|
|
|
|
int suffixChanceRoll = ThreadLocalRandom.current().nextInt(100)+1; |
|
|
|
|
double suffixChance = 2.057 * mob.level - 28.67; |
|
|
|
|
if (suffixChanceRoll < suffixChance) { |
|
|
|
|
int suffixroll = ThreadLocalRandom.current().nextInt(101); |
|
|
|
|
int suffixroll = ThreadLocalRandom.current().nextInt(100)+1; |
|
|
|
|
ModTypeTable suffixTable = modTypeTables.get(selectedRow.sModTable); |
|
|
|
|
if (modTables.get(suffixTable.getRowForRange(suffixroll).modTableID) != null) { |
|
|
|
|
ModTable suffixModTable = modTables.get(suffixTable.getRowForRange(suffixroll).modTableID); |
|
|
|
@ -175,9 +175,9 @@ public class LootManager {
@@ -175,9 +175,9 @@ public class LootManager {
|
|
|
|
|
if(mobLevel > 65){ |
|
|
|
|
mobLevel = 65; |
|
|
|
|
} |
|
|
|
|
int max = (int)(5.882 * mobLevel + 127.0); |
|
|
|
|
if(max > 320){ |
|
|
|
|
max = 320; |
|
|
|
|
int max = (int)(4.882 * mobLevel + 127.0); |
|
|
|
|
if(max > 321){ |
|
|
|
|
max = 321; |
|
|
|
|
} |
|
|
|
|
int min = (int)(4.469 * mobLevel - 3.469); |
|
|
|
|
int roll = ThreadLocalRandom.current().nextInt(max-min) + min; |
|
|
|
@ -273,7 +273,12 @@ public class LootManager {
@@ -273,7 +273,12 @@ public class LootManager {
|
|
|
|
|
} |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
public static void GenerateItemLootDrop(Mob mob, BootySetEntry bse){ |
|
|
|
|
public static void GenerateItemLootDrop(Mob mob, BootySetEntry bse, float multiplier){ |
|
|
|
|
int chanceRoll = ThreadLocalRandom.current().nextInt(100) + 1; |
|
|
|
|
if (chanceRoll > bse.dropChance * multiplier) { |
|
|
|
|
//early exit, failed to hit minimum chance roll
|
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
MobLoot disc = new MobLoot(mob, ItemBase.getItemBase(bse.itemBase), true); |
|
|
|
|
if (disc != null) |
|
|
|
|
mob.getCharItemManager().addItemToInventory(disc); |
|
|
|
|