forked from MagicBane/Server
Start mobequip refactor
This commit is contained in:
+35
-45
@@ -74,7 +74,6 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
private int currentID;
|
||||
private long lastAttackTime = 0;
|
||||
private int lastMobPowerToken = 0;
|
||||
public HashMap<Enum.EquipSlotType, MobEquipment> equip = null;
|
||||
private DeferredPowerJob weaponPower;
|
||||
private DateTime upgradeDateTime = null;
|
||||
private boolean lootSync = false;
|
||||
@@ -257,12 +256,12 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
|
||||
// get a copy of the equipped items.
|
||||
|
||||
if (mob.equip != null) {
|
||||
if (!mob.charItemManager.equipped.isEmpty()) {
|
||||
|
||||
writer.putInt(mob.equip.size());
|
||||
writer.putInt(mob.charItemManager.equipped.size());
|
||||
|
||||
for (MobEquipment me : mob.equip.values())
|
||||
MobEquipment.serializeForClientMsg(me, writer);
|
||||
for (Item me : mob.charItemManager.equipped.values())
|
||||
Item._serializeForClientMsg(me, writer);
|
||||
} else
|
||||
writer.putInt(0);
|
||||
|
||||
@@ -934,7 +933,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
|
||||
playerAgroMap.clear();
|
||||
|
||||
if (!this.isPlayerGuard() && this.equip != null)
|
||||
if (!this.isPlayerGuard() && this.charItemManager.equipped != null)
|
||||
LootManager.GenerateEquipmentDrop(this);
|
||||
|
||||
}
|
||||
@@ -1122,7 +1121,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
|
||||
public void calculateAtrDefenseDamage() {
|
||||
|
||||
if (this.charItemManager == null || this.equip == null) {
|
||||
if (this.charItemManager == null || this.charItemManager.equipped == null) {
|
||||
Logger.error("Player " + currentID + " missing skills or equipment");
|
||||
defaultAtrAndDamage(true);
|
||||
defaultAtrAndDamage(false);
|
||||
@@ -1141,16 +1140,16 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
this.rangeHandTwo = 6.5f;
|
||||
this.speedHandTwo = 20;
|
||||
|
||||
if (this.equip.get(EquipSlotType.RHELD) != null)
|
||||
calculateAtrDamageForWeapon(this.equip.get(EquipSlotType.LHELD), true); //has mainhand weapon to calculate
|
||||
if (this.charItemManager.equipped.get(EquipSlotType.RHELD) != null)
|
||||
calculateAtrDamageForWeapon(this.charItemManager.equipped.get(EquipSlotType.LHELD), true); //has mainhand weapon to calculate
|
||||
|
||||
|
||||
if (this.equip.get(EquipSlotType.LHELD) != null && !ItemTemplate.isShield(this.equip.get(EquipSlotType.LHELD).template))
|
||||
calculateAtrDamageForWeapon(this.equip.get(EquipSlotType.LHELD), false); //has offhand weapon to calculate
|
||||
if (this.charItemManager.equipped.get(EquipSlotType.LHELD) != null && !ItemTemplate.isShield(this.charItemManager.equipped.get(EquipSlotType.LHELD).template))
|
||||
calculateAtrDamageForWeapon(this.charItemManager.equipped.get(EquipSlotType.LHELD), false); //has offhand weapon to calculate
|
||||
|
||||
|
||||
try {
|
||||
calculateAtrDamageForWeapon(this.equip.get(EquipSlotType.RHELD), true);
|
||||
calculateAtrDamageForWeapon(this.charItemManager.equipped.get(EquipSlotType.RHELD), true);
|
||||
} catch (Exception e) {
|
||||
|
||||
this.atrHandOne = (short) this.mobBase.getAttackRating();
|
||||
@@ -1162,7 +1161,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
}
|
||||
|
||||
try {
|
||||
calculateAtrDamageForWeapon(this.equip.get(EquipSlotType.LHELD), false);
|
||||
calculateAtrDamageForWeapon(this.charItemManager.equipped.get(EquipSlotType.LHELD), false);
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -1176,14 +1175,14 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
|
||||
try {
|
||||
float defense = this.mobBase.getDefenseRating();
|
||||
defense += getShieldDefense(equip.get(EquipSlotType.LHELD));
|
||||
defense += getArmorDefense(equip.get(EquipSlotType.HELM));
|
||||
defense += getArmorDefense(equip.get(EquipSlotType.CHEST));
|
||||
defense += getArmorDefense(equip.get(EquipSlotType.UPARM));
|
||||
defense += getArmorDefense(equip.get(EquipSlotType.HANDS));
|
||||
defense += getArmorDefense(equip.get(EquipSlotType.LEGS));
|
||||
defense += getArmorDefense(equip.get(EquipSlotType.FEET));
|
||||
defense += getWeaponDefense(equip);
|
||||
defense += getShieldDefense(charItemManager.equipped.get(EquipSlotType.LHELD));
|
||||
defense += getArmorDefense(charItemManager.equipped.get(EquipSlotType.HELM));
|
||||
defense += getArmorDefense(charItemManager.equipped.get(EquipSlotType.CHEST));
|
||||
defense += getArmorDefense(charItemManager.equipped.get(EquipSlotType.UPARM));
|
||||
defense += getArmorDefense(charItemManager.equipped.get(EquipSlotType.HANDS));
|
||||
defense += getArmorDefense(charItemManager.equipped.get(EquipSlotType.LEGS));
|
||||
defense += getArmorDefense(charItemManager.equipped.get(EquipSlotType.FEET));
|
||||
defense += getWeaponDefense(charItemManager.equipped);
|
||||
|
||||
// TODO add error log here
|
||||
if (this.bonuses != null) {
|
||||
@@ -1217,9 +1216,9 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
// calculate defense for equipment
|
||||
}
|
||||
|
||||
private float getWeaponDefense(HashMap<Enum.EquipSlotType, MobEquipment> equipped) {
|
||||
private float getWeaponDefense(ConcurrentHashMap<Enum.EquipSlotType, Item> equipped) {
|
||||
|
||||
MobEquipment weapon = equipped.get(EquipSlotType.RHELD);
|
||||
Item weapon = equipped.get(EquipSlotType.RHELD);
|
||||
ItemBase wb = null;
|
||||
CharacterSkill skill, mastery;
|
||||
float val = 0;
|
||||
@@ -1256,7 +1255,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
return val;
|
||||
}
|
||||
|
||||
private float getShieldDefense(MobEquipment shield) {
|
||||
private float getShieldDefense(Item shield) {
|
||||
|
||||
if (shield == null)
|
||||
return 0;
|
||||
@@ -1285,7 +1284,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
return (def * (1 + ((int) skillMod / 100f)));
|
||||
}
|
||||
|
||||
private float getArmorDefense(MobEquipment armor) {
|
||||
private float getArmorDefense(Item armor) {
|
||||
|
||||
if (armor == null)
|
||||
return 0;
|
||||
@@ -1313,7 +1312,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
return (def * (1 + ((int) armorSkill.getModifiedAmount() / 50f)));
|
||||
}
|
||||
|
||||
private void calculateAtrDamageForWeapon(MobEquipment weapon, boolean mainHand) {
|
||||
private void calculateAtrDamageForWeapon(Item weapon, boolean mainHand) {
|
||||
|
||||
int baseStrength = 0;
|
||||
|
||||
@@ -1501,13 +1500,13 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
public ItemBase getWeaponItemBase(boolean mainHand) {
|
||||
|
||||
if (this.equipmentSetID != 0)
|
||||
if (equip != null) {
|
||||
MobEquipment me;
|
||||
if (charItemManager.equipped != null) {
|
||||
Item me;
|
||||
|
||||
if (mainHand)
|
||||
me = equip.get(1); //mainHand
|
||||
me = charItemManager.equipped.get(EquipSlotType.RHELD); //mainHand
|
||||
else
|
||||
me = equip.get(2); //offHand
|
||||
me = charItemManager.equipped.get(EquipSlotType.LHELD); //offHand
|
||||
|
||||
if (me != null) {
|
||||
|
||||
@@ -1521,14 +1520,14 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
MobBase mb = this.mobBase;
|
||||
|
||||
if (mb != null)
|
||||
if (equip != null) {
|
||||
if (this.charItemManager.equipped.isEmpty() == false) {
|
||||
|
||||
MobEquipment me;
|
||||
Item me;
|
||||
|
||||
if (mainHand)
|
||||
me = equip.get(1); //mainHand
|
||||
me = this.charItemManager.equipped.get(EquipSlotType.RHELD); //mainHand
|
||||
else
|
||||
me = equip.get(2); //offHand
|
||||
me = this.charItemManager.equipped.get(EquipSlotType.LHELD); //offHand
|
||||
|
||||
if (me != null)
|
||||
return me.getItemBase();
|
||||
@@ -1670,14 +1669,9 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
this.loadInventory();
|
||||
|
||||
if (this.equipmentSetID != 0)
|
||||
this.equip = MobBase.loadEquipmentSet(this.equipmentSetID);
|
||||
this.charItemManager.equipped = MobBase.loadEquipmentSet(this.equipmentSetID);
|
||||
else
|
||||
this.equip = new HashMap<>();
|
||||
|
||||
if (this.equip == null) {
|
||||
Logger.error("Null equipset returned for uuid " + currentID);
|
||||
this.equip = new HashMap<>(0);
|
||||
}
|
||||
this.charItemManager.equipped = new ConcurrentHashMap<>();
|
||||
|
||||
// Combine mobbase and mob aggro arrays into one bitvector
|
||||
//skip for pets
|
||||
@@ -1835,10 +1829,6 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
this.lootSync = lootSync;
|
||||
}
|
||||
|
||||
public HashMap<Enum.EquipSlotType, MobEquipment> getEquip() {
|
||||
return equip;
|
||||
}
|
||||
|
||||
public String getNameOverride() {
|
||||
return firstName + " " + lastName;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user