public static Name GeneratePawnName(Pawn pawn, NameStyle style = NameStyle.Full, string forcedLastName = null)
 {
     if (style == NameStyle.Full)
     {
         RulePackDef nameGenerator = pawn.RaceProps.GetNameGenerator(pawn.gender);
         if (nameGenerator != null)
         {
             string name = NameGenerator.GenerateName(nameGenerator, (string x) => !new NameSingle(x, false).UsedThisGame, false, null);
             return(new NameSingle(name, false));
         }
         if (pawn.Faction != null && pawn.Faction.def.pawnNameMaker != null)
         {
             string rawName = NameGenerator.GenerateName(pawn.Faction.def.pawnNameMaker, delegate(string x)
             {
                 NameTriple nameTriple4 = NameTriple.FromString(x);
                 nameTriple4.ResolveMissingPieces(forcedLastName);
                 return(!nameTriple4.UsedThisGame);
             }, false, null);
             NameTriple nameTriple = NameTriple.FromString(rawName);
             nameTriple.CapitalizeNick();
             nameTriple.ResolveMissingPieces(forcedLastName);
             return(nameTriple);
         }
         if (pawn.RaceProps.nameCategory != PawnNameCategory.NoName)
         {
             if (Rand.Value < 0.5f)
             {
                 NameTriple nameTriple2 = PawnBioAndNameGenerator.TryGetRandomUnusedSolidName(pawn.gender, forcedLastName);
                 if (nameTriple2 != null)
                 {
                     return(nameTriple2);
                 }
             }
             return(PawnBioAndNameGenerator.GeneratePawnName_Shuffled(pawn, forcedLastName));
         }
         Log.Error("No name making method for " + pawn);
         NameTriple nameTriple3 = NameTriple.FromString(pawn.def.label);
         nameTriple3.ResolveMissingPieces(null);
         return(nameTriple3);
     }
     else
     {
         if (style == NameStyle.Numeric)
         {
             int    num = 1;
             string text;
             while (true)
             {
                 text = pawn.KindLabel + " " + num.ToString();
                 if (!NameUseChecker.NameSingleIsUsed(text))
                 {
                     break;
                 }
                 num++;
             }
             return(new NameSingle(text, true));
         }
         throw new InvalidOperationException();
     }
 }
示例#2
0
        /// <summary>
        /// Creates a cutebold name.
        /// </summary>
        /// <param name="nameMaker">The given name rules.</param>
        /// <param name="forcedLastName">The forced last name.</param>
        /// <returns>Returns a new cutebold name.</returns>
        private static NameTriple CuteboldNameResolver(RulePackDef nameMaker, string forcedLastName)
        {
            NameTriple name = NameTriple.FromString(NameGenerator.GenerateName(nameMaker, null, false, null, null));

            name.CapitalizeNick();
            name.ResolveMissingPieces(forcedLastName);

            return(name);
        }
        private static Name NameResolvedFrom(RulePackDef nameMaker, string forcedLastName)
        {
            NameTriple nameTriple = NameTriple.FromString(NameGenerator.GenerateName(nameMaker, delegate(string x)
            {
                NameTriple nameTriple2 = NameTriple.FromString(x);
                nameTriple2.ResolveMissingPieces(forcedLastName);
                return(!nameTriple2.UsedThisGame);
            }));

            nameTriple.CapitalizeNick();
            nameTriple.ResolveMissingPieces(forcedLastName);
            return(nameTriple);
        }
示例#4
0
        public override void PostSpawnSetup()
        {
            base.PostSpawnSetup();
            this.psykerPowerManager = new PsykerPowerManager(this);
            ChaosFollowerPawnKindDef pdef = this.psyker.kindDef as ChaosFollowerPawnKindDef;

            if (pdef != null && pdef.RenamePawns)
            {
                string rawName = NameGenerator.GenerateName(pdef.OverridingNameRulePack, delegate(string x)
                {
                    NameTriple nameTriple4 = NameTriple.FromString(x);
                    nameTriple4.ResolveMissingPieces(null);
                    return(!nameTriple4.UsedThisGame);
                }, false);
                NameTriple nameTriple = NameTriple.FromString(rawName);
                nameTriple.CapitalizeNick();
                nameTriple.ResolveMissingPieces(null);
                psyker.Name = nameTriple;
            }
        }
示例#5
0
        // RimWorld.PawnBioAndNameGenerator
        public static void GeneratePawnName(Pawn pawn, NameStyle style, string forcedLastName, ref Name __result)
        {
            if (pawn != null && pawn.Faction != null && pawn.Faction.def.defName == "RE_Player")
            {
                var ruleMaker = pawn.gender ==
                                Gender.Female ?
                                DefDatabase <RulePackDef> .GetNamed("RE_STARSNamerFemale")
                    :
                                DefDatabase <RulePackDef> .GetNamed("RE_STARSNamerMale");

                string rawName = NameGenerator.GenerateName(ruleMaker, delegate(string x)
                {
                    NameTriple nameTriple4 = NameTriple.FromString(x);
                    nameTriple4.ResolveMissingPieces(forcedLastName);
                    return(!nameTriple4.UsedThisGame);
                });
                NameTriple nameTriple = NameTriple.FromString(rawName);
                nameTriple.CapitalizeNick();
                nameTriple.ResolveMissingPieces(forcedLastName);
                __result = nameTriple;
            }
        }
示例#6
0
        public static bool Prefix(Pawn pawn, ref Name __result, NameStyle style = 0, string forcedLastName = null)
        {
            if (style != NameStyle.Full)
            {
                return(true);
            }
            RulePackDef nameGenerator = pawn.RaceProps.GetNameGenerator(pawn.gender);

            if (nameGenerator != null)
            {
                if (nameGenerator.defName.Contains("NamerAnimalGeneric"))
                {
                    if (pawn.Faction != null && (pawn.Faction.def.defName.Contains("Tribe") || pawn.Faction.def.defName == "TribalRaiders"))
                    {
                        string        name;
                        RTPN_NameBank nameBank = RTPN_Initializer.BankOf(PawnNameCategory.HumanStandard);
                        name = nameBank.GetName(RTPN_NameSlot.Tribal, pawn.gender);
                        if (Rand.Value < 0.33f)
                        {
                            string subname1;
                            string subname2;
                            float  nickDesc = Rand.Value;
                            if (nickDesc < 0.25)
                            {
                                subname1 = nameBank.GetName(RTPN_NameSlot.Desc, Gender.Female);
                            }
                            else
                            {
                                subname1 = nameBank.GetName(RTPN_NameSlot.Desc, Gender.Male);
                            }
                            float nickObject = Rand.Value;
                            if (nickObject < 0.33)
                            {
                                subname2 = nameBank.GetName(RTPN_NameSlot.Object, Gender.Male);
                            }
                            else if (nickObject < 0.67)
                            {
                                subname2 = nameBank.GetName(RTPN_NameSlot.Object, Gender.Female);
                            }
                            else
                            {
                                subname2 = nameBank.GetName(RTPN_NameSlot.Object, Gender.None);
                            }
                            if (Rand.Value < 0.1)
                            {
                                name = subname2;
                            }
                            else
                            {
                                name = string.Concat(subname1, " ", subname2);
                            }
                        }
                        __result = new NameSingle(name, false);
                        return(false);
                    }
                    else
                    {
                        return(true);
                    }
                }
                return(true);
            }
            if (pawn.Faction != null && pawn.Faction.def.pawnNameMaker != null)
            {
                if (pawn.Faction.def.pawnNameMaker.defName.Contains("NamerPersonTribal"))
                {
                    string        name1;
                    string        name2;
                    string        name3;
                    RTPN_NameBank nameBank = RTPN_Initializer.BankOf(PawnNameCategory.HumanStandard);
                    name3 = nameBank.GetName(RTPN_NameSlot.Tribal, pawn.gender);
                    name1 = nameBank.GetName(RTPN_NameSlot.Tribal, pawn.gender);
                    int num = 0;
                    do
                    {
                        num++;
                        if (Rand.Value >= 0.33f)
                        {
                            name2 = (Rand.Value >= 0.67f ? name3 : name1);
                        }
                        else
                        {
                            string subname1;
                            string subname2;
                            float  nickDesc = Rand.Value;
                            if (nickDesc < 0.25)
                            {
                                subname1 = nameBank.GetName(RTPN_NameSlot.Desc, Gender.Female);
                            }
                            else
                            {
                                subname1 = nameBank.GetName(RTPN_NameSlot.Desc, Gender.Male);
                            }
                            float nickObject = Rand.Value;
                            if (nickObject < 0.33)
                            {
                                subname2 = nameBank.GetName(RTPN_NameSlot.Object, Gender.Male);
                            }
                            else if (nickObject < 0.67)
                            {
                                subname2 = nameBank.GetName(RTPN_NameSlot.Object, Gender.Female);
                            }
                            else
                            {
                                subname2 = nameBank.GetName(RTPN_NameSlot.Object, Gender.None);
                            }
                            if (Rand.Value < 0.1)
                            {
                                name2 = subname2;
                            }
                            else
                            {
                                name2 = string.Concat(subname1, " ", subname2);
                            }
                        }
                    }while (num < 50 && NameUseChecker.AllPawnsNamesEverUsed.Any <Name>((Name x) => {
                        NameTriple nameTriple = x as NameTriple;
                        return(nameTriple == null ? false : nameTriple.Nick == name2);
                    }));
                    name1 = name1 + " '" + name2 + "'";
                    NameTriple fullName = NameTriple.FromString(name1 + " " + name3);
                    fullName.CapitalizeNick();
                    fullName.ResolveMissingPieces(null);
                    __result = fullName;
                    return(false);
                }
            }
            return(true);
        }