Browse Source

Merge remote-tracking branch 'origin/master' into mobile-cleanup

combat-2
MagicBot 1 year ago
parent
commit
a6c60e2c04
  1. 26
      src/engine/gameManager/LootManager.java
  2. 4
      src/engine/mobileAI/MobAI.java
  3. 11
      src/engine/objects/Mob.java

26
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 //determine if mob is in hotzone
boolean inHotzone = ZoneManager.inHotZone(mob.getLoc()); boolean inHotzone = ZoneManager.inHotZone(mob.getLoc());
//iterate the booty sets //iterate the booty sets
if (mob.getMobBase().bootySet != 0 && _bootySetMap.containsKey(mob.getMobBase().bootySet) == true) 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) 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 //lastly, check mobs inventory for godly or disc runes to send a server announcement
if (!fromDeath)
for (Item it : mob.getInventory()) { for (Item it : mob.getInventory()) {
ItemBase ib = it.getItemBase(); ItemBase ib = it.getItemBase();
if(ib == null)
break;
if (ib.isDiscRune() || ib.getName().toLowerCase().contains("of the gods")) { 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?"); 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); chatMsg.setMessageType(10);
@ -97,16 +95,11 @@ public enum LootManager {
} }
private static void RunBootySet(ArrayList<BootySetEntry> entries, Mob mob, boolean inHotzone, boolean fromDeath) { private static void RunBootySet(ArrayList<BootySetEntry> entries, Mob mob, boolean inHotzone) {
boolean hotzoneWasRan = false; boolean hotzoneWasRan = false;
float dropRate = 1.0f; float dropRate = 1.0f;
if (fromDeath) {
GenerateEquipmentDrop(mob);
return;
}
// 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) {
@ -338,7 +331,7 @@ public enum LootManager {
public static void GenerateEquipmentDrop(Mob mob) { public static void GenerateEquipmentDrop(Mob mob) {
//do equipment here //do equipment here
int dropCount = 0;
if (mob.getEquip() != null) if (mob.getEquip() != null)
for (MobEquipment me : mob.getEquip().values()) { for (MobEquipment me : mob.getEquip().values()) {
@ -353,11 +346,12 @@ public enum LootManager {
MobLoot ml = new MobLoot(mob, me.getItemBase(), false); MobLoot ml = new MobLoot(mob, me.getItemBase(), false);
if (ml != null) { if (ml != null && dropCount < 1) {
ml.setIsID(true); ml.setIsID(true);
ml.setDurabilityCurrent((short) (ml.getDurabilityCurrent() - ThreadLocalRandom.current().nextInt(5) + 1)); ml.setDurabilityCurrent((short) (ml.getDurabilityCurrent() - ThreadLocalRandom.current().nextInt(5) + 1));
mob.getCharItemManager().addItemToInventory(ml); mob.getCharItemManager().addItemToInventory(ml);
break; // Exit on first successful roll. dropCount = 1;
//break; // Exit on first successful roll.
} }
} }
} }

4
src/engine/mobileAI/MobAI.java

@ -1075,12 +1075,10 @@ public class MobAI {
} }
}else { }else {
if (mob.npcOwner.getCombatTarget() != null) if (mob.npcOwner.getCombatTarget() != null)
if(mob.getCombatTarget() != null && mob.getCombatTarget().equals(mob.npcOwner.getCombatTarget()) == false)
mob.setCombatTarget(mob.npcOwner.getCombatTarget()); mob.setCombatTarget(mob.npcOwner.getCombatTarget());
else else
if(mob.getCombatTarget() != null) { if (mob.getCombatTarget() != null)
mob.setCombatTarget(null); mob.setCombatTarget(null);
}
} }
CheckMobMovement(mob); CheckMobMovement(mob);
CheckForAttack(mob); CheckForAttack(mob);

11
src/engine/objects/Mob.java

@ -941,9 +941,6 @@ public class Mob extends AbstractIntelligenceAgent {
else else
this.currentID = this.dbID; this.currentID = this.dbID;
if (!isPet && !isSiege && !this.isPlayerGuard)
loadInventory();
//store mobs by Database ID //store mobs by Database ID
if (!isPet && !isSiege) if (!isPet && !isSiege)
@ -1308,7 +1305,7 @@ public class Mob extends AbstractIntelligenceAgent {
playerAgroMap.clear(); playerAgroMap.clear();
if (!this.isPlayerGuard && this.equip != null) if (!this.isPlayerGuard && this.equip != null)
LootManager.GenerateMobLoot(this, true); LootManager.GenerateEquipmentDrop(this);
} }
try { try {
@ -1398,7 +1395,7 @@ public class Mob extends AbstractIntelligenceAgent {
if (isPlayerGuard) if (isPlayerGuard)
return; return;
LootManager.GenerateMobLoot(this, false); LootManager.GenerateMobLoot(this);
} }
@Override @Override
@ -1892,7 +1889,7 @@ public class Mob extends AbstractIntelligenceAgent {
// Initialize inventory // Initialize inventory
this.charItemManager = new CharacterItemManager(this); this.charItemManager = new CharacterItemManager(this);
this.loadInventory();
try { try {
if (this.equipmentSetID != 0) if (this.equipmentSetID != 0)
this.equip = MobBase.loadEquipmentSet(this.equipmentSetID); this.equip = MobBase.loadEquipmentSet(this.equipmentSetID);
@ -2195,7 +2192,7 @@ public class Mob extends AbstractIntelligenceAgent {
if (this.isPet()) { if (this.isPet()) {
if ((this.agentType.equals(AIAgentType.PET))) { //delete summoned pet if ((this.agentType.equals(AIAgentType.PET))) { //delete summoned pet
this.despawn();
WorldGrid.RemoveWorldObject(this); WorldGrid.RemoveWorldObject(this);
DbManager.removeFromCache(this); DbManager.removeFromCache(this);

Loading…
Cancel
Save