|  |  | @ -1505,9 +1505,152 @@ static void generate_labor_to_skill_map() | 
			
		
	
		
		
			
				
					
					|  |  |  |             labor_to_skill[labor] = skill; |  |  |  |             labor_to_skill[labor] = skill; | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | struct skill_attr_weight { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     int phys_attr_weights [6]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     int mental_attr_weights [13]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | }; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | static struct skill_attr_weight skill_attr_weights[ENUM_LAST_ITEM(job_skill) + 1] = | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     //  S  A  T  E  R  D     AA  F  W  C  I  P  M LA SS  M KS  E SA
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 0, 1, 1, 0, 0 }, { 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* MINING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* WOODCUTTING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* CARPENTRY */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* DETAILSTONE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* MASONRY */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 1, 1, 0, 0 }, { 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0 } } /* ANIMALTRAIN */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 } } /* ANIMALCARE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* DISSECT_FISH */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* DISSECT_VERMIN */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* PROCESSFISH */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* BUTCHER */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* TRAPPING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* TANNER */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* WEAVING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* BREWING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* ALCHEMY */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* CLOTHESMAKING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* MILLING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* PROCESSPLANTS */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* CHEESEMAKING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* MILK */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* COOK */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* PLANT */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } } /* HERBALISM */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } } /* FISH */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 0, 1, 1, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* SMELT */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* EXTRACT_STRAND */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* FORGE_WEAPON */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* FORGE_ARMOR */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* FORGE_FURNITURE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* CUTGEM */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* ENCRUSTGEM */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* WOODCRAFT */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* STONECRAFT */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* METALCRAFT */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* GLASSMAKER */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* LEATHERWORK */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* BONECARVE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* AXE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* SWORD */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* DAGGER */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* MACE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* HAMMER */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* SPEAR */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* CROSSBOW */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* SHIELD */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 0, 1, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* ARMOR */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* SIEGECRAFT */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 0, 1, 1, 0, 0 }, { 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* SIEGEOPERATE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* BOWYER */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* PIKE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* WHIP */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* BOW */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* BLOWGUN */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* THROW */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* MECHANICS */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* MAGIC_NATURE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* SNEAK */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* DESIGNBUILDING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0 } } /* DRESS_WOUNDS */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 } } /* DIAGNOSE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* SURGERY */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* SET_BONE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* SUTURE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 1, 0, 0 }, { 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* CRUTCH_WALK */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 0, 1, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* WOOD_BURNING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 0, 1, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* LYE_MAKING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 0, 1, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* SOAP_MAKING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 0, 1, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* POTASH_MAKING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* DYER */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 0, 1, 1, 0, 0 }, { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* OPERATE_PUMP */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* SWIMMING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1 } } /* PERSUASION */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1 } } /* NEGOTIATION */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1 } } /* JUDGING_INTENT */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 } } /* APPRAISAL */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 } } /* ORGANIZATION */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } } /* RECORD_KEEPING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1 } } /* LYING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } } /* INTIMIDATION */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1 } } /* CONVERSATION */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 } } /* COMEDY */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1 } } /* FLATTERY */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0 } } /* CONSOLE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1 } } /* PACIFY */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* TRACKING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } } /* KNOWLEDGE_ACQUISITION */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } } /* CONCENTRATION */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* DISCIPLINE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 } } /* SITUATIONAL_AWARENESS */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* WRITING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* PROSE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* POETRY */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* READING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* SPEAKING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* COORDINATION */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* BALANCE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1 } } /* LEADERSHIP */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1 } } /* TEACHING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 1, 0, 0, 0 }, { 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* MELEE_COMBAT */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* RANGED_COMBAT */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* WRESTLING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 0, 1, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* BITE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* GRASP_STRIKE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* STANCE_STRIKE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* DODGING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* MISC_WEAPON */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* KNAPPING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* MILITARY_TACTICS */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* SHEARING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* SPINNING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* POTTERY */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* GLAZING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* PRESSING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 1, 1, 0, 1, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* BEEKEEPING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } /* WAX_WORKING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* CLIMBING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* GELD */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* DANCE */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* MAKE_MUSIC */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* SING_MUSIC */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* PLAY_KEYBOARD_INSTRUMENT */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* PLAY_STRINGED_INSTRUMENT */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* PLAY_WIND_INSTRUMENT */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* PLAY_PERCUSSION_INSTRUMENT */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* CRITICAL_THINKING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* LOGIC */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* MATHEMATICS */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* ASTRONOMY */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* CHEMISTRY */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* GEOGRAPHY */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* OPTICS_ENGINEER */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* FLUID_ENGINEER */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* PAPERMAKING */, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } /* BOOKBINDING */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | }; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | static void enable_plugin(color_ostream &out) |  |  |  | static void enable_plugin(color_ostream &out) | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
	
		
		
			
				
					|  |  | @ -2148,6 +2291,7 @@ private: | 
			
		
	
		
		
			
				
					
					|  |  |  |     { |  |  |  |     { | 
			
		
	
		
		
			
				
					
					|  |  |  |         int skill_level = 0; |  |  |  |         int skill_level = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |         int xp = 0; |  |  |  |         int xp = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         int attr_weight = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (labor != df::unit_labor::NONE) |  |  |  |         if (labor != df::unit_labor::NONE) | 
			
		
	
		
		
			
				
					
					|  |  |  |         { |  |  |  |         { | 
			
		
	
	
		
		
			
				
					|  |  | @ -2156,10 +2300,16 @@ private: | 
			
		
	
		
		
			
				
					
					|  |  |  |             { |  |  |  |             { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 skill_level = Units::getEffectiveSkill(d->dwarf, skill); |  |  |  |                 skill_level = Units::getEffectiveSkill(d->dwarf, skill); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 xp = Units::getExperience(d->dwarf, skill, false); |  |  |  |                 xp = Units::getExperience(d->dwarf, skill, false); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 for (int pa = 0; pa < 6; pa++)  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     attr_weight += (skill_attr_weights[skill].phys_attr_weights[pa]) * (d->dwarf->body.physical_attrs[pa].value - 1000); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 for (int ma = 0; ma < 13; ma++)  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     attr_weight += (skill_attr_weights[skill].mental_attr_weights[ma]) * (d->dwarf->status.current_soul->mental_attrs[ma].value - 1000); | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         int score = skill_level * 1000 - (d->high_skill - skill_level) * 2000 + (xp / (skill_level + 5) * 10); |  |  |  |         int score = skill_level * 1000 - (d->high_skill - skill_level) * 2000 + (xp / (skill_level + 5) * 10) + attr_weight; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (labor != df::unit_labor::NONE) |  |  |  |         if (labor != df::unit_labor::NONE) | 
			
		
	
		
		
			
				
					
					|  |  |  |         { |  |  |  |         { | 
			
		
	
	
		
		
			
				
					|  |  | @ -2177,6 +2327,8 @@ private: | 
			
		
	
		
		
			
				
					
					|  |  |  |                 score += 5000; |  |  |  |                 score += 5000; | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         score -= Units::computeMovementSpeed(d->dwarf); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         return score; |  |  |  |         return score; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |