public static void init() { { Backstory bs = new Backstory(); bs.identifier = ""; // identifier will be set by ResolveReferences MiscTranslationDef MTdef = DefDatabase <MiscTranslationDef> .GetNamedSilentFail("rjw_vatgrown_sex_slave"); if (MTdef != null) { bs.SetTitle(MTdef.label, MTdef.label); bs.SetTitleShort(MTdef.stringA, MTdef.stringA); bs.baseDesc = MTdef.description; } else { bs.SetTitle("Vat-Grown Sex Slave", "Vat-Grown Sex Slave"); bs.SetTitleShort("SexSlave", "SexSlave"); bs.baseDesc = "NAME is made as a sex machine, rather than a human.During HIS growing period in the factory, HE was taught plenty of social skills and sex skills, just to satisfy various sex demands."; } // bs.skillGains = new Dictionary<string, int> (); bs.skillGainsResolved.Add(DefDatabase <SkillDef> .GetNamed("Social"), 8); // bs.skillGainsResolved = new Dictionary<SkillDef, int> (); // populated by ResolveReferences bs.workDisables = WorkTags.Intellectual; bs.requiredWorkTags = WorkTags.None; bs.slot = BackstorySlot.Childhood; bs.spawnCategories = new List <string>() { "rjw_nymphsCategory", "Slave" }; // Not necessary (I Think) Unprivater.SetProtectedValue("bodyTypeGlobal", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeFemale", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeMale", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeGlobalResolved", bs, BodyTypeDefOf.Thin); Unprivater.SetProtectedValue("bodyTypeFemaleResolved", bs, BodyTypeDefOf.Thin); Unprivater.SetProtectedValue("bodyTypeMaleResolved", bs, BodyTypeDefOf.Thin); //bs.bodyTypeFemale = BodyType.Female; //bs.bodyTypeMale = BodyType.Thin; bs.forcedTraits = new List <TraitEntry>(); bs.forcedTraits.Add(new TraitEntry(xxx.nymphomaniac, 0)); bs.disallowedTraits = new List <TraitEntry>(); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesMen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesWomen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.TooSmart, 0)); bs.shuffleable = true; bs.ResolveReferences(); BackstoryDatabase.AddBackstory(bs); child.vatgrown_sex_slave = bs; //--Log.Message("[RJW]nymph_backstories::init() succeed0"); } { Backstory bs = new Backstory(); bs.identifier = ""; MiscTranslationDef MTdef = DefDatabase <MiscTranslationDef> .GetNamedSilentFail("rjw_feisty"); if (MTdef != null) { bs.SetTitle(MTdef.label, MTdef.label); bs.SetTitleShort(MTdef.stringA, MTdef.stringA); bs.baseDesc = MTdef.description; } else { bs.SetTitle("Feisty Nymph", "Feisty Nymph"); bs.SetTitleShort("Nymph", "Nymph"); bs.baseDesc = "NAME struts around the colony like a conqueror examining a newly annexed territory. You try to focus on your work but HE won't let you."; } bs.skillGainsResolved.Add(DefDatabase <SkillDef> .GetNamed("Social"), -3); bs.skillGainsResolved.Add(DefDatabase <SkillDef> .GetNamed("Shooting"), 2); bs.skillGainsResolved.Add(DefDatabase <SkillDef> .GetNamed("Melee"), 9); bs.workDisables = (WorkTags.Cleaning | WorkTags.Animals | WorkTags.Caring | WorkTags.Artistic | WorkTags.ManualSkilled); bs.requiredWorkTags = WorkTags.None; bs.slot = BackstorySlot.Adulthood; bs.spawnCategories = new List <string>() { "rjw_nymphsCategory", "Slave" }; // Not necessary (I Think) Unprivater.SetProtectedValue("bodyTypeGlobal", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeFemale", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeMale", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeGlobalResolved", bs, BodyTypeDefOf.Thin); Unprivater.SetProtectedValue("bodyTypeFemaleResolved", bs, BodyTypeDefOf.Thin); Unprivater.SetProtectedValue("bodyTypeMaleResolved", bs, BodyTypeDefOf.Thin); bs.forcedTraits = new List <TraitEntry>(); bs.forcedTraits.Add(new TraitEntry(xxx.nymphomaniac, 0)); bs.disallowedTraits = new List <TraitEntry>(); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesMen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesWomen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.TooSmart, 0)); bs.shuffleable = true; bs.ResolveReferences(); BackstoryDatabase.AddBackstory(bs); adult.feisty = bs; //--Log.Message("[RJW]nymph_backstories::init() succeed1"); } { Backstory bs = new Backstory(); bs.identifier = ""; MiscTranslationDef MTdef = DefDatabase <MiscTranslationDef> .GetNamedSilentFail("rjw_curious"); if (MTdef != null) { bs.SetTitle(MTdef.label, MTdef.label); bs.SetTitleShort(MTdef.stringA, MTdef.stringA); bs.baseDesc = MTdef.description; } else { bs.SetTitle("Curious Nymph", "Curious Nymph"); bs.SetTitleShort("Nymph", "Nymph"); bs.baseDesc = "Hold the covering plate back and place the actuator in slot C. Line the rod up. No, that won't do, it needs to be perfect. Now pop the JC-444 chip in place."; } bs.skillGainsResolved.Add(DefDatabase <SkillDef> .GetNamed("Construction"), 2); bs.skillGainsResolved.Add(DefDatabase <SkillDef> .GetNamed("Crafting"), 6); bs.workDisables = (WorkTags.Animals | WorkTags.Artistic | WorkTags.Caring | WorkTags.Cooking | WorkTags.Mining | WorkTags.PlantWork | WorkTags.Violent | WorkTags.ManualDumb); bs.requiredWorkTags = WorkTags.None; bs.slot = BackstorySlot.Adulthood; bs.spawnCategories = new List <string>() { "rjw_nymphsCategory", "Slave" }; // Not necessary (I Think) Unprivater.SetProtectedValue("bodyTypeGlobal", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeFemale", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeMale", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeGlobalResolved", bs, BodyTypeDefOf.Thin); Unprivater.SetProtectedValue("bodyTypeFemaleResolved", bs, BodyTypeDefOf.Thin); Unprivater.SetProtectedValue("bodyTypeMaleResolved", bs, BodyTypeDefOf.Thin); bs.forcedTraits = new List <TraitEntry>(); bs.forcedTraits.Add(new TraitEntry(xxx.nymphomaniac, 0)); bs.disallowedTraits = new List <TraitEntry>(); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesMen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesWomen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.TooSmart, 0)); bs.shuffleable = true; bs.ResolveReferences(); BackstoryDatabase.AddBackstory(bs); adult.curious = bs; //--Log.Message("[RJW]nymph_backstories::init() succeed2"); } { Backstory bs = new Backstory(); bs.identifier = ""; MiscTranslationDef MTdef = DefDatabase <MiscTranslationDef> .GetNamedSilentFail("rjw_tender"); if (MTdef != null) { bs.SetTitle(MTdef.label, MTdef.label); bs.SetTitleShort(MTdef.stringA, MTdef.stringA); bs.baseDesc = MTdef.description; } else { bs.SetTitle("Tender Nymph", "Tender Nymph"); bs.SetTitleShort("Nymph", "Nymph"); bs.baseDesc = "NAME has a pair of charming eyes, and HIS voice is soft and sweet. Due to HIS previous nurse job, HE tends people quite well."; } bs.skillGainsResolved.Add(DefDatabase <SkillDef> .GetNamed("Medicine"), 4); bs.workDisables = (WorkTags.Animals | WorkTags.Artistic | WorkTags.Hauling | WorkTags.Violent | WorkTags.ManualSkilled); bs.requiredWorkTags = WorkTags.None; bs.slot = BackstorySlot.Adulthood; bs.spawnCategories = new List <string>() { "rjw_nymphsCategory", "Slave" }; // Not necessary (I Think) Unprivater.SetProtectedValue("bodyTypeGlobal", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeFemale", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeMale", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeGlobalResolved", bs, BodyTypeDefOf.Thin); Unprivater.SetProtectedValue("bodyTypeFemaleResolved", bs, BodyTypeDefOf.Thin); Unprivater.SetProtectedValue("bodyTypeMaleResolved", bs, BodyTypeDefOf.Thin); bs.forcedTraits = new List <TraitEntry>(); bs.forcedTraits.Add(new TraitEntry(xxx.nymphomaniac, 0)); bs.disallowedTraits = new List <TraitEntry>(); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesMen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesWomen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.TooSmart, 0)); bs.shuffleable = true; bs.ResolveReferences(); BackstoryDatabase.AddBackstory(bs); adult.tender = bs; //--Log.Message("[RJW]nymph_backstories::init() succeed3"); } { Backstory bs = new Backstory(); bs.identifier = ""; MiscTranslationDef MTdef = DefDatabase <MiscTranslationDef> .GetNamedSilentFail("rjw_chatty"); if (MTdef != null) { bs.SetTitle(MTdef.label, MTdef.label); bs.SetTitleShort(MTdef.stringA, MTdef.stringA); bs.baseDesc = MTdef.description; } else { bs.SetTitle("Chatty Nymph", "Chatty Nymph"); bs.SetTitleShort("Nymph", "Nymph"); bs.baseDesc = "No one can be more loquacious than NAME. HECAP has a flexible tongue, a sharp mind, and hot lips."; } bs.skillGainsResolved.Add(DefDatabase <SkillDef> .GetNamed("Social"), 6); bs.workDisables = (WorkTags.Animals | WorkTags.Caring | WorkTags.Artistic | WorkTags.Violent | WorkTags.ManualDumb | WorkTags.ManualSkilled); bs.requiredWorkTags = WorkTags.None; bs.slot = BackstorySlot.Adulthood; bs.spawnCategories = new List <string>() { "rjw_nymphsCategory", "Slave" }; // Not necessary (I Think) Unprivater.SetProtectedValue("bodyTypeGlobal", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeFemale", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeMale", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeGlobalResolved", bs, BodyTypeDefOf.Thin); Unprivater.SetProtectedValue("bodyTypeFemaleResolved", bs, BodyTypeDefOf.Thin); Unprivater.SetProtectedValue("bodyTypeMaleResolved", bs, BodyTypeDefOf.Thin); bs.forcedTraits = new List <TraitEntry>(); bs.forcedTraits.Add(new TraitEntry(xxx.nymphomaniac, 0)); bs.disallowedTraits = new List <TraitEntry>(); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesMen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesWomen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.TooSmart, 0)); bs.shuffleable = true; bs.ResolveReferences(); BackstoryDatabase.AddBackstory(bs); adult.chatty = bs; //--Log.Message("[RJW]nymph_backstories::init() succeed4"); } { Backstory bs = new Backstory(); bs.identifier = ""; MiscTranslationDef MTdef = DefDatabase <MiscTranslationDef> .GetNamedSilentFail("rjw_broken"); if (MTdef != null) { bs.SetTitle(MTdef.label, MTdef.label); bs.SetTitleShort(MTdef.stringA, MTdef.stringA); bs.baseDesc = MTdef.description; } else { bs.SetTitle("Broken Nymph", "Broken Nymph"); bs.SetTitleShort("Nymph", "Nymph"); bs.baseDesc = "Maybe NAME suffered some terrible Things, HE looks rather emaciated, and no one wants to speak with HIM.\nHECAP only behaves a bit vivaciously while staring at some rod-like stuffs."; } bs.skillGainsResolved.Add(DefDatabase <SkillDef> .GetNamed("Social"), -5); bs.skillGainsResolved.Add(DefDatabase <SkillDef> .GetNamed("Artistic"), 8); bs.workDisables = (WorkTags.Cleaning | WorkTags.Animals | WorkTags.Caring | WorkTags.Violent | WorkTags.ManualSkilled); bs.requiredWorkTags = WorkTags.None; bs.slot = BackstorySlot.Adulthood; bs.spawnCategories = new List <string>() { "rjw_nymphsCategory", "Slave" }; // Not necessary (I Think) Unprivater.SetProtectedValue("bodyTypeGlobal", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeFemale", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeMale", bs, "Thin"); Unprivater.SetProtectedValue("bodyTypeGlobalResolved", bs, BodyTypeDefOf.Thin); Unprivater.SetProtectedValue("bodyTypeFemaleResolved", bs, BodyTypeDefOf.Thin); Unprivater.SetProtectedValue("bodyTypeMaleResolved", bs, BodyTypeDefOf.Thin); bs.forcedTraits = new List <TraitEntry>(); bs.forcedTraits.Add(new TraitEntry(xxx.nymphomaniac, 0)); bs.disallowedTraits = new List <TraitEntry>(); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesMen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesWomen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.TooSmart, 0)); bs.shuffleable = true; bs.ResolveReferences(); BackstoryDatabase.AddBackstory(bs); adult.broken = bs; //--Log.Message("[RJW]nymph_backstories::init() succeed5"); } }
public static void init() { { Backstory bs = new Backstory(); bs.identifier = ""; // identifier will be set by ResolveReferences MiscTranslationDef MTdef = DefDatabase <MiscTranslationDef> .GetNamedSilentFail("rjw_vatgrown_sex_slave"); if (MTdef != null) { bs.SetTitle(MTdef.label); bs.SetTitleShort(MTdef.stringA); bs.baseDesc = MTdef.description; } else { bs.SetTitle("Vat-Grown Sex Slave"); bs.SetTitleShort("SexSlave"); bs.baseDesc = "NAME is made as a sex machine, rather than a human.During HIS growing period in the factory, HE was taught plenty of social skills and sex skills, just to satisfy various sex demands."; } // bs.skillGains = new Dictionary<string, int> (); bs.skillGains.Add("Social", 8); // bs.skillGainsResolved = new Dictionary<SkillDef, int> (); // populated by ResolveReferences bs.workDisables = WorkTags.Intellectual; bs.requiredWorkTags = WorkTags.None; bs.slot = BackstorySlot.Childhood; bs.spawnCategories = new List <string>() { "rjw_nymphsCategory", "Slave" }; // Not necessary (I think) bs.bodyTypeGlobal = BodyType.Thin; bs.bodyTypeFemale = BodyType.Female; bs.bodyTypeMale = BodyType.Thin; bs.forcedTraits = new List <TraitEntry>(); bs.forcedTraits.Add(new TraitEntry(xxx.nymphomaniac, 0)); bs.disallowedTraits = new List <TraitEntry>(); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesMen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesWomen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.TooSmart, 0)); bs.shuffleable = true; bs.ResolveReferences(); BackstoryDatabase.AddBackstory(bs); child.vatgrown_sex_slave = bs; //--Log.Message("[RJW]nymph_backstories::init() succeed0"); } { Backstory bs = new Backstory(); bs.identifier = ""; MiscTranslationDef MTdef = DefDatabase <MiscTranslationDef> .GetNamedSilentFail("rjw_feisty"); if (MTdef != null) { bs.SetTitle(MTdef.label); bs.SetTitleShort(MTdef.stringA); bs.baseDesc = MTdef.description; } else { bs.SetTitle("Feisty Nymph"); bs.SetTitleShort("Nymph"); bs.baseDesc = "NAME struts around the colony like a conqueror examining a newly annexed territory. You try to focus on your work but HE won't let you.\n" + "\"I heard what you said about me!\" HE accuses. You didn't say anything about HIM. HECAP knows that. " + "\"Wanna fight?\" HE challenges. You already know what HE means: a few minutes of play wrestling and then you take HIM, or, if you hesitate, HE takes you.\n" + "Though NAME can be hard to get along with you've come to appreciate how HE's more practical than the others.\n" + "You explain to HIM, \"See these things here? They need to be over there\" and \"Those people are trying to kill us, so let's kill them first.\" HECAP listens, and does what is necessary."; } bs.skillGains.Add("Social", -3); bs.skillGains.Add("Shooting", 4); bs.skillGains.Add("Melee", 6); bs.workDisables = (WorkTags.Cleaning | WorkTags.Animals | WorkTags.Caring | WorkTags.Artistic | WorkTags.ManualSkilled); bs.requiredWorkTags = WorkTags.None; bs.slot = BackstorySlot.Adulthood; bs.spawnCategories = new List <string>() { "rjw_nymphsCategory", "Slave" }; // Not necessary (I think) bs.bodyTypeGlobal = BodyType.Thin; bs.bodyTypeFemale = BodyType.Female; bs.bodyTypeMale = BodyType.Thin; bs.forcedTraits = new List <TraitEntry>(); bs.forcedTraits.Add(new TraitEntry(xxx.nymphomaniac, 0)); bs.disallowedTraits = new List <TraitEntry>(); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesMen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesWomen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.TooSmart, 0)); bs.shuffleable = true; bs.ResolveReferences(); BackstoryDatabase.AddBackstory(bs); adult.feisty = bs; //--Log.Message("[RJW]nymph_backstories::init() succeed1"); } { Backstory bs = new Backstory(); bs.identifier = ""; MiscTranslationDef MTdef = DefDatabase <MiscTranslationDef> .GetNamedSilentFail("rjw_curious"); if (MTdef != null) { bs.SetTitle(MTdef.label); bs.SetTitleShort(MTdef.stringA); bs.baseDesc = MTdef.description; } else { bs.SetTitle("Curious Nymph"); bs.SetTitleShort("Nymph"); bs.baseDesc = "Hold the covering plate back and place the actuator in slot C. Line the rod up. No, that won't do, it needs to be perfect. Now pop the JC-444 chip in place. \n" + "Solder the orange wire to pin #16 and the striped wire to pin #5. \n" + "Suddenly, there HE is. You aren't surprised to see NAME, you just didn't hear HIM approach. By now you're used to it. \n" + "You continue your work in silence as HE hovers over you, her large eyes fixated on the rapid, rythmic, deliberate motions of your hands."; } bs.skillGains.Add("Construction", 2); bs.skillGains.Add("Crafting", 6); bs.workDisables = (WorkTags.Animals | WorkTags.Artistic | WorkTags.Caring | WorkTags.Cooking | WorkTags.Mining | WorkTags.PlantWork | WorkTags.Violent | WorkTags.ManualDumb); bs.requiredWorkTags = WorkTags.None; bs.slot = BackstorySlot.Adulthood; bs.spawnCategories = new List <string>() { "rjw_nymphsCategory", "Slave" }; // Not necessary (I think) bs.bodyTypeGlobal = BodyType.Thin; bs.bodyTypeFemale = BodyType.Female; bs.bodyTypeMale = BodyType.Thin; bs.forcedTraits = new List <TraitEntry>(); bs.forcedTraits.Add(new TraitEntry(xxx.nymphomaniac, 0)); bs.disallowedTraits = new List <TraitEntry>(); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesMen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesWomen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.TooSmart, 0)); bs.shuffleable = true; bs.ResolveReferences(); BackstoryDatabase.AddBackstory(bs); adult.curious = bs; //--Log.Message("[RJW]nymph_backstories::init() succeed2"); } { Backstory bs = new Backstory(); bs.identifier = ""; MiscTranslationDef MTdef = DefDatabase <MiscTranslationDef> .GetNamedSilentFail("rjw_tender"); if (MTdef != null) { bs.SetTitle(MTdef.label); bs.SetTitleShort(MTdef.stringA); bs.baseDesc = MTdef.description; } else { bs.SetTitle("Tender Nymph"); bs.SetTitleShort("Nymph"); bs.baseDesc = "NAME has a pair of charming eyes, and HIS voice is soft and sweet. Due to HIS previous nurse job, HE tends people quite well.\n" + "HE's crouched in the corner, hands over HIS ears and tears in HIS eyes." + "You don't understand, then you notice it: the distant sound of the pained squeals of pigs being slaughtered."; } bs.skillGains.Add("Medicine", 4); bs.workDisables = (WorkTags.Animals | WorkTags.Artistic | WorkTags.Hauling | WorkTags.Violent | WorkTags.ManualSkilled); bs.requiredWorkTags = WorkTags.None; bs.slot = BackstorySlot.Adulthood; bs.spawnCategories = new List <string>() { "rjw_nymphsCategory", "Slave" }; // Not necessary (I think) bs.bodyTypeGlobal = BodyType.Thin; bs.bodyTypeFemale = BodyType.Female; bs.bodyTypeMale = BodyType.Thin; bs.forcedTraits = new List <TraitEntry>(); bs.forcedTraits.Add(new TraitEntry(xxx.nymphomaniac, 0)); bs.disallowedTraits = new List <TraitEntry>(); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesMen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesWomen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.TooSmart, 0)); bs.shuffleable = true; bs.ResolveReferences(); BackstoryDatabase.AddBackstory(bs); adult.tender = bs; //--Log.Message("[RJW]nymph_backstories::init() succeed3"); } { Backstory bs = new Backstory(); bs.identifier = ""; MiscTranslationDef MTdef = DefDatabase <MiscTranslationDef> .GetNamedSilentFail("rjw_chatty"); if (MTdef != null) { bs.SetTitle(MTdef.label); bs.SetTitleShort(MTdef.stringA); bs.baseDesc = MTdef.description; } else { bs.SetTitle("Chatty Nymph"); bs.SetTitleShort("Nymph"); bs.baseDesc = "No one can be more loquacious than NAME. HECAP has a flexible tongue, a sharp mind, and hot lips."; } bs.skillGains.Add("Social", 6); bs.workDisables = (WorkTags.Animals | WorkTags.Caring | WorkTags.Artistic | WorkTags.Violent | WorkTags.ManualDumb | WorkTags.ManualSkilled); bs.requiredWorkTags = WorkTags.None; bs.slot = BackstorySlot.Adulthood; bs.spawnCategories = new List <string>() { "rjw_nymphsCategory", "Slave" }; // Not necessary (I think) bs.bodyTypeGlobal = BodyType.Thin; bs.bodyTypeFemale = BodyType.Female; bs.bodyTypeMale = BodyType.Thin; bs.forcedTraits = new List <TraitEntry>(); bs.forcedTraits.Add(new TraitEntry(xxx.nymphomaniac, 0)); bs.disallowedTraits = new List <TraitEntry>(); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesMen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesWomen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.TooSmart, 0)); bs.shuffleable = true; bs.ResolveReferences(); BackstoryDatabase.AddBackstory(bs); adult.chatty = bs; //--Log.Message("[RJW]nymph_backstories::init() succeed4"); } { Backstory bs = new Backstory(); bs.identifier = ""; MiscTranslationDef MTdef = DefDatabase <MiscTranslationDef> .GetNamedSilentFail("rjw_broken"); if (MTdef != null) { bs.SetTitle(MTdef.label); bs.SetTitleShort(MTdef.stringA); bs.baseDesc = MTdef.description; } else { bs.SetTitle("Broken Nymph"); bs.SetTitleShort("Nymph"); bs.baseDesc = "Maybe NAME suffered some terrible things, HE looks rather emaciated, and no one wants to speak with HIM.\n" + "HECAP only behaves a bit vivaciously while staring at some rod-like stuffs."; } bs.skillGains.Add("Social", -5); bs.skillGains.Add("Artistic", 8); bs.workDisables = (WorkTags.Cleaning | WorkTags.Animals | WorkTags.Caring | WorkTags.Violent | WorkTags.ManualSkilled); bs.requiredWorkTags = WorkTags.None; bs.slot = BackstorySlot.Adulthood; bs.spawnCategories = new List <string>() { "rjw_nymphsCategory", "Slave" }; // Not necessary (I think) bs.bodyTypeGlobal = BodyType.Thin; bs.bodyTypeFemale = BodyType.Female; bs.bodyTypeMale = BodyType.Thin; bs.forcedTraits = new List <TraitEntry>(); bs.forcedTraits.Add(new TraitEntry(xxx.nymphomaniac, 0)); bs.disallowedTraits = new List <TraitEntry>(); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesMen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.DislikesWomen, 0)); bs.disallowedTraits.Add(new TraitEntry(TraitDefOf.TooSmart, 0)); bs.shuffleable = true; bs.ResolveReferences(); BackstoryDatabase.AddBackstory(bs); adult.broken = bs; //--Log.Message("[RJW]nymph_backstories::init() succeed5"); } }