diff --git a/src/engine/gameManager/LootManager.java b/src/engine/gameManager/LootManager.java index 1e2da274..a569324d 100644 --- a/src/engine/gameManager/LootManager.java +++ b/src/engine/gameManager/LootManager.java @@ -66,27 +66,25 @@ public enum LootManager { } - public static void GenerateMobLoot(Mob mob, boolean fromDeath) { + public static void GenerateMobLoot(Mob mob) { //determine if mob is in hotzone - boolean inHotzone = ZoneManager.inHotZone(mob.getLoc()); //iterate the booty sets if (mob.getMobBase().bootySet != 0 && _bootySetMap.containsKey(mob.getMobBase().bootySet) == true) - RunBootySet(_bootySetMap.get(mob.getMobBase().bootySet), mob, inHotzone, fromDeath); + RunBootySet(_bootySetMap.get(mob.getMobBase().bootySet), mob, inHotzone); if (mob.bootySet != 0 && _bootySetMap.containsKey(mob.bootySet) == true) - RunBootySet(_bootySetMap.get(mob.bootySet), mob, inHotzone, fromDeath); + RunBootySet(_bootySetMap.get(mob.bootySet), mob, inHotzone); //lastly, check mobs inventory for godly or disc runes to send a server announcement - - if (!fromDeath) for (Item it : mob.getInventory()) { ItemBase ib = it.getItemBase(); - + if(ib == null) + break; if (ib.isDiscRune() || ib.getName().toLowerCase().contains("of the gods")) { ChatSystemMsg chatMsg = new ChatSystemMsg(null, mob.getName() + " in " + mob.getParentZone().getName() + " has found the " + ib.getName() + ". Are you tough enough to take it?"); chatMsg.setMessageType(10); @@ -97,16 +95,11 @@ public enum LootManager { } - private static void RunBootySet(ArrayList entries, Mob mob, boolean inHotzone, boolean fromDeath) { + private static void RunBootySet(ArrayList entries, Mob mob, boolean inHotzone) { boolean hotzoneWasRan = false; float dropRate = 1.0f; - if (fromDeath) { - GenerateEquipmentDrop(mob); - return; - } - // Iterate all entries in this bootySet and process accordingly for (BootySetEntry bse : entries) { @@ -338,7 +331,7 @@ public enum LootManager { public static void GenerateEquipmentDrop(Mob mob) { //do equipment here - + int dropCount = 0; if (mob.getEquip() != null) for (MobEquipment me : mob.getEquip().values()) { @@ -353,11 +346,12 @@ public enum LootManager { MobLoot ml = new MobLoot(mob, me.getItemBase(), false); - if (ml != null) { + if (ml != null && dropCount < 1) { ml.setIsID(true); ml.setDurabilityCurrent((short) (ml.getDurabilityCurrent() - ThreadLocalRandom.current().nextInt(5) + 1)); mob.getCharItemManager().addItemToInventory(ml); - break; // Exit on first successful roll. + dropCount = 1; + //break; // Exit on first successful roll. } } } diff --git a/src/engine/mobileAI/MobAI.java b/src/engine/mobileAI/MobAI.java index 5b55ac18..a1676a15 100644 --- a/src/engine/mobileAI/MobAI.java +++ b/src/engine/mobileAI/MobAI.java @@ -1075,12 +1075,10 @@ public class MobAI { } }else { if (mob.npcOwner.getCombatTarget() != null) - if(mob.getCombatTarget() != null && mob.getCombatTarget().equals(mob.npcOwner.getCombatTarget()) == false) mob.setCombatTarget(mob.npcOwner.getCombatTarget()); else - if(mob.getCombatTarget() != null) { + if (mob.getCombatTarget() != null) mob.setCombatTarget(null); - } } CheckMobMovement(mob); CheckForAttack(mob); diff --git a/src/engine/objects/Mob.java b/src/engine/objects/Mob.java index 5a57171d..f55c4712 100644 --- a/src/engine/objects/Mob.java +++ b/src/engine/objects/Mob.java @@ -941,9 +941,6 @@ public class Mob extends AbstractIntelligenceAgent { else this.currentID = this.dbID; - if (!isPet && !isSiege && !this.isPlayerGuard) - loadInventory(); - //store mobs by Database ID if (!isPet && !isSiege) @@ -1308,7 +1305,7 @@ public class Mob extends AbstractIntelligenceAgent { playerAgroMap.clear(); if (!this.isPlayerGuard && this.equip != null) - LootManager.GenerateMobLoot(this, true); + LootManager.GenerateEquipmentDrop(this); } try { @@ -1398,7 +1395,7 @@ public class Mob extends AbstractIntelligenceAgent { if (isPlayerGuard) return; - LootManager.GenerateMobLoot(this, false); + LootManager.GenerateMobLoot(this); } @Override @@ -1892,7 +1889,7 @@ public class Mob extends AbstractIntelligenceAgent { // Initialize inventory this.charItemManager = new CharacterItemManager(this); - + this.loadInventory(); try { if (this.equipmentSetID != 0) this.equip = MobBase.loadEquipmentSet(this.equipmentSetID); @@ -2195,7 +2192,7 @@ public class Mob extends AbstractIntelligenceAgent { if (this.isPet()) { if ((this.agentType.equals(AIAgentType.PET))) { //delete summoned pet - + this.despawn(); WorldGrid.RemoveWorldObject(this); DbManager.removeFromCache(this);