diff --git a/src/engine/objects/ItemBase.java b/src/engine/objects/ItemBase.java index 6f449203..9dda9502 100644 --- a/src/engine/objects/ItemBase.java +++ b/src/engine/objects/ItemBase.java @@ -34,51 +34,11 @@ public class ItemBase { public static HashMap _itemBaseByUUID = new HashMap<>(); public static HashMap> ItemBaseTypeMap = new HashMap<>(); // Internal cache - private static HashMap itemHashIDMap = new HashMap<>(); - private static HashMap _IDsByNames = new HashMap<>(); - private static ArrayList _resourceList = new ArrayList<>(); + private static final HashMap itemHashIDMap = new HashMap<>(); + private static final HashMap _IDsByNames = new HashMap<>(); + private static final ArrayList _resourceList = new ArrayList<>(); private final int uuid; private final String name; - private float durability; - private int value; - private short weight; - private short color; - private ItemType type; - private int vendorType; - private int modTable; - private int useID; - private int hashID; - private byte useAmount; - // Armor and weapon related values - private int equipFlag; - private int restrictFlag; - private String skillRequired; - private short percentRequired; - private float slashResist; - private float crushResist; - private float pierceResist; - private float blockMod; - private short defense; - private float dexPenalty; - private float speed; - private float range; - private short minDamage; - private short maxDamage; - private String mastery; - private engine.Enum.DamageType damageType; - private boolean twoHanded; - private boolean isConsumable; - private boolean isStackable; - private int numCharges; - // Item stat modifiers - private HashMap bakedInStats = new HashMap<>(); - private HashMap usedStats = new HashMap<>(); - private float parryBonus; - private boolean isStrBased; - private ArrayList animations = new ArrayList<>(); - private ArrayList offHandAnimations = new ArrayList<>(); - private boolean autoID = false; - //requirements/restrictions public EnumSet restrictedRaces; public EnumSet requiredRaces; @@ -86,6 +46,45 @@ public class ItemBase { public EnumSet requiredClasses; public EnumSet requiredDiscs; public EnumSet restrictedDiscs; + private final float durability; + private final int value; + private final short weight; + private final short color; + private final ItemType type; + private int vendorType; + private final int modTable; + private final int useID; + private int hashID; + private final byte useAmount; + // Armor and weapon related values + private final int equipFlag; + private final int restrictFlag; + private final String skillRequired; + private final short percentRequired; + private final float slashResist; + private final float crushResist; + private final float pierceResist; + private final float blockMod; + private final short defense; + private final float dexPenalty; + private final float speed; + private final float range; + private final short minDamage; + private final short maxDamage; + private final String mastery; + private final engine.Enum.DamageType damageType; + private final boolean twoHanded; + private boolean isConsumable; + private boolean isStackable; + private final int numCharges; + // Item stat modifiers + private final HashMap bakedInStats = new HashMap<>(); + private final HashMap usedStats = new HashMap<>(); + private final float parryBonus; + private final boolean isStrBased; + private ArrayList animations = new ArrayList<>(); + private ArrayList offHandAnimations = new ArrayList<>(); + private boolean autoID = false; /** * ResultSet Constructor @@ -324,11 +323,8 @@ public class ItemBase { public boolean isDiscRune() { int ID = uuid; - if (ID > 2499 && ID < 3050) { //class, discipline runes - return true; - } else { - return false; - } + //class, discipline runes + return ID > 2499 && ID < 3050; } public boolean isGlass() { @@ -486,7 +482,7 @@ public class ItemBase { if (!validForSkills(abstractCharacter.getSkills())) return false; - if(this.canCharacterEquip(abstractCharacter) == false) + if (this.canCharacterEquip(abstractCharacter) == false) return false; return item.getItemBase().value != 0 || Kit.IsNoobGear(item.getItemBase().uuid); @@ -496,6 +492,7 @@ public class ItemBase { return true; //Mobiles and NPC's don't need to check equip } + public int getValidSlot() { int slotValue = 0; @@ -772,19 +769,19 @@ public class ItemBase { } public boolean isThrowing() { - return this.mastery.equals("Throwing") ? true : false; + return this.mastery.equals("Throwing"); } public boolean isStaff() { - return this.mastery.equals("Staff") ? true : false; + return this.mastery.equals("Staff"); } public boolean isScepter() { - return this.mastery.equals("Benediction") ? true : false; + return this.mastery.equals("Benediction"); } public boolean isArchery() { - return this.mastery.equals("Archery") ? true : false; + return this.mastery.equals("Archery"); } public boolean isMelee() { @@ -935,66 +932,66 @@ public class ItemBase { this.autoID = autoID; } - public boolean isArmor(){ + public boolean isArmor() { - if(this.isHeavyArmor()) + if (this.isHeavyArmor()) return true; - if(this.isMediumArmor()) + if (this.isMediumArmor()) return true; - if(this.isLightArmor()) + if (this.isLightArmor()) return true; - if(this.isClothArmor()) - return true; - - return false; - } - public Boolean canCharacterEquip(AbstractCharacter character){ - return ValidRace(character.absRace) && ValidClass(character.absBaseClass,character.absPromotionClass) && ValidDiscipline(character.absDisciplines); + return this.isClothArmor(); } - public Boolean ValidRace(Enum.MonsterType race){ - if(this.requiredRaces.isEmpty() && this.restrictedRaces.isEmpty()) - return true; - - if(this.requiredRaces.isEmpty() == false && race.elementOf(this.requiredRaces) == true) - return true; - - if(this.restrictedRaces.isEmpty() == false && race.elementOf(this.restrictedRaces) == false) - return true; - - return false; + public Boolean canCharacterEquip(AbstractCharacter character) { + return ValidRace(character.absRace) && ValidClass(character.absBaseClass, character.absPromotionClass) && ValidDiscipline(character.absDisciplines); } - public Boolean ValidClass(Enum.ClassType base,Enum.ClassType profession){ + public Boolean ValidRace(Enum.MonsterType race) { + + if (this.requiredRaces.isEmpty() && this.restrictedRaces.isEmpty()) + return true; + + if (this.requiredRaces.isEmpty() == false && race.elementOf(this.requiredRaces) == true) + return true; + + return this.restrictedRaces.isEmpty() == false && race.elementOf(this.restrictedRaces) == false; + } + + public Boolean ValidClass(Enum.ClassType base, Enum.ClassType profession) { + boolean requiredEmpty = this.requiredClasses == null || this.requiredClasses.isEmpty(); boolean restrictedEmpty = this.restrictedClasses == null || this.restrictedClasses.isEmpty(); - if(requiredEmpty && restrictedEmpty) + + if (requiredEmpty && restrictedEmpty) return true; - if(this.requiredClasses != null && this.requiredClasses.isEmpty() == false) - if(this.requiredClasses.contains(base) || this.requiredClasses.contains(profession)) + if (this.requiredClasses != null && this.requiredClasses.isEmpty() == false) + if (this.requiredClasses.contains(base) || this.requiredClasses.contains(profession)) return true; - if(this.restrictedClasses != null && this.restrictedClasses.isEmpty() == false) - if(this.restrictedClasses.contains(base) == false && this.restrictedClasses.contains(profession) == false) - return true; + if (this.restrictedClasses != null && this.restrictedClasses.isEmpty() == false) + return this.restrictedClasses.contains(base) == false && this.restrictedClasses.contains(profession) == false; return false; } - public Boolean ValidDiscipline(EnumSet discs){ + public Boolean ValidDiscipline(EnumSet discs) { + boolean requiredEmpty = this.requiredDiscs == null || this.requiredDiscs.isEmpty(); boolean restrictedEmpty = this.restrictedDiscs == null || this.restrictedDiscs.isEmpty(); - if(requiredEmpty && restrictedEmpty) + + if (requiredEmpty && restrictedEmpty) return true; - for(Enum.DisciplineType disc : discs){ - if(this.requiredDiscs.isEmpty() == false && this.requiredDiscs.contains(disc)) + for (Enum.DisciplineType disc : discs) { + if (this.requiredDiscs.isEmpty() == false && this.requiredDiscs.contains(disc)) return true; - if(this.restrictedDiscs.isEmpty() == false && this.restrictedDiscs.contains(disc)) + + if (this.restrictedDiscs.isEmpty() == false && this.restrictedDiscs.contains(disc)) return false; } return false;