forked from MagicBane/Server
Merge remote-tracking branch 'origin/master' into mobile-cleanup
This commit is contained in:
@@ -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.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user