@ -116,10 +116,18 @@ public enum LootManager {
				@@ -116,10 +116,18 @@ public enum LootManager {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    private  static  void  RunBootySet ( ArrayList < BootySetEntry >  entries ,  Mob  mob )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        float  dropRate  =  NORMAL_DROP_RATE ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        //roll the geenric world drop table
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        GenerateLootDrop ( mob ,  1300 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if ( ThreadLocalRandom . current ( ) . nextInt ( 1 ,  10000 )  = =  5000 )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            MobLoot  extraLoot  =  rollForGlass ( mob ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( extraLoot  ! =  null )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                mob . getCharItemManager ( ) . addItemToInventory ( extraLoot ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Iterate all entries in this bootySet and process accordingly
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        boolean  hasExtraRolled  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( BootySetEntry  bse  :  entries )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            switch  ( bse . bootyType )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                case  "GOLD" :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    GenerateGoldDrop ( mob ,  bse ) ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -127,9 +135,8 @@ public enum LootManager {
				@@ -127,9 +135,8 @@ public enum LootManager {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                case  "LOOT" :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    if  ( ThreadLocalRandom . current ( ) . nextInt ( 1 ,  100  +  1 )  <  ( bse . dropChance  *  dropRate ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        GenerateLootDrop ( mob ,  bse . genTable ) ;   //generate normal loot drop
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    if ( ThreadLocalRandom . current ( ) . nextInt ( 1 , 101 )  <  mob . level  & &  mob . parentZone . getSafeZone ( )  = =  0 )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        if  ( ThreadLocalRandom . current ( ) . nextInt ( 1 ,  10000 )  <  mob . level )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                            if  ( _genTables . containsKey ( bse . genTable  +  1 ) )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    if ( mob . parentZone . getSafeZone ( )  = =  0 )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        if  ( hasExtraRolled  = =  false  & &  ThreadLocalRandom . current ( ) . nextInt ( 1 ,  10000 )  <  5  *  dropRate )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                int  roll  =  ThreadLocalRandom . current ( ) . nextInt ( 1 ,  101 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                MobLoot  extraLoot  =  null ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                if  ( roll  > =  1  & &  roll  < =  50 )  {   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -138,13 +145,13 @@ public enum LootManager {
				@@ -138,13 +145,13 @@ public enum LootManager {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                if  ( roll  > =  51  & &  roll  < =  94 )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                    extraLoot  =  rollForRune ( bse . genTable ,  mob ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                if  ( roll  > =  95 )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                    extraLoot  =  rollForGlass ( mob ) ;    
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                //if (roll >= 95) {
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                //    extraLoot = rollForGlass(mob);
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                //}
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                if  ( extraLoot  ! =  null )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                    mob . getCharItemManager ( ) . addItemToInventory ( extraLoot ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                            hasExtraRolled  =  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    break ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -193,9 +200,9 @@ public enum LootManager {
				@@ -193,9 +200,9 @@ public enum LootManager {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ItemBase . getItemBase ( itemUUID ) . getType ( ) . ordinal ( )  = =  Enum . ItemType . RESOURCE . ordinal ( ) )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            int  chance  =  ThreadLocalRandom . current ( ) . nextInt ( 1 , 101 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if ( chance  >  5 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if ( chance  >  10 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                return  null ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            int  amount  =  ThreadLocalRandom . current ( ) . nextInt ( tableRow . minSpawn ,  tableRow . maxSpawn  +  1 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            int  amount  =  ThreadLocalRandom . current ( ) . nextInt ( ( int ) ( tableRow . minSpawn  *  0 . 5f )  ,  ( int ) ( ( tableRow . maxSpawn  +  1 )  *  0 . 5f ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            return  new  MobLoot ( mob ,  ItemBase . getItemBase ( itemUUID ) ,  amount ,  false ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -333,6 +340,8 @@ public enum LootManager {
				@@ -333,6 +340,8 @@ public enum LootManager {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        try  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            MobLoot  toAdd  =  getGenTableItem ( tableID ,  mob ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if ( toAdd . getItemBase ( ) . getType ( ) . equals ( Enum . ItemType . CONTRACT )  | |  toAdd . getItemBase ( ) . getType ( ) . equals ( Enum . ItemType . RUNE ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                return ; //block all contracts and runes that drop outside the confines of the new system
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( toAdd  ! =  null )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                toAdd . setIsID ( true ) ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -340,7 +349,6 @@ public enum LootManager {
				@@ -340,7 +349,6 @@ public enum LootManager {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  catch  ( Exception  e )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            //TODO chase down loot generation error, affects roughly 2% of drops
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            int  i  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -385,7 +393,7 @@ public enum LootManager {
				@@ -385,7 +393,7 @@ public enum LootManager {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    dropCount  =  1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    //break; // Exit on first successful roll.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if ( ml  ! =  null  & &  genericIB . isVorg ( ) ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if ( ml  ! =  null  & &  genericIB . isVorg ( )  & &  mob . getMobBaseID ( )  ! =  14062  ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    ml . setIsID ( true ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    ml . setDurabilityCurrent ( ml . getDurabilityMax ( ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    mob . getCharItemManager ( ) . addItemToInventory ( ml ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -493,7 +501,10 @@ public enum LootManager {
				@@ -493,7 +501,10 @@ public enum LootManager {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    public  static  MobLoot  rollForContract ( int  table ,  Mob  mob ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        GenTableEntry  selectedRow  =  GenTableEntry . rollTable ( table ,  99 ,  1 . 0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        int  roll  =  99 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( table  = =  1900  | |  table  = =  1500 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            roll  =  73 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        GenTableEntry  selectedRow  =  GenTableEntry . rollTable ( table ,  roll ,  1 . 0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( selectedRow  = =  null )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            return  null ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -516,7 +527,11 @@ public enum LootManager {
				@@ -516,7 +527,11 @@ public enum LootManager {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return  null ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    public  static  MobLoot  rollForRune ( int  table ,  Mob  mob ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        GenTableEntry  selectedRow  =  GenTableEntry . rollTable ( table ,  97 ,  1 . 0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        int  roll  =  97 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if ( table  = =  1900  | |  table  = =  1500 ) {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            roll  =  77 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        GenTableEntry  selectedRow  =  GenTableEntry . rollTable ( table ,  roll ,  1 . 0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( selectedRow  = =  null )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            return  null ;