@ -9,6 +9,7 @@
				@@ -9,6 +9,7 @@
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					package  engine.objects ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  engine.Enum ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  engine.Enum.DamageType ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  engine.Enum.GameObjectType ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  engine.Enum.ItemType ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -77,6 +78,15 @@ public class ItemBase {
				@@ -77,6 +78,15 @@ public class ItemBase {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    private  ArrayList < Integer >  offHandAnimations  =  new  ArrayList < > ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    private  boolean  autoID  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    //requirements/restrictions
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    public  ArrayList < Enum . MonsterType >  restrictedRaces ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    public  ArrayList < Enum . MonsterType >  requiredRaces ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    public  ArrayList < Enum . PromoteType >  restrictedClasses ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    public  ArrayList < Enum . PromoteType >  requiredClasses ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    public   ArrayList < Integer >  requiredDiscs ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    public   ArrayList < Integer >  restrictedDiscs ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    public  Enum . SexType  requiredSex ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    / * *   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     *  ResultSet  Constructor   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     * /   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -212,6 +222,7 @@ public class ItemBase {
				@@ -212,6 +222,7 @@ public class ItemBase {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    public  static  void  loadAllItemBases ( )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        DbManager . ItemBaseQueries . LOAD_ALL_ITEMBASES ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        DbManager . ItemBaseQueries . LOAD_ALL_ITEM_REQUIREMENTS ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        AnniverseryGifts . add ( 971000 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        AnniverseryGifts . add ( 971001 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        AnniverseryGifts . add ( 971002 ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -468,6 +479,15 @@ public class ItemBase {
				@@ -468,6 +479,15 @@ 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 ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                return  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            return  item . getItemBase ( ) . value  ! =  0  | |  Kit . IsNoobGear ( item . getItemBase ( ) . uuid ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            //players can't wear 0 value items.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -476,6 +496,33 @@ public class ItemBase {
				@@ -476,6 +496,33 @@ 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 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -931,4 +978,43 @@ public class ItemBase {
				@@ -931,4 +978,43 @@ public class ItemBase {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    return  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    public  void  LoadRequirements ( String  racesRequired ,  String  racesRestricted ,  String  classesRequired ,  String  classesRestricted ,  String  discsRequired ,  String  discsRestricted ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . requiredRaces  =  new  ArrayList < > ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . restrictedRaces  =  new  ArrayList < > ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . requiredClasses  =  new  ArrayList < > ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . restrictedClasses  =  new  ArrayList < > ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . requiredDiscs  =  new  ArrayList < > ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . restrictedDiscs  =  new  ArrayList < > ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if ( racesRequired  ! =  null ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					           for ( String  entry  :  racesRequired . split ( ";" ) ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                requiredRaces . add ( Enum . MonsterType . valueOf ( entry ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					           }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if ( racesRestricted  ! =  null ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for ( String  entry  :  racesRestricted . split ( ";" ) ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                restrictedRaces . add ( Enum . MonsterType . valueOf ( entry ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if ( classesRequired  ! =  null ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for ( String  entry  :  classesRequired . split ( ";" ) ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                requiredClasses . add ( Enum . PromoteType . valueOf ( entry ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if ( classesRestricted  ! =  null ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for ( String  entry  :  classesRestricted . split ( ";" ) ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                restrictedClasses . add ( Enum . PromoteType . valueOf ( entry ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if ( discsRequired  ! =  null ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for ( String  entry  :  discsRequired . split ( ";" ) ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                //TODO find way to load disc runebaseID from name
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if ( discsRestricted  ! =  null ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for ( String  entry  :  discsRestricted . split ( ";" ) )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                //TODO find way to load disc runebaseID from name
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}