|
|
@ -486,13 +486,7 @@ public class ItemBase { |
|
|
|
if (!validForSkills(abstractCharacter.getSkills())) |
|
|
|
if (!validForSkills(abstractCharacter.getSkills())) |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
if (!validRace(item.getItemBase(), abstractCharacter)) |
|
|
|
if(this.canCharacterEquip(abstractCharacter) == false) |
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!validClass(item.getItemBase(), abstractCharacter)) |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!validDisc(item.getItemBase(), abstractCharacter)) |
|
|
|
|
|
|
|
return false; |
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
return item.getItemBase().value != 0 || Kit.IsNoobGear(item.getItemBase().uuid); |
|
|
|
return item.getItemBase().value != 0 || Kit.IsNoobGear(item.getItemBase().uuid); |
|
|
@ -502,34 +496,6 @@ public class ItemBase { |
|
|
|
|
|
|
|
|
|
|
|
return true; //Mobiles and NPC's don't need to check equip
|
|
|
|
return true; //Mobiles and NPC's don't need to check equip
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public static boolean validRace(ItemBase ib, AbstractCharacter absChar){ |
|
|
|
|
|
|
|
if(ib.requiredRaces == null || ib.requiredRaces.isEmpty()) |
|
|
|
|
|
|
|
if(ib.restrictedRaces == null || ib.restrictedRaces.isEmpty()) |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return ib.requiredRaces.contains(absChar.absRace) && !ib.restrictedRaces.contains(absChar.absRace); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public static boolean validClass(ItemBase ib, AbstractCharacter absChar){ |
|
|
|
|
|
|
|
if(ib.requiredClasses == null || ib.requiredClasses.isEmpty()) |
|
|
|
|
|
|
|
if(ib.restrictedClasses == null || ib.restrictedClasses.isEmpty()) |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return ib.requiredClasses.contains(absChar.absClass) && !ib.restrictedClasses.contains(absChar.absClass); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static boolean validDisc(ItemBase ib, AbstractCharacter absChar){ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(ib.requiredDiscs == null || ib.requiredDiscs.isEmpty()) |
|
|
|
|
|
|
|
if(ib.restrictedDiscs == null || ib.restrictedDiscs.isEmpty()) |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for(CharacterRune rune : absChar.runes) |
|
|
|
|
|
|
|
if(ib.requiredDiscs.contains(rune.getRuneBaseID()) == true && ib.restrictedDiscs.contains(rune.getRuneBaseID()) == false) |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public int getValidSlot() { |
|
|
|
public int getValidSlot() { |
|
|
|
int slotValue = 0; |
|
|
|
int slotValue = 0; |
|
|
|
|
|
|
|
|
|
|
@ -985,5 +951,48 @@ public class ItemBase { |
|
|
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public Boolean canCharacterEquip(AbstractCharacter character){ |
|
|
|
|
|
|
|
return ValidRace(character.absRace) && ValidClass(character.absBaseClass,character.absPromotionClass) && ValidDiscipline(character.absDisciplines); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 ValidClass(Enum.ClassType base,Enum.ClassType profession){ |
|
|
|
|
|
|
|
if(this.requiredClasses.isEmpty() && this.restrictedClasses.isEmpty()) |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(this.requiredClasses.isEmpty() == false) |
|
|
|
|
|
|
|
if(this.requiredClasses.contains(base) || this.requiredClasses.contains(profession)) |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(this.restrictedClasses.isEmpty() == false) |
|
|
|
|
|
|
|
if(this.restrictedClasses.contains(base) == false && this.restrictedClasses.contains(profession) == false) |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Boolean ValidDiscipline(EnumSet<Enum.DisciplineType> discs){ |
|
|
|
|
|
|
|
if(this.requiredDiscs.isEmpty() && this.restrictedDiscs.isEmpty()) |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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)) |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|