diff --git a/src/engine/gameManager/LootManager.java b/src/engine/gameManager/LootManager.java index 367242ad..81d21b4b 100644 --- a/src/engine/gameManager/LootManager.java +++ b/src/engine/gameManager/LootManager.java @@ -117,43 +117,43 @@ public enum LootManager { 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); + if(mob.parentZone.getSafeZone() == 0) { + 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); break; case "LOOT": - if (ThreadLocalRandom.current().nextInt(1, 100 + 1) < (bse.dropChance * dropRate)) - GenerateLootDrop(mob, bse.genTable); //generate normal loot drop - if(mob.parentZone.getSafeZone() == 0) { - 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) { - extraLoot = rollForContract(bse.genTable, mob); - } - if (roll >= 51 && roll <= 94) { - extraLoot = rollForRune(bse.genTable, mob); - } - //if (roll >= 95) { - // extraLoot = rollForGlass(mob); - //} - if (extraLoot != null) { - mob.getCharItemManager().addItemToInventory(extraLoot); - } + if (ThreadLocalRandom.current().nextInt(1, 100 + 1) < (bse.dropChance * dropRate)) + GenerateLootDrop(mob, bse.genTable); //generate normal loot drop + if (mob.parentZone.getSafeZone() == 0 && hasExtraRolled == false && ThreadLocalRandom.current().nextInt(1, 10000) < 5 * dropRate) { + int roll = ThreadLocalRandom.current().nextInt(1, 101); + MobLoot extraLoot = null; + if (roll >= 1 && roll <= 50) { + extraLoot = rollForContract(bse.genTable, mob); + } + if (roll >= 51 && roll <= 94) { + extraLoot = rollForRune(bse.genTable, mob); + } + //if (roll >= 95) { + // extraLoot = rollForGlass(mob); + //} + if (extraLoot != null) { + mob.getCharItemManager().addItemToInventory(extraLoot); + } hasExtraRolled = true; } - } break; case "ITEM": GenerateInventoryDrop(mob, bse); @@ -338,7 +338,9 @@ public enum LootManager { public static void GenerateLootDrop(Mob mob, int tableID) { try { - + if(mob.parentZone.getSafeZone() == 1) { + return; + } MobLoot toAdd = getGenTableItem(tableID, mob); if(toAdd.getItemBase().getType().equals(Enum.ItemType.CONTRACT) || toAdd.getItemBase().getType().equals(Enum.ItemType.RUNE)) return;//block all contracts and runes that drop outside the confines of the new system @@ -354,6 +356,10 @@ public enum LootManager { public static void GenerateEquipmentDrop(Mob mob) { + if(mob.parentZone.getSafeZone() == 1) { + return; + } + //do equipment here int dropCount = 0; if (mob.getEquip() != null) @@ -403,6 +409,10 @@ public enum LootManager { public static void GenerateInventoryDrop(Mob mob, BootySetEntry bse) { + if(mob.parentZone.getSafeZone() == 1) { + return; + } + int chanceRoll = ThreadLocalRandom.current().nextInt(1, 100 + 1); //early exit, failed to hit minimum chance roll @@ -501,6 +511,7 @@ public enum LootManager { } public static MobLoot rollForContract(int table, Mob mob){ + int roll = 99; if (table == 1900 || table == 1500) roll = 73;