implement server side restrictions
This commit is contained in:
@@ -486,13 +486,7 @@ public class ItemBase {
|
||||
if (!validForSkills(abstractCharacter.getSkills()))
|
||||
return false;
|
||||
|
||||
if (!validRace(item.getItemBase(), abstractCharacter))
|
||||
return false;
|
||||
|
||||
if (!validClass(item.getItemBase(), abstractCharacter))
|
||||
return false;
|
||||
|
||||
if (!validDisc(item.getItemBase(), abstractCharacter))
|
||||
if(this.canCharacterEquip(abstractCharacter) == false)
|
||||
return false;
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
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() {
|
||||
int slotValue = 0;
|
||||
|
||||
@@ -985,5 +951,48 @@ public class ItemBase {
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user