diff --git a/Assemblies/Numbers.dll b/Assemblies/Numbers.dll
index 2ca5342..9c6d7be 100644
Binary files a/Assemblies/Numbers.dll and b/Assemblies/Numbers.dll differ
diff --git a/Defs/PawnColumnDef/PawnColumns_Numbers.xml b/Defs/PawnColumnDef/PawnColumns_Numbers.xml
index d79cd4d..3cca929 100644
--- a/Defs/PawnColumnDef/PawnColumns_Numbers.xml
+++ b/Defs/PawnColumnDef/PawnColumns_Numbers.xml
@@ -203,4 +203,10 @@
+
+ Numbers_Traits
+ Numbers.PawnColumnWorker_Traits
+ true
+
+
\ No newline at end of file
diff --git a/Numbers/Numbers.csproj b/Numbers/Numbers.csproj
index 9e3daf8..0f7cf71 100644
--- a/Numbers/Numbers.csproj
+++ b/Numbers/Numbers.csproj
@@ -35,13 +35,16 @@
7.2
false
+
+ false
+
..\packages\Lib.Harmony.2.0.0.8\lib\net472\0Harmony.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll
False
@@ -52,251 +55,251 @@
- ..\..\..\RimWorldWin64_Data\Managed\Unity.TextMeshPro.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\Unity.TextMeshPro.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.AccessibilityModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.AccessibilityModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.AIModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.AIModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.AndroidJNIModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.AndroidJNIModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.AnimationModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.AnimationModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.ARModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.ARModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.AssetBundleModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.AssetBundleModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.AudioModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.AudioModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.ClothModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.ClothModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.ClusterInputModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.ClusterInputModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.ClusterRendererModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.ClusterRendererModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CrashReportingModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.CrashReportingModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.DirectorModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.DirectorModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.DSPGraphModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.DSPGraphModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.FileSystemHttpModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.FileSystemHttpModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.GameCenterModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.GameCenterModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.GridModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.GridModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.HotReloadModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.HotReloadModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.ImageConversionModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.ImageConversionModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.IMGUIModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.IMGUIModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.InputLegacyModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.InputLegacyModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.InputModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.InputModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.JSONSerializeModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.JSONSerializeModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.LocalizationModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.LocalizationModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.ParticleSystemModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.ParticleSystemModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.PerformanceReportingModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.PerformanceReportingModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.Physics2DModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.Physics2DModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.PhysicsModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.PhysicsModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.ProfilerModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.ProfilerModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.ScreenCaptureModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.ScreenCaptureModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.SharedInternalsModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.SharedInternalsModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.SpriteMaskModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.SpriteMaskModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.SpriteShapeModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.SpriteShapeModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.StreamingModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.StreamingModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.SubstanceModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.SubstanceModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.TerrainModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.TerrainModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.TerrainPhysicsModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.TerrainPhysicsModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.TextCoreModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.TextCoreModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.TextRenderingModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.TextRenderingModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.TilemapModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.TilemapModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.TLSModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.TLSModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UI.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.UI.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UIElementsModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.UIElementsModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UIModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.UIModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UmbraModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.UmbraModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UNETModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.UNETModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UnityAnalyticsModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.UnityAnalyticsModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UnityConnectModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.UnityConnectModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UnityTestProtocolModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.UnityTestProtocolModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UnityWebRequestAssetBundleModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.UnityWebRequestAssetBundleModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UnityWebRequestAudioModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.UnityWebRequestAudioModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UnityWebRequestModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.UnityWebRequestModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UnityWebRequestTextureModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.UnityWebRequestTextureModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UnityWebRequestWWWModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.UnityWebRequestWWWModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.VehiclesModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.VehiclesModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.VFXModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.VFXModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.VideoModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.VideoModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.VRModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.VRModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.WindModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.WindModule.dll
False
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.XRModule.dll
+ ..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.XRModule.dll
False
@@ -311,6 +314,7 @@
+
@@ -356,5 +360,8 @@
+
+
+
\ No newline at end of file
diff --git a/Numbers/OptionsMaker.cs b/Numbers/OptionsMaker.cs
index e1430e9..27605d9 100644
--- a/Numbers/OptionsMaker.cs
+++ b/Numbers/OptionsMaker.cs
@@ -23,7 +23,9 @@ private static IEnumerable LivingThings
DefDatabase.GetNamedSilentFail("Numbers_MentalState"),
DefDatabase.GetNamedSilentFail("Numbers_JobCurrent"),
DefDatabase.GetNamedSilentFail("Numbers_JobQueued"),
- DefDatabase.GetNamedSilentFail("Numbers_HediffList") };
+ DefDatabase.GetNamedSilentFail("Numbers_HediffList"),
+ DefDatabase.GetNamedSilentFail("Numbers_Traits")
+ };
private static IEnumerable Prisoners
=> new[] { DefDatabase.GetNamedSilentFail("Numbers_PrisonerInteraction"),
diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Traits.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Traits.cs
new file mode 100644
index 0000000..ddb3558
--- /dev/null
+++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Traits.cs
@@ -0,0 +1,63 @@
+namespace Numbers
+{
+ using RimWorld;
+ using UnityEngine;
+ using Verse;
+ using System.Collections.Generic;
+ using System.Linq;
+
+ //simply copy from PawnColumnWorker_Jobcurrent and implement formatted trait
+ //test with English and Chinese
+ //tested compatible with the mod [more practical traits], even with colorful traits
+ public class PawnColumnWorker_Traits : PawnColumnWorker_Text
+ {
+ protected override string GetTextFor(Pawn pawn)
+ {
+ if (pawn.story == null)
+ {
+ return null;
+ }
+ if (pawn.story.traits.allTraits != null && pawn.story.traits.allTraits.Count!=0)
+ {
+
+ List trait_name_list= new List();
+ foreach (Trait i_trait in pawn.story.traits.allTraits){
+ if (i_trait.def.degreeDatas.Count == 1)
+ {
+ trait_name_list.Add(i_trait.def.degreeDatas.First().label);//use label for multiple language
+ }
+ else
+ {
+ //for something like beauty, the degree matters
+ foreach(TraitDegreeData j_degree in i_trait.def.degreeDatas)
+ {
+ if (j_degree.degree == i_trait.Degree)
+ {
+ trait_name_list.Add(j_degree.label);
+ }
+ }
+ }
+
+ }
+ string text = string.Join(" , ", trait_name_list);
+ GenText.SetTextSizeToFit(text, new Rect(0f, 0f, Mathf.CeilToInt(Text.CalcSize(def.LabelCap).x), GetMinCellHeight(pawn)));
+
+ return text;
+ }
+ return null;
+ }
+
+ protected override string GetTip(Pawn pawn) => GetTextFor(pawn);
+
+ //use a stupid method to sort, maybe it needs to be sharpen
+ public override int Compare(Pawn a, Pawn b)
+ => (GetTextFor(a) ?? string.Empty).CompareTo((GetTextFor(b) ?? string.Empty));
+
+ public override int GetMinWidth(PawnTable table)
+ //adjust width because traits need more space
+ => Mathf.Max(base.GetMinWidth(table), 350);
+
+ public override int GetMinHeaderHeight(PawnTable table)
+ => Mathf.CeilToInt(Text.CalcSize(Numbers_Utility.WordWrapAt(def.LabelCap, GetMinWidth(table))).y);
+ }
+}