| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -32,9 +32,12 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include "df/caste_raw.h"
 | 
					 | 
					 | 
					 | 
					#include "df/caste_raw.h"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include "df/historical_entity.h"
 | 
					 | 
					 | 
					 | 
					#include "df/historical_entity.h"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include "df/entity_raw.h"
 | 
					 | 
					 | 
					 | 
					#include "df/entity_raw.h"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#include "df/goal_type.h"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#include "df/unit_personality.h"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include "uicommon.h"
 | 
					 | 
					 | 
					 | 
					#include "uicommon.h"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include "listcolumn.h"
 | 
					 | 
					 | 
					 | 
					#include "listcolumn.h"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#include "manipulator.h"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using std::stringstream;
 | 
					 | 
					 | 
					 | 
					using std::stringstream;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using std::set;
 | 
					 | 
					 | 
					 | 
					using std::set;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -287,6 +290,9 @@ struct UnitInfo
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    string name;
 | 
					 | 
					 | 
					 | 
					    string name;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    string transname;
 | 
					 | 
					 | 
					 | 
					    string transname;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    string profession;
 | 
					 | 
					 | 
					 | 
					    string profession;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    string goal;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    enum { NEUTRAL, MALE, FEMALE } goal_gender;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    bool achieved_goal;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    int8_t color;
 | 
					 | 
					 | 
					 | 
					    int8_t color;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    int active_index;
 | 
					 | 
					 | 
					 | 
					    int active_index;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    string squad_effective_name;
 | 
					 | 
					 | 
					 | 
					    string squad_effective_name;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -310,7 +316,8 @@ struct UnitInfo
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					enum detail_cols {
 | 
					 | 
					 | 
					 | 
					enum detail_cols {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    DETAIL_MODE_PROFESSION,
 | 
					 | 
					 | 
					 | 
					    DETAIL_MODE_PROFESSION,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    DETAIL_MODE_SQUAD,
 | 
					 | 
					 | 
					 | 
					    DETAIL_MODE_SQUAD,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    DETAIL_MODE_JOB
 | 
					 | 
					 | 
					 | 
					    DETAIL_MODE_JOB,
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    DETAIL_MODE_GOAL
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					};
 | 
					 | 
					 | 
					 | 
					};
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					enum altsort_mode {
 | 
					 | 
					 | 
					 | 
					enum altsort_mode {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ALTSORT_NAME,
 | 
					 | 
					 | 
					 | 
					    ALTSORT_NAME,
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -348,6 +355,21 @@ bool sortByProfession (const UnitInfo *d1, const UnitInfo *d2)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return (d1->profession < d2->profession);
 | 
					 | 
					 | 
					 | 
					        return (d1->profession < d2->profession);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					bool sortByGoal (const UnitInfo *d1, const UnitInfo *d2)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    if (!d1->unit->status.current_soul)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        return !descending;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    if (!d2->unit->status.current_soul)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        return descending;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    df::goal_type goal1 = Units::getGoalType(d1->unit);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    df::goal_type goal2 = Units::getGoalType(d2->unit);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    if (descending)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        return (goal1 > goal2);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        return (goal1 < goal2);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					bool sortBySquad (const UnitInfo *d1, const UnitInfo *d2)
 | 
					 | 
					 | 
					 | 
					bool sortBySquad (const UnitInfo *d1, const UnitInfo *d2)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    bool gt = false;
 | 
					 | 
					 | 
					 | 
					    bool gt = false;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -583,6 +605,8 @@ namespace unit_ops {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    string get_profname(UnitInfo *u)
 | 
					 | 
					 | 
					 | 
					    string get_profname(UnitInfo *u)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        { return Units::getProfessionName(u->unit); }
 | 
					 | 
					 | 
					 | 
					        { return Units::getProfessionName(u->unit); }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    string get_goalname(UnitInfo *u)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        { return Units::getGoalName(u->unit); }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    string get_real_profname(UnitInfo *u)
 | 
					 | 
					 | 
					 | 
					    string get_real_profname(UnitInfo *u)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    {
 | 
					 | 
					 | 
					 | 
					    {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        string tmp = u->unit->custom_profession;
 | 
					 | 
					 | 
					 | 
					        string tmp = u->unit->custom_profession;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1237,6 +1261,14 @@ void viewscreen_unitlaborsst::refreshNames()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        cur->name = Translation::TranslateName(Units::getVisibleName(unit), false);
 | 
					 | 
					 | 
					 | 
					        cur->name = Translation::TranslateName(Units::getVisibleName(unit), false);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        cur->transname = Translation::TranslateName(Units::getVisibleName(unit), true);
 | 
					 | 
					 | 
					 | 
					        cur->transname = Translation::TranslateName(Units::getVisibleName(unit), true);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        cur->profession = Units::getProfessionName(unit);
 | 
					 | 
					 | 
					 | 
					        cur->profession = Units::getProfessionName(unit);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        cur->goal = Units::getGoalName(unit);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        df::goal_type goal = Units::getGoalType(unit);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        if (goal == df::goal_type::START_A_FAMILY) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            cur->goal_gender = Units::isFemale(unit) ? UnitInfo::FEMALE : UnitInfo::MALE;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        } else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            cur->goal_gender = UnitInfo::NEUTRAL;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        cur->achieved_goal = Units::isGoalAchieved(unit);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (unit->job.current_job == NULL) {
 | 
					 | 
					 | 
					 | 
					        if (unit->job.current_job == NULL) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            df::activity_event *event = Units::getMainSocialEvent(unit);
 | 
					 | 
					 | 
					 | 
					            df::activity_event *event = Units::getMainSocialEvent(unit);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1298,8 +1330,10 @@ void viewscreen_unitlaborsst::calcSize()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            detail_cmp = units[i]->squad_info.size();
 | 
					 | 
					 | 
					 | 
					            detail_cmp = units[i]->squad_info.size();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } else if (detail_mode == DETAIL_MODE_JOB) {
 | 
					 | 
					 | 
					 | 
					        } else if (detail_mode == DETAIL_MODE_JOB) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            detail_cmp = units[i]->job_desc.size();
 | 
					 | 
					 | 
					 | 
					            detail_cmp = units[i]->job_desc.size();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } else {
 | 
					 | 
					 | 
					 | 
					        } else if (detail_mode == DETAIL_MODE_PROFESSION) {
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            detail_cmp = units[i]->profession.size();
 | 
					 | 
					 | 
					 | 
					            detail_cmp = units[i]->profession.size();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        } else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            detail_cmp = units[i]->goal.size();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }
 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (size_t(col_maxwidth[DISP_COLUMN_DETAIL]) < detail_cmp)
 | 
					 | 
					 | 
					 | 
					        if (size_t(col_maxwidth[DISP_COLUMN_DETAIL]) < detail_cmp)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            col_maxwidth[DISP_COLUMN_DETAIL] = detail_cmp;
 | 
					 | 
					 | 
					 | 
					            col_maxwidth[DISP_COLUMN_DETAIL] = detail_cmp;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1736,8 +1770,10 @@ void viewscreen_unitlaborsst::feed(set<df::interface_key> *events)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                std::stable_sort(units.begin(), units.end(), sortBySquad);
 | 
					 | 
					 | 
					 | 
					                std::stable_sort(units.begin(), units.end(), sortBySquad);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } else if (detail_mode == DETAIL_MODE_JOB) {
 | 
					 | 
					 | 
					 | 
					            } else if (detail_mode == DETAIL_MODE_JOB) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                std::stable_sort(units.begin(), units.end(), sortByJob);
 | 
					 | 
					 | 
					 | 
					                std::stable_sort(units.begin(), units.end(), sortByJob);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } else {
 | 
					 | 
					 | 
					 | 
					            } else if (detail_mode == DETAIL_MODE_PROFESSION){
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                std::stable_sort(units.begin(), units.end(), sortByProfession);
 | 
					 | 
					 | 
					 | 
					                std::stable_sort(units.begin(), units.end(), sortByProfession);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                std::stable_sort(units.begin(), units.end(), sortByGoal);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            }
 | 
					 | 
					 | 
					 | 
					            }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            break;
 | 
					 | 
					 | 
					 | 
					            break;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        case ALTSORT_STRESS:
 | 
					 | 
					 | 
					 | 
					        case ALTSORT_STRESS:
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1777,9 +1813,11 @@ void viewscreen_unitlaborsst::feed(set<df::interface_key> *events)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (detail_mode == DETAIL_MODE_SQUAD) {
 | 
					 | 
					 | 
					 | 
					        if (detail_mode == DETAIL_MODE_SQUAD) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            detail_mode = DETAIL_MODE_JOB;
 | 
					 | 
					 | 
					 | 
					            detail_mode = DETAIL_MODE_JOB;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } else if (detail_mode == DETAIL_MODE_JOB) {
 | 
					 | 
					 | 
					 | 
					        } else if (detail_mode == DETAIL_MODE_JOB) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            detail_mode = DETAIL_MODE_PROFESSION;
 | 
					 | 
					 | 
					 | 
					            detail_mode = DETAIL_MODE_GOAL;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } else {
 | 
					 | 
					 | 
					 | 
					        } else if (detail_mode == DETAIL_MODE_PROFESSION) {
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            detail_mode = DETAIL_MODE_SQUAD;
 | 
					 | 
					 | 
					 | 
					            detail_mode = DETAIL_MODE_SQUAD;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        } else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            detail_mode = DETAIL_MODE_PROFESSION;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }
 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1888,8 +1926,10 @@ void viewscreen_unitlaborsst::render()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        detail_str = "Squad";
 | 
					 | 
					 | 
					 | 
					        detail_str = "Squad";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } else if (detail_mode == DETAIL_MODE_JOB) {
 | 
					 | 
					 | 
					 | 
					    } else if (detail_mode == DETAIL_MODE_JOB) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        detail_str = "Job";
 | 
					 | 
					 | 
					 | 
					        detail_str = "Job";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } else {
 | 
					 | 
					 | 
					 | 
					    } else if (detail_mode == DETAIL_MODE_PROFESSION) {
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        detail_str = "Profession";
 | 
					 | 
					 | 
					 | 
					        detail_str = "Profession";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    } else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        detail_str = "Goal";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    Screen::paintString(Screen::Pen(' ', 7, 0), col_offsets[DISP_COLUMN_DETAIL], 2, detail_str);
 | 
					 | 
					 | 
					 | 
					    Screen::paintString(Screen::Pen(' ', 7, 0), col_offsets[DISP_COLUMN_DETAIL], 2, detail_str);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1978,9 +2018,32 @@ void viewscreen_unitlaborsst::render()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } else {
 | 
					 | 
					 | 
					 | 
					            } else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                fg = COLOR_LIGHTCYAN;
 | 
					 | 
					 | 
					 | 
					                fg = COLOR_LIGHTCYAN;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            }
 | 
					 | 
					 | 
					 | 
					            }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } else {
 | 
					 | 
					 | 
					 | 
					        } else if (detail_mode == DETAIL_MODE_PROFESSION) {
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            fg = cur->color;
 | 
					 | 
					 | 
					 | 
					            fg = cur->color;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            detail_str = cur->profession;
 | 
					 | 
					 | 
					 | 
					            detail_str = cur->profession;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        } else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            if (cur->goal_gender == UnitInfo::NEUTRAL) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                if (cur->achieved_goal) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    fg = COLOR_LIGHTGREEN;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                } else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    fg = COLOR_BROWN;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } else if (cur->goal_gender == UnitInfo::FEMALE) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                if (cur->achieved_goal) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    fg = COLOR_LIGHTRED;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    fg = COLOR_MAGENTA;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                if (cur->achieved_goal) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    fg = COLOR_LIGHTCYAN;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    fg = COLOR_BLUE;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            detail_str = cur->goal;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }
 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        detail_str.resize(col_widths[DISP_COLUMN_DETAIL]);
 | 
					 | 
					 | 
					 | 
					        detail_str.resize(col_widths[DISP_COLUMN_DETAIL]);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        Screen::paintString(Screen::Pen(' ', fg, bg), col_offsets[DISP_COLUMN_DETAIL], 4 + row, detail_str);
 | 
					 | 
					 | 
					 | 
					        Screen::paintString(Screen::Pen(' ', fg, bg), col_offsets[DISP_COLUMN_DETAIL], 4 + row, detail_str);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -2140,8 +2203,10 @@ void viewscreen_unitlaborsst::render()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            OutputString(15, x, y, "Squad");
 | 
					 | 
					 | 
					 | 
					            OutputString(15, x, y, "Squad");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } else if (detail_mode == DETAIL_MODE_JOB) {
 | 
					 | 
					 | 
					 | 
					        } else if (detail_mode == DETAIL_MODE_JOB) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            OutputString(15, x, y, "Job");
 | 
					 | 
					 | 
					 | 
					            OutputString(15, x, y, "Job");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } else {
 | 
					 | 
					 | 
					 | 
					        } else if (detail_mode == DETAIL_MODE_PROFESSION){
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            OutputString(15, x, y, "Profession");
 | 
					 | 
					 | 
					 | 
					            OutputString(15, x, y, "Profession");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        } else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            OutputString(15, x, y, "Goal");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }
 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        break;
 | 
					 | 
					 | 
					 | 
					        break;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    case ALTSORT_STRESS:
 | 
					 | 
					 | 
					 | 
					    case ALTSORT_STRESS:
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |