├── word_libraries └── default │ ├── human种族国家格言.txt │ ├── mobs │ ├── candy_man后缀.txt │ ├── 船只后缀.txt │ ├── boat_fishing船只后缀.txt │ ├── boat_trading船只后缀.txt │ ├── 丧尸后缀.txt │ ├── boat_transport船只后缀.txt │ ├── battle_boat船只后缀.txt │ ├── 天干地支.txt │ └── 船只名.txt │ ├── items │ ├── bow │ │ ├── bow后缀.txt │ │ ├── iron的bow前缀.txt │ │ ├── adamantine的bow前缀.txt │ │ ├── mythril的bow前缀.txt │ │ ├── steel的bow前缀.txt │ │ └── silver的bow前缀.txt │ ├── leather.txt │ ├── stone.txt │ ├── bone.txt │ ├── bronze.txt │ ├── copper.txt │ ├── iron.txt │ ├── mythril.txt │ ├── wood.txt │ ├── adamantine.txt │ ├── spear │ │ ├── spear后缀.txt │ │ ├── spear名.txt │ │ ├── iron的spear前缀.txt │ │ ├── adamantine的spear前缀.txt │ │ ├── mythril的spear前缀.txt │ │ ├── steel的spear前缀.txt │ │ └── silver的spear前缀.txt │ ├── steel.txt │ ├── axe │ │ ├── axe后缀.txt │ │ ├── 天子axe名.txt │ │ ├── iron的axe前缀.txt │ │ ├── mythril的axe前缀.txt │ │ ├── adamantine的axe前缀.txt │ │ ├── steel的axe前缀.txt │ │ └── silver的axe前缀.txt │ ├── others │ │ ├── 异形冲击波.txt │ │ ├── 霰弹枪.txt │ │ ├── 数字.txt │ │ ├── 德鲁伊法杖.txt │ │ ├── 疫医杖.txt │ │ ├── 邪恶法杖.txt │ │ ├── 死灵法杖.txt │ │ ├── 白色法杖.txt │ │ └── 烈焰之剑.txt │ ├── accessory │ │ ├── ring后缀.txt │ │ ├── amulet后缀.txt │ │ ├── iron的amulet前缀.txt │ │ ├── iron的ring前缀.txt │ │ ├── adamantine的ring前缀.txt │ │ ├── mythril的amulet前缀.txt │ │ ├── mythril的ring前缀.txt │ │ ├── adamantine的amulet前缀.txt │ │ ├── steel的amulet前缀.txt │ │ ├── steel的ring前缀.txt │ │ ├── silver的ring前缀.txt │ │ └── silver的amulet前缀.txt │ ├── armor │ │ ├── helmet后缀.txt │ │ ├── armor后缀.txt │ │ ├── boots后缀.txt │ │ ├── iron的armor前缀.txt │ │ ├── iron的boots前缀.txt │ │ ├── iron的helmet前缀.txt │ │ ├── mythril的armor前缀.txt │ │ ├── mythril的boots前缀.txt │ │ ├── mythril的helmet前缀.txt │ │ ├── adamantine的armor前缀.txt │ │ ├── adamantine的boots前缀.txt │ │ ├── adamantine的helmet前缀.txt │ │ ├── steel的armor前缀.txt │ │ ├── steel的boots前缀.txt │ │ ├── steel的helmet前缀.txt │ │ ├── silver的armor前缀.txt │ │ ├── silver的boots前缀.txt │ │ └── silver的helmet前缀.txt │ ├── hammer │ │ ├── hammer后缀.txt │ │ ├── mythril的hammer前缀.txt │ │ ├── adamantine的hammer前缀.txt │ │ ├── iron的hammer前缀.txt │ │ ├── silver的hammer前缀.txt │ │ └── steel的hammer前缀.txt │ ├── silver.txt │ └── sword │ │ ├── sword后缀.txt │ │ ├── 天子sword名.txt │ │ ├── sword名.txt │ │ ├── iron的sword前缀.txt │ │ ├── mythril的sword前缀.txt │ │ ├── adamantine的sword前缀.txt │ │ ├── steel的sword前缀.txt │ │ └── silver的sword前缀.txt │ ├── 西方国名后缀.txt │ ├── 联盟名后缀.txt │ ├── 联盟格言.txt │ ├── 百家姓.txt │ ├── 常见格言.txt │ ├── 西方名字中缀.txt │ ├── 真实国名.txt │ ├── 西方名字.txt │ ├── 真实城名.txt │ ├── 西方姓氏.txt │ └── 千字文.txt ├── icon.png ├── Code ├── WordLibraryManager.cs ├── Patches │ ├── IPatch.cs │ ├── BookNamePatch.cs │ ├── SubspeciesNamePatch.cs │ ├── LanguageNamePatch.cs │ ├── ReligionNamePatch.cs │ ├── CityNamePatch.cs │ ├── CultureNamePatch.cs │ ├── AllianceNamePatch.cs │ ├── WarNamePatch.cs │ ├── ItemNamePatch.cs │ ├── ClanNamePatch.cs │ ├── ActorNamePatch.cs │ └── KingdomNamePatch.cs ├── Constants │ └── DataS.cs ├── Exceptions │ └── InvalidKeyCharException.cs ├── WordLibraryAsset.cs ├── ModClass.cs ├── Utils │ └── GeneralUtils.cs ├── CN_NameGeneratorAsset.cs ├── CN_NameGeneratorLibrary.cs ├── ParameterGetters.cs └── CN_NameTemplate.cs ├── mod.json ├── name_generators └── default │ ├── languages.json │ ├── religions.json │ ├── subspecies.json │ ├── mottos.json │ ├── cities.json │ ├── cultures.json │ ├── kingdoms.json │ ├── alliances.json │ ├── clans.json │ ├── creatures.json │ ├── wars.json │ ├── books.json │ ├── armor_and_accessory.json │ ├── weapons.json │ └── other_creatures.json ├── Locales └── 天干地支.csv ├── LICENSE ├── Chinese_Name.sln ├── .gitattributes ├── Chinese_Name.csproj ├── .gitignore └── README.md /word_libraries/default/human种族国家格言.txt: -------------------------------------------------------------------------------- 1 | 人类 -------------------------------------------------------------------------------- /word_libraries/default/mobs/candy_man后缀.txt: -------------------------------------------------------------------------------- 1 | 姜饼人 -------------------------------------------------------------------------------- /word_libraries/default/mobs/船只后缀.txt: -------------------------------------------------------------------------------- 1 | 号 2 | 船只 -------------------------------------------------------------------------------- /word_libraries/default/items/bow/bow后缀.txt: -------------------------------------------------------------------------------- 1 | 弓 2 | 天引 -------------------------------------------------------------------------------- /word_libraries/default/items/leather.txt: -------------------------------------------------------------------------------- 1 | 皮 2 | 皮革 3 | 皮制 -------------------------------------------------------------------------------- /word_libraries/default/items/stone.txt: -------------------------------------------------------------------------------- 1 | 石 2 | 石制 3 | 磨制石 -------------------------------------------------------------------------------- /word_libraries/default/items/bone.txt: -------------------------------------------------------------------------------- 1 | 蛮 2 | 骨头 3 | 野蛮 4 | 骨制 -------------------------------------------------------------------------------- /word_libraries/default/items/bronze.txt: -------------------------------------------------------------------------------- 1 | 青铜 2 | 黄铜 3 | 古铜 4 | 铜花 -------------------------------------------------------------------------------- /word_libraries/default/items/copper.txt: -------------------------------------------------------------------------------- 1 | 铜 2 | 赤铜 3 | 古铜 4 | 铜色 -------------------------------------------------------------------------------- /word_libraries/default/items/iron.txt: -------------------------------------------------------------------------------- 1 | 铁 2 | 精铁 3 | 硬铁 4 | 白铁 -------------------------------------------------------------------------------- /word_libraries/default/items/mythril.txt: -------------------------------------------------------------------------------- 1 | 秘银 2 | 蓝银 3 | 蓝光 4 | 蓝钻 -------------------------------------------------------------------------------- /word_libraries/default/items/wood.txt: -------------------------------------------------------------------------------- 1 | 木 2 | 玩具 3 | 木头 4 | 木制 -------------------------------------------------------------------------------- /word_libraries/default/items/adamantine.txt: -------------------------------------------------------------------------------- 1 | 精金 2 | 暗纹 3 | 暗曜 4 | 熔金 -------------------------------------------------------------------------------- /word_libraries/default/items/spear/spear后缀.txt: -------------------------------------------------------------------------------- 1 | 矛 2 | 枪 3 | 铩 4 | 刺 -------------------------------------------------------------------------------- /word_libraries/default/items/steel.txt: -------------------------------------------------------------------------------- 1 | 钢 2 | 精钢 3 | 硬钢 4 | 印钢 5 | 百炼 -------------------------------------------------------------------------------- /word_libraries/default/mobs/boat_fishing船只后缀.txt: -------------------------------------------------------------------------------- 1 | 号渔船 2 | 号扁舟 3 | 号行舟 -------------------------------------------------------------------------------- /word_libraries/default/mobs/boat_trading船只后缀.txt: -------------------------------------------------------------------------------- 1 | 号贸易船 2 | 号商船 3 | 号 -------------------------------------------------------------------------------- /word_libraries/default/mobs/丧尸后缀.txt: -------------------------------------------------------------------------------- 1 | 僵尸 2 | 丧尸 3 | 丧尸 4 | 行尸 5 | 行尸 -------------------------------------------------------------------------------- /word_libraries/default/items/axe/axe后缀.txt: -------------------------------------------------------------------------------- 1 | 斧 2 | 战斧 3 | 板斧 4 | 之怒 5 | 之斩 -------------------------------------------------------------------------------- /word_libraries/default/items/others/异形冲击波.txt: -------------------------------------------------------------------------------- 1 | 冲击波 2 | 震天星 3 | 异能炮 4 | 外星科技 -------------------------------------------------------------------------------- /word_libraries/default/items/others/霰弹枪.txt: -------------------------------------------------------------------------------- 1 | 霰弹枪 2 | 狂怒屠夫 3 | 毁灭者 4 | 狂怒风暴 -------------------------------------------------------------------------------- /word_libraries/default/mobs/boat_transport船只后缀.txt: -------------------------------------------------------------------------------- 1 | 号运输船 2 | 号船 3 | 舰 4 | 号 -------------------------------------------------------------------------------- /word_libraries/default/西方国名后缀.txt: -------------------------------------------------------------------------------- 1 | 城邦 2 | 国 3 | 王国 4 | 公国 5 | 帝国 6 | 共和国 -------------------------------------------------------------------------------- /word_libraries/default/items/accessory/ring后缀.txt: -------------------------------------------------------------------------------- 1 | 戒 2 | 环 3 | 戒指 4 | 指环 5 | 板戒 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/helmet后缀.txt: -------------------------------------------------------------------------------- 1 | 盔 2 | 冠 3 | 头盔 4 | 头冠 5 | 之冠 -------------------------------------------------------------------------------- /word_libraries/default/items/hammer/hammer后缀.txt: -------------------------------------------------------------------------------- 1 | 锤 2 | 之锤 3 | 之力 4 | 之怒 5 | 之勇 -------------------------------------------------------------------------------- /word_libraries/default/items/silver.txt: -------------------------------------------------------------------------------- 1 | 银 2 | 白银 3 | 亮银 4 | 银光 5 | 银辉 6 | 银白 -------------------------------------------------------------------------------- /word_libraries/default/mobs/battle_boat船只后缀.txt: -------------------------------------------------------------------------------- 1 | 号战船 2 | 号战舰 3 | 号船 4 | 舰 5 | 号 -------------------------------------------------------------------------------- /word_libraries/default/联盟名后缀.txt: -------------------------------------------------------------------------------- 1 | 联盟 2 | 联盟 3 | 联盟 4 | 联盟 5 | 会盟 6 | 会盟 7 | 条约 -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WorldBoxOpenMods/ChineseName/HEAD/icon.png -------------------------------------------------------------------------------- /word_libraries/default/items/armor/armor后缀.txt: -------------------------------------------------------------------------------- 1 | 甲 2 | 铠 3 | 护甲 4 | 甲胄 5 | 铠甲 6 | 之铠 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/boots后缀.txt: -------------------------------------------------------------------------------- 1 | 步 2 | 靴 3 | 鞋 4 | 战靴 5 | 之步 6 | 之影 -------------------------------------------------------------------------------- /word_libraries/default/items/sword/sword后缀.txt: -------------------------------------------------------------------------------- 1 | 剑 2 | 刃 3 | 锋 4 | 斩 5 | 之剑 6 | 之刃 -------------------------------------------------------------------------------- /word_libraries/default/items/accessory/amulet后缀.txt: -------------------------------------------------------------------------------- 1 | 佩 2 | 符 3 | 链 4 | 佩链 5 | 护符 6 | 项链 -------------------------------------------------------------------------------- /word_libraries/default/items/others/数字.txt: -------------------------------------------------------------------------------- 1 | 0 2 | 1 3 | 2 4 | 3 5 | 4 6 | 5 7 | 6 8 | 7 9 | 8 10 | 9 -------------------------------------------------------------------------------- /Code/WordLibraryManager.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WorldBoxOpenMods/ChineseName/HEAD/Code/WordLibraryManager.cs -------------------------------------------------------------------------------- /Code/Patches/IPatch.cs: -------------------------------------------------------------------------------- 1 | namespace Chinese_Name; 2 | 3 | public interface IPatch 4 | { 5 | public void Initialize(); 6 | } -------------------------------------------------------------------------------- /word_libraries/default/items/others/德鲁伊法杖.txt: -------------------------------------------------------------------------------- 1 | 德鲁伊法杖 2 | 德鲁伊的呼唤 3 | 生灵之风 4 | 旷野之息 5 | 生命礼赞 6 | 生灵欢悦 7 | 青葱悦耳 8 | 清风徐来 9 | 繁花似锦 10 | 氤氲之息 11 | 春氤笙歌 -------------------------------------------------------------------------------- /word_libraries/default/items/others/疫医杖.txt: -------------------------------------------------------------------------------- 1 | 疫医手杖 2 | 赞歌 3 | 医者仁心 4 | 治愈之杖 5 | 拉斐尔福音 6 | 疫医手杖 7 | 良知 8 | 乌鸦手杖 9 | 生命之星 10 | 阿斯克勒庇奥斯之杖 11 | 百善权杖 12 | 黎明之息 -------------------------------------------------------------------------------- /word_libraries/default/items/others/邪恶法杖.txt: -------------------------------------------------------------------------------- 1 | 邪恶法杖 2 | 撒旦权杖 3 | 烈火之源 4 | 热浪权杖 5 | 邪恶法杖 6 | 火炎冲击 7 | 火魔杖 8 | 邪恶之源 9 | 烈焰支配者 10 | 烈火权能 11 | 灭世权杖 12 | 死亡烈焱 13 | 恐惧之红 -------------------------------------------------------------------------------- /word_libraries/default/items/others/死灵法杖.txt: -------------------------------------------------------------------------------- 1 | 死灵法杖 2 | 死灵呼唤 3 | 天灾法杖 4 | 天灾呼唤 5 | 灾厄法杖 6 | 灾厄呼唤 7 | 厄难法杖 8 | 悲叹之墙 9 | 灾厄之源 10 | 黑魔杖 11 | 生灵烬灭 12 | 堕落之源 13 | 亡语 14 | 亡骸之音 -------------------------------------------------------------------------------- /word_libraries/default/items/others/白色法杖.txt: -------------------------------------------------------------------------------- 1 | 白色法杖 2 | 冰霜叹息 3 | 冰魄 4 | 白露 5 | 雪原之风 6 | 雪风暴 7 | 水之波纹 8 | 珈百璃权能 9 | 米迦勒神谕 10 | 冰封法杖 11 | 神曲 12 | 瑞雪兆丰 13 | 细雪之舞 14 | 清泉流响 -------------------------------------------------------------------------------- /word_libraries/default/items/axe/天子axe名.txt: -------------------------------------------------------------------------------- 1 | 开天斧 2 | 宣花斧 3 | 桀骜斧 4 | 龙纹斧 5 | 龙啸斧 6 | 龙渊斧 7 | 澈金斧 8 | 纵横斧 9 | 銮金斧 10 | 应龙斧 11 | 惊铭斧 12 | 震岳斧 13 | 开山斧 14 | 游龙斧 15 | 五雷斧 16 | 鼎峰斧 -------------------------------------------------------------------------------- /mod.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "中文名", 3 | "author": "一米", 4 | "version": "1.5.0", 5 | "description": "\"简简单单\"的中文名", 6 | "iconPath": "icon.png", 7 | "GUID": "一米_中文名" 8 | } -------------------------------------------------------------------------------- /name_generators/default/languages.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "human_lang", 4 | "templates": [ 5 | { 6 | "format": "{千字文}#语#", 7 | "weight": 4 8 | } 9 | ] 10 | } 11 | ] -------------------------------------------------------------------------------- /word_libraries/default/items/spear/spear名.txt: -------------------------------------------------------------------------------- 1 | 惊龙 2 | 月如钩 3 | 终明月 4 | 入云龙 5 | 缚苍龙 6 | 霸王枪 7 | 急先锋 8 | 战未休 9 | 秋风劲 10 | 叹零丁 11 | 闲风眠 12 | 天行健 13 | 玉柄龙 14 | 铁骑烽火 15 | 驰骋天下 16 | 势如破竹 17 | 死亡之风 18 | 所向披靡 19 | 浑天云舞 -------------------------------------------------------------------------------- /word_libraries/default/items/others/烈焰之剑.txt: -------------------------------------------------------------------------------- 1 | 烈焰之剑 2 | 火之高兴 3 | 烈焰剑 4 | 路西法之翼 5 | 炎魔斩 6 | 烈焰战刃 7 | 炽炼刀 8 | 炎魔剑 9 | 烈火剑 10 | 火炎焱燚剑 11 | 赤刹 12 | 赤狱 13 | 炼狱战刃 14 | 狱血魔刃 15 | 炼狱剑 16 | 暴戾之心 17 | 烈焱之剑 18 | 烈焰焚心 19 | 赤炼焰翼 -------------------------------------------------------------------------------- /name_generators/default/religions.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "human_religion", 4 | "templates": [ 5 | { 6 | "format": "{百家姓}{千字文}#教#", 7 | "weight": 4 8 | } 9 | ] 10 | } 11 | ] -------------------------------------------------------------------------------- /Code/Constants/DataS.cs: -------------------------------------------------------------------------------- 1 | namespace Chinese_Name.constants; 2 | 3 | public static class DataS 4 | { 5 | public const string family_name = "chinese_family_name"; 6 | internal const string family_name_in_template = "family_name"; 7 | } -------------------------------------------------------------------------------- /word_libraries/default/items/sword/天子sword名.txt: -------------------------------------------------------------------------------- 1 | 太阿剑 2 | 泰阿剑 3 | 天子剑 4 | 轩辕剑 5 | 人皇剑 6 | 湛卢剑 7 | 七星剑 8 | 承影剑 9 | 赤霄剑 10 | 太阿剑 11 | 龙渊剑 12 | 龙源剑 13 | 龙啸剑 14 | 长歌剑 15 | 龙泉剑 16 | 镆铘剑 17 | 应龙剑 18 | 四海剑 19 | 护龙剑 20 | 七圣剑 21 | 封圣剑 22 | 封帝剑 -------------------------------------------------------------------------------- /word_libraries/default/items/sword/sword名.txt: -------------------------------------------------------------------------------- 1 | 逆刃 2 | 棠溪 3 | 易水寒 4 | 断水流 5 | 鬼见愁 6 | 风迎雪 7 | 守四方 8 | 万仞寒 9 | 鹧鸪天 10 | 匹夫剑 11 | 云飞扬 12 | 江湖笑 13 | 伐无道 14 | 度春秋 15 | 意难平 16 | 碎流风 17 | 秋月白 18 | 夺命龙 19 | 落秋霜 20 | 侠客行 21 | 止战之殇 22 | 戮力同心 23 | 流刃若火 24 | 胜利誓约 -------------------------------------------------------------------------------- /name_generators/default/subspecies.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "default_species", 4 | "default_template": { 5 | "format": "$天干地支纪年$$locale$#亚种#" 6 | }, 7 | "templates": [ 8 | { 9 | "format": "$天干地支纪年$$locale$#亚种#" 10 | } 11 | ] 12 | } 13 | ] -------------------------------------------------------------------------------- /Code/Exceptions/InvalidKeyCharException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Chinese_Name.exceptions; 4 | 5 | public class InvalidKeyCharException : Exception 6 | { 7 | public InvalidKeyCharException(char ch, int idx, string raw_str, string post_desc) : base($"Invalid key char '{ch}' at {idx} in \"{raw_str}\". ({post_desc})") 8 | { 9 | } 10 | } -------------------------------------------------------------------------------- /word_libraries/default/items/axe/iron的axe前缀.txt: -------------------------------------------------------------------------------- 1 | 铁 2 | 精铁 3 | 硬铁 4 | 白铁 5 | 钺 6 | 霸 7 | 战 8 | 荒 9 | 游 10 | 旋风 11 | 星光 12 | 狂战 13 | 血吼 14 | 维京 15 | 宣花 16 | 桀骜 17 | 龙纹 18 | 湛金 19 | 澈金 20 | 纵横 21 | 断崖 22 | 奥金 23 | 銮金 24 | 风暴 25 | 奥金 26 | 落魂 27 | 毁躯 28 | 无量 29 | 游龙 30 | 睚眦 31 | 五雷 32 | 血阳 33 | 厄运 34 | 贯石 35 | 断峰 36 | 豪迈 37 | 天罡 38 | 巨灵 39 | 鼎峰 40 | 裂魂 41 | 狂蛮 42 | 野蛮 43 | 毁灭 44 | 凌绝 45 | 盘龙 46 | 明光 47 | 武烈 48 | 骁战 49 | 征伐 50 | 咆哮 51 | 战吼 -------------------------------------------------------------------------------- /word_libraries/default/items/axe/mythril的axe前缀.txt: -------------------------------------------------------------------------------- 1 | 秘银 2 | 蓝银 3 | 蓝光 4 | 蓝钻 5 | 钺 6 | 霸 7 | 战 8 | 荒 9 | 游 10 | 旋风 11 | 星光 12 | 狂战 13 | 血吼 14 | 维京 15 | 宣花 16 | 桀骜 17 | 龙纹 18 | 湛金 19 | 澈金 20 | 纵横 21 | 断崖 22 | 奥金 23 | 銮金 24 | 风暴 25 | 奥金 26 | 落魂 27 | 毁躯 28 | 无量 29 | 游龙 30 | 睚眦 31 | 五雷 32 | 血阳 33 | 厄运 34 | 贯石 35 | 断峰 36 | 豪迈 37 | 天罡 38 | 巨灵 39 | 鼎峰 40 | 裂魂 41 | 狂蛮 42 | 野蛮 43 | 毁灭 44 | 凌绝 45 | 盘龙 46 | 明光 47 | 武烈 48 | 骁战 49 | 征伐 50 | 咆哮 51 | 战吼 -------------------------------------------------------------------------------- /word_libraries/default/items/axe/adamantine的axe前缀.txt: -------------------------------------------------------------------------------- 1 | 精金 2 | 暗纹 3 | 暗曜 4 | 熔金 5 | 钺 6 | 霸 7 | 战 8 | 荒 9 | 游 10 | 旋风 11 | 星光 12 | 狂战 13 | 血吼 14 | 维京 15 | 宣花 16 | 桀骜 17 | 龙纹 18 | 湛金 19 | 澈金 20 | 纵横 21 | 断崖 22 | 奥金 23 | 銮金 24 | 风暴 25 | 奥金 26 | 落魂 27 | 毁躯 28 | 无量 29 | 游龙 30 | 睚眦 31 | 五雷 32 | 血阳 33 | 厄运 34 | 贯石 35 | 断峰 36 | 豪迈 37 | 天罡 38 | 巨灵 39 | 鼎峰 40 | 裂魂 41 | 狂蛮 42 | 野蛮 43 | 毁灭 44 | 凌绝 45 | 盘龙 46 | 明光 47 | 武烈 48 | 骁战 49 | 征伐 50 | 咆哮 51 | 战吼 -------------------------------------------------------------------------------- /word_libraries/default/items/axe/steel的axe前缀.txt: -------------------------------------------------------------------------------- 1 | 钢 2 | 精钢 3 | 硬钢 4 | 印钢 5 | 百炼 6 | 钺 7 | 霸 8 | 战 9 | 荒 10 | 游 11 | 旋风 12 | 星光 13 | 狂战 14 | 血吼 15 | 维京 16 | 宣花 17 | 桀骜 18 | 龙纹 19 | 湛金 20 | 澈金 21 | 纵横 22 | 断崖 23 | 奥金 24 | 銮金 25 | 风暴 26 | 奥金 27 | 落魂 28 | 毁躯 29 | 无量 30 | 游龙 31 | 睚眦 32 | 五雷 33 | 血阳 34 | 厄运 35 | 贯石 36 | 断峰 37 | 豪迈 38 | 天罡 39 | 巨灵 40 | 鼎峰 41 | 裂魂 42 | 狂蛮 43 | 野蛮 44 | 毁灭 45 | 凌绝 46 | 盘龙 47 | 明光 48 | 武烈 49 | 骁战 50 | 征伐 51 | 咆哮 52 | 战吼 -------------------------------------------------------------------------------- /word_libraries/default/items/axe/silver的axe前缀.txt: -------------------------------------------------------------------------------- 1 | 银 2 | 白银 3 | 亮银 4 | 银光 5 | 银辉 6 | 银白 7 | 钺 8 | 霸 9 | 战 10 | 荒 11 | 游 12 | 旋风 13 | 星光 14 | 狂战 15 | 血吼 16 | 维京 17 | 宣花 18 | 桀骜 19 | 龙纹 20 | 湛金 21 | 澈金 22 | 纵横 23 | 断崖 24 | 奥金 25 | 銮金 26 | 风暴 27 | 奥金 28 | 落魂 29 | 毁躯 30 | 无量 31 | 游龙 32 | 睚眦 33 | 五雷 34 | 血阳 35 | 厄运 36 | 贯石 37 | 断峰 38 | 豪迈 39 | 天罡 40 | 巨灵 41 | 鼎峰 42 | 裂魂 43 | 狂蛮 44 | 野蛮 45 | 毁灭 46 | 凌绝 47 | 盘龙 48 | 明光 49 | 武烈 50 | 骁战 51 | 征伐 52 | 咆哮 53 | 战吼 54 | -------------------------------------------------------------------------------- /word_libraries/default/items/sword/iron的sword前缀.txt: -------------------------------------------------------------------------------- 1 | 铁 2 | 精铁 3 | 硬铁 4 | 白铁 5 | 湛卢 6 | 七星 7 | 承影 8 | 雪霁 9 | 鱼肠 10 | 决云 11 | 长歌 12 | 龙泉 13 | 五虎 14 | 倚天 15 | 绣春 16 | 镆铘 17 | 贯虹 18 | 浮光 19 | 浮花 20 | 柔云 21 | 兴云 22 | 落阳 23 | 迷踪 24 | 白露 25 | 渡厄 26 | 镇妖 27 | 九阳 28 | 照天 29 | 莲华 30 | 洞玄 31 | 璇玑 32 | 大衍 33 | 上清 34 | 星枢 35 | 洞真 36 | 点苍 37 | 化脉 38 | 流萤 39 | 流影 40 | 凌空 41 | 云川 42 | 定影 43 | 御风 44 | 凌绝 45 | 飞星 46 | 沧耳 47 | 七曜 48 | 玄翦 49 | 青明 50 | 明光 51 | 武烈 52 | 日影 53 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/sword/mythril的sword前缀.txt: -------------------------------------------------------------------------------- 1 | 秘银 2 | 蓝银 3 | 蓝光 4 | 蓝钻 5 | 湛卢 6 | 七星 7 | 承影 8 | 雪霁 9 | 鱼肠 10 | 决云 11 | 长歌 12 | 龙泉 13 | 五虎 14 | 倚天 15 | 绣春 16 | 镆铘 17 | 贯虹 18 | 浮光 19 | 浮花 20 | 柔云 21 | 兴云 22 | 落阳 23 | 迷踪 24 | 白露 25 | 渡厄 26 | 镇妖 27 | 九阳 28 | 照天 29 | 莲华 30 | 洞玄 31 | 璇玑 32 | 大衍 33 | 上清 34 | 星枢 35 | 洞真 36 | 点苍 37 | 化脉 38 | 流萤 39 | 流影 40 | 凌空 41 | 云川 42 | 定影 43 | 御风 44 | 凌绝 45 | 飞星 46 | 沧耳 47 | 七曜 48 | 玄翦 49 | 青明 50 | 明光 51 | 武烈 52 | 日影 53 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/sword/adamantine的sword前缀.txt: -------------------------------------------------------------------------------- 1 | 精金 2 | 暗纹 3 | 暗曜 4 | 熔金 5 | 湛卢 6 | 七星 7 | 承影 8 | 雪霁 9 | 鱼肠 10 | 决云 11 | 长歌 12 | 龙泉 13 | 五虎 14 | 倚天 15 | 绣春 16 | 镆铘 17 | 贯虹 18 | 浮光 19 | 浮花 20 | 柔云 21 | 兴云 22 | 落阳 23 | 迷踪 24 | 白露 25 | 渡厄 26 | 镇妖 27 | 九阳 28 | 照天 29 | 莲华 30 | 洞玄 31 | 璇玑 32 | 大衍 33 | 上清 34 | 星枢 35 | 洞真 36 | 点苍 37 | 化脉 38 | 流萤 39 | 流影 40 | 凌空 41 | 云川 42 | 定影 43 | 御风 44 | 凌绝 45 | 飞星 46 | 沧耳 47 | 七曜 48 | 玄翦 49 | 青明 50 | 明光 51 | 武烈 52 | 日影 53 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/sword/steel的sword前缀.txt: -------------------------------------------------------------------------------- 1 | 钢 2 | 精钢 3 | 硬钢 4 | 印钢 5 | 百炼 6 | 湛卢 7 | 七星 8 | 承影 9 | 雪霁 10 | 鱼肠 11 | 决云 12 | 长歌 13 | 龙泉 14 | 五虎 15 | 倚天 16 | 绣春 17 | 镆铘 18 | 贯虹 19 | 浮光 20 | 浮花 21 | 柔云 22 | 兴云 23 | 落阳 24 | 迷踪 25 | 白露 26 | 渡厄 27 | 镇妖 28 | 九阳 29 | 照天 30 | 莲华 31 | 洞玄 32 | 璇玑 33 | 大衍 34 | 上清 35 | 星枢 36 | 洞真 37 | 点苍 38 | 化脉 39 | 流萤 40 | 流影 41 | 凌空 42 | 云川 43 | 定影 44 | 御风 45 | 凌绝 46 | 飞星 47 | 沧耳 48 | 七曜 49 | 玄翦 50 | 青明 51 | 明光 52 | 武烈 53 | 清曜 54 | 日影 -------------------------------------------------------------------------------- /word_libraries/default/items/sword/silver的sword前缀.txt: -------------------------------------------------------------------------------- 1 | 银 2 | 白银 3 | 亮银 4 | 银光 5 | 银辉 6 | 银白 7 | 湛卢 8 | 七星 9 | 承影 10 | 雪霁 11 | 鱼肠 12 | 决云 13 | 长歌 14 | 龙泉 15 | 五虎 16 | 倚天 17 | 绣春 18 | 镆铘 19 | 贯虹 20 | 浮光 21 | 浮花 22 | 柔云 23 | 兴云 24 | 落阳 25 | 迷踪 26 | 白露 27 | 渡厄 28 | 镇妖 29 | 九阳 30 | 照天 31 | 莲华 32 | 洞玄 33 | 璇玑 34 | 大衍 35 | 上清 36 | 星枢 37 | 洞真 38 | 点苍 39 | 化脉 40 | 流萤 41 | 流影 42 | 凌空 43 | 云川 44 | 定影 45 | 御风 46 | 凌绝 47 | 飞星 48 | 沧耳 49 | 七曜 50 | 玄翦 51 | 青明 52 | 明光 53 | 武烈 54 | 日影 55 | 清曜 -------------------------------------------------------------------------------- /Code/WordLibraryAsset.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Chinese_Name; 4 | 5 | public class WordLibraryAsset : Asset 6 | { 7 | public readonly List words; 8 | internal WordLibraryAsset(string id, List words) 9 | { 10 | this.id = id; 11 | this.words = words; 12 | this.words ??= new List(); 13 | } 14 | public string GetRandom() 15 | { 16 | return words.GetRandom(); 17 | } 18 | } -------------------------------------------------------------------------------- /word_libraries/default/items/hammer/mythril的hammer前缀.txt: -------------------------------------------------------------------------------- 1 | 秘银 2 | 蓝银 3 | 蓝光 4 | 蓝钻 5 | 传奇 6 | 混元 7 | 荣耀 8 | 震岳 9 | 鼎力 10 | 翻天 11 | 番天 12 | 裂地 13 | 千钧 14 | 巨象 15 | 纵横 16 | 碎玉 17 | 万石 18 | 灵犀 19 | 震天 20 | 震山 21 | 博浪 22 | 狰狞 23 | 震霆 24 | 雷击 25 | 霆云 26 | 垒山 27 | 烁磊 28 | 垒石 29 | 伐麒 30 | 伐地 31 | 震石 32 | 震川 33 | 轰石 34 | 苍穹 35 | 隆泰 36 | 连山 37 | 归一 38 | 震岳 39 | 破苍 40 | 骁战 41 | 武烈 42 | 吞星 43 | 重峦 44 | 撼地 45 | 伏虎 46 | 玄武 47 | 御风 48 | 伐鼎 49 | 巨灵 50 | 日天 51 | 凌绝 52 | 云川 53 | 明光 54 | 破空 55 | 狴犴 -------------------------------------------------------------------------------- /word_libraries/default/items/accessory/iron的amulet前缀.txt: -------------------------------------------------------------------------------- 1 | 铁 2 | 精铁 3 | 硬铁 4 | 白铁 5 | 灵 6 | 雨光 7 | 金光 8 | 璀璨 9 | 靓丽 10 | 无妄 11 | 七香 12 | 长青 13 | 拘玉 14 | 玲珑 15 | 夺目 16 | 朱雀 17 | 白泽 18 | 凤凰 19 | 螭吻 20 | 重明 21 | 飞燕 22 | 温玉 23 | 灵通 24 | 夜明 25 | 八宝 26 | 鸳鸯 27 | 连理 28 | 玉风 29 | 绵竹 30 | 羽灵 31 | 玉龙 32 | 鱼鳞 33 | 素缨 34 | 拂尘 35 | 化影 36 | 如意 37 | 拂柳 38 | 归尘 39 | 玉清 40 | 玄微 41 | 太微 42 | 玄门 43 | 化影 44 | 御风 45 | 蝶鸢 46 | 无暇 47 | 白露 48 | 凝泪 49 | 赤心 50 | 凌绝 51 | 云川 52 | 沧耳 53 | 七曜 54 | 青明 55 | 明光 56 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/accessory/iron的ring前缀.txt: -------------------------------------------------------------------------------- 1 | 铁 2 | 精铁 3 | 硬铁 4 | 白铁 5 | 灵 6 | 雨光 7 | 金光 8 | 璀璨 9 | 靓丽 10 | 无妄 11 | 七香 12 | 长青 13 | 拘玉 14 | 玲珑 15 | 夺目 16 | 朱雀 17 | 白泽 18 | 凤凰 19 | 螭吻 20 | 重明 21 | 飞燕 22 | 温玉 23 | 灵通 24 | 夜明 25 | 八宝 26 | 鸳鸯 27 | 连理 28 | 玉风 29 | 绵竹 30 | 羽灵 31 | 玉龙 32 | 鱼鳞 33 | 素缨 34 | 拂尘 35 | 化影 36 | 如意 37 | 拂柳 38 | 归尘 39 | 玉清 40 | 玄微 41 | 太微 42 | 玄门 43 | 化影 44 | 御风 45 | 蝶鸢 46 | 无暇 47 | 白露 48 | 凝泪 49 | 赤心 50 | 凌绝 51 | 云川 52 | 沧耳 53 | 七曜 54 | 青明 55 | 明光 56 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/hammer/adamantine的hammer前缀.txt: -------------------------------------------------------------------------------- 1 | 精金 2 | 暗纹 3 | 暗曜 4 | 熔金 5 | 传奇 6 | 混元 7 | 荣耀 8 | 震岳 9 | 鼎力 10 | 翻天 11 | 番天 12 | 裂地 13 | 千钧 14 | 巨象 15 | 纵横 16 | 碎玉 17 | 万石 18 | 灵犀 19 | 震天 20 | 震山 21 | 博浪 22 | 狰狞 23 | 震霆 24 | 雷击 25 | 霆云 26 | 垒山 27 | 烁磊 28 | 垒石 29 | 伐麒 30 | 伐地 31 | 震石 32 | 震川 33 | 轰石 34 | 苍穹 35 | 隆泰 36 | 连山 37 | 归一 38 | 震岳 39 | 破苍 40 | 骁战 41 | 武烈 42 | 吞星 43 | 重峦 44 | 撼地 45 | 伏虎 46 | 玄武 47 | 御风 48 | 伐鼎 49 | 巨灵 50 | 日天 51 | 凌绝 52 | 云川 53 | 明光 54 | 破空 55 | 狴犴 -------------------------------------------------------------------------------- /word_libraries/default/items/hammer/iron的hammer前缀.txt: -------------------------------------------------------------------------------- 1 | 铁 2 | 方铁 3 | 精铁 4 | 硬铁 5 | 白铁 6 | 传奇 7 | 混元 8 | 荣耀 9 | 震岳 10 | 鼎力 11 | 翻天 12 | 番天 13 | 裂地 14 | 千钧 15 | 巨象 16 | 纵横 17 | 碎玉 18 | 万石 19 | 灵犀 20 | 震天 21 | 震山 22 | 博浪 23 | 狰狞 24 | 震霆 25 | 雷击 26 | 霆云 27 | 垒山 28 | 烁磊 29 | 垒石 30 | 伐麒 31 | 伐地 32 | 震石 33 | 震川 34 | 轰石 35 | 苍穹 36 | 隆泰 37 | 连山 38 | 归一 39 | 震岳 40 | 破苍 41 | 骁战 42 | 武烈 43 | 吞星 44 | 重峦 45 | 撼地 46 | 伏虎 47 | 玄武 48 | 御风 49 | 伐鼎 50 | 巨灵 51 | 日天 52 | 凌绝 53 | 云川 54 | 明光 55 | 破空 56 | 狴犴 -------------------------------------------------------------------------------- /word_libraries/default/items/accessory/adamantine的ring前缀.txt: -------------------------------------------------------------------------------- 1 | 精金 2 | 暗纹 3 | 暗曜 4 | 熔金 5 | 灵 6 | 雨光 7 | 金光 8 | 璀璨 9 | 靓丽 10 | 无妄 11 | 七香 12 | 长青 13 | 拘玉 14 | 玲珑 15 | 夺目 16 | 朱雀 17 | 白泽 18 | 凤凰 19 | 螭吻 20 | 重明 21 | 飞燕 22 | 温玉 23 | 灵通 24 | 夜明 25 | 八宝 26 | 鸳鸯 27 | 连理 28 | 玉风 29 | 绵竹 30 | 羽灵 31 | 玉龙 32 | 鱼鳞 33 | 素缨 34 | 拂尘 35 | 化影 36 | 如意 37 | 拂柳 38 | 归尘 39 | 玉清 40 | 玄微 41 | 太微 42 | 玄门 43 | 化影 44 | 御风 45 | 蝶鸢 46 | 无暇 47 | 白露 48 | 凝泪 49 | 赤心 50 | 凌绝 51 | 云川 52 | 沧耳 53 | 七曜 54 | 青明 55 | 明光 56 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/accessory/mythril的amulet前缀.txt: -------------------------------------------------------------------------------- 1 | 秘银 2 | 蓝银 3 | 蓝光 4 | 蓝钻 5 | 灵 6 | 雨光 7 | 金光 8 | 璀璨 9 | 靓丽 10 | 无妄 11 | 七香 12 | 长青 13 | 拘玉 14 | 玲珑 15 | 夺目 16 | 朱雀 17 | 白泽 18 | 凤凰 19 | 螭吻 20 | 重明 21 | 飞燕 22 | 温玉 23 | 灵通 24 | 夜明 25 | 八宝 26 | 鸳鸯 27 | 连理 28 | 玉风 29 | 绵竹 30 | 羽灵 31 | 玉龙 32 | 鱼鳞 33 | 素缨 34 | 拂尘 35 | 化影 36 | 如意 37 | 拂柳 38 | 归尘 39 | 玉清 40 | 玄微 41 | 太微 42 | 玄门 43 | 化影 44 | 御风 45 | 蝶鸢 46 | 无暇 47 | 白露 48 | 凝泪 49 | 赤心 50 | 凌绝 51 | 云川 52 | 沧耳 53 | 七曜 54 | 青明 55 | 明光 56 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/accessory/mythril的ring前缀.txt: -------------------------------------------------------------------------------- 1 | 秘银 2 | 蓝银 3 | 蓝光 4 | 蓝钻 5 | 灵 6 | 雨光 7 | 金光 8 | 璀璨 9 | 靓丽 10 | 无妄 11 | 七香 12 | 长青 13 | 拘玉 14 | 玲珑 15 | 夺目 16 | 朱雀 17 | 白泽 18 | 凤凰 19 | 螭吻 20 | 重明 21 | 飞燕 22 | 温玉 23 | 灵通 24 | 夜明 25 | 八宝 26 | 鸳鸯 27 | 连理 28 | 玉风 29 | 绵竹 30 | 羽灵 31 | 玉龙 32 | 鱼鳞 33 | 素缨 34 | 拂尘 35 | 化影 36 | 如意 37 | 拂柳 38 | 归尘 39 | 玉清 40 | 玄微 41 | 太微 42 | 玄门 43 | 化影 44 | 御风 45 | 蝶鸢 46 | 无暇 47 | 白露 48 | 凝泪 49 | 赤心 50 | 凌绝 51 | 云川 52 | 沧耳 53 | 七曜 54 | 青明 55 | 明光 56 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/accessory/adamantine的amulet前缀.txt: -------------------------------------------------------------------------------- 1 | 精金 2 | 暗纹 3 | 暗曜 4 | 熔金 5 | 灵 6 | 雨光 7 | 金光 8 | 璀璨 9 | 靓丽 10 | 无妄 11 | 七香 12 | 长青 13 | 拘玉 14 | 玲珑 15 | 夺目 16 | 朱雀 17 | 白泽 18 | 凤凰 19 | 螭吻 20 | 重明 21 | 飞燕 22 | 温玉 23 | 灵通 24 | 夜明 25 | 八宝 26 | 鸳鸯 27 | 连理 28 | 玉风 29 | 绵竹 30 | 羽灵 31 | 玉龙 32 | 鱼鳞 33 | 素缨 34 | 拂尘 35 | 化影 36 | 如意 37 | 拂柳 38 | 归尘 39 | 玉清 40 | 玄微 41 | 太微 42 | 玄门 43 | 化影 44 | 御风 45 | 蝶鸢 46 | 无暇 47 | 白露 48 | 凝泪 49 | 赤心 50 | 凌绝 51 | 云川 52 | 沧耳 53 | 七曜 54 | 青明 55 | 明光 56 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/accessory/steel的amulet前缀.txt: -------------------------------------------------------------------------------- 1 | 钢 2 | 精钢 3 | 硬钢 4 | 印钢 5 | 百炼 6 | 灵 7 | 雨光 8 | 金光 9 | 璀璨 10 | 靓丽 11 | 无妄 12 | 七香 13 | 长青 14 | 拘玉 15 | 玲珑 16 | 夺目 17 | 朱雀 18 | 白泽 19 | 凤凰 20 | 螭吻 21 | 重明 22 | 飞燕 23 | 温玉 24 | 灵通 25 | 夜明 26 | 八宝 27 | 鸳鸯 28 | 连理 29 | 玉风 30 | 绵竹 31 | 羽灵 32 | 玉龙 33 | 鱼鳞 34 | 素缨 35 | 拂尘 36 | 化影 37 | 如意 38 | 拂柳 39 | 归尘 40 | 玉清 41 | 玄微 42 | 太微 43 | 玄门 44 | 化影 45 | 御风 46 | 蝶鸢 47 | 无暇 48 | 白露 49 | 凝泪 50 | 赤心 51 | 凌绝 52 | 云川 53 | 沧耳 54 | 七曜 55 | 青明 56 | 明光 57 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/accessory/steel的ring前缀.txt: -------------------------------------------------------------------------------- 1 | 钢 2 | 精钢 3 | 硬钢 4 | 印钢 5 | 百炼 6 | 灵 7 | 雨光 8 | 金光 9 | 璀璨 10 | 靓丽 11 | 无妄 12 | 七香 13 | 长青 14 | 拘玉 15 | 玲珑 16 | 夺目 17 | 朱雀 18 | 白泽 19 | 凤凰 20 | 螭吻 21 | 重明 22 | 飞燕 23 | 温玉 24 | 灵通 25 | 夜明 26 | 八宝 27 | 鸳鸯 28 | 连理 29 | 玉风 30 | 绵竹 31 | 羽灵 32 | 玉龙 33 | 鱼鳞 34 | 素缨 35 | 拂尘 36 | 化影 37 | 如意 38 | 拂柳 39 | 归尘 40 | 玉清 41 | 玄微 42 | 太微 43 | 玄门 44 | 化影 45 | 御风 46 | 蝶鸢 47 | 无暇 48 | 白露 49 | 凝泪 50 | 赤心 51 | 凌绝 52 | 云川 53 | 沧耳 54 | 七曜 55 | 青明 56 | 明光 57 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/hammer/silver的hammer前缀.txt: -------------------------------------------------------------------------------- 1 | 银 2 | 白银 3 | 亮银 4 | 银光 5 | 银辉 6 | 银白 7 | 传奇 8 | 混元 9 | 荣耀 10 | 震岳 11 | 鼎力 12 | 翻天 13 | 番天 14 | 裂地 15 | 千钧 16 | 巨象 17 | 纵横 18 | 碎玉 19 | 万石 20 | 灵犀 21 | 震天 22 | 震山 23 | 博浪 24 | 狰狞 25 | 震霆 26 | 雷击 27 | 霆云 28 | 垒山 29 | 烁磊 30 | 垒石 31 | 伐麒 32 | 伐地 33 | 震石 34 | 震川 35 | 轰石 36 | 苍穹 37 | 隆泰 38 | 连山 39 | 归一 40 | 震岳 41 | 破苍 42 | 骁战 43 | 武烈 44 | 吞星 45 | 重峦 46 | 撼地 47 | 伏虎 48 | 玄武 49 | 御风 50 | 伐鼎 51 | 巨灵 52 | 日天 53 | 凌绝 54 | 云川 55 | 明光 56 | 破空 57 | 狴犴 -------------------------------------------------------------------------------- /word_libraries/default/items/hammer/steel的hammer前缀.txt: -------------------------------------------------------------------------------- 1 | 钢 2 | 精钢 3 | 乌铁 4 | 硬钢 5 | 印钢 6 | 百炼 7 | 传奇 8 | 混元 9 | 荣耀 10 | 震岳 11 | 鼎力 12 | 翻天 13 | 番天 14 | 裂地 15 | 千钧 16 | 巨象 17 | 纵横 18 | 碎玉 19 | 万石 20 | 灵犀 21 | 震天 22 | 震山 23 | 博浪 24 | 狰狞 25 | 震霆 26 | 雷击 27 | 霆云 28 | 垒山 29 | 烁磊 30 | 垒石 31 | 伐麒 32 | 伐地 33 | 震石 34 | 震川 35 | 轰石 36 | 苍穹 37 | 隆泰 38 | 连山 39 | 归一 40 | 震岳 41 | 破苍 42 | 骁战 43 | 武烈 44 | 吞星 45 | 重峦 46 | 撼地 47 | 伏虎 48 | 玄武 49 | 御风 50 | 伐鼎 51 | 巨灵 52 | 日天 53 | 凌绝 54 | 云川 55 | 明光 56 | 破空 57 | 狴犴 -------------------------------------------------------------------------------- /word_libraries/default/items/accessory/silver的ring前缀.txt: -------------------------------------------------------------------------------- 1 | 银 2 | 白银 3 | 亮银 4 | 银光 5 | 银辉 6 | 银白 7 | 灵 8 | 雨光 9 | 金光 10 | 璀璨 11 | 靓丽 12 | 无妄 13 | 七香 14 | 长青 15 | 拘玉 16 | 玲珑 17 | 夺目 18 | 朱雀 19 | 白泽 20 | 凤凰 21 | 螭吻 22 | 重明 23 | 飞燕 24 | 温玉 25 | 灵通 26 | 夜明 27 | 八宝 28 | 鸳鸯 29 | 连理 30 | 玉风 31 | 绵竹 32 | 羽灵 33 | 玉龙 34 | 鱼鳞 35 | 素缨 36 | 拂尘 37 | 化影 38 | 如意 39 | 拂柳 40 | 归尘 41 | 玉清 42 | 玄微 43 | 太微 44 | 玄门 45 | 化影 46 | 御风 47 | 蝶鸢 48 | 无暇 49 | 白露 50 | 凝泪 51 | 赤心 52 | 凌绝 53 | 云川 54 | 沧耳 55 | 七曜 56 | 青明 57 | 明光 58 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/accessory/silver的amulet前缀.txt: -------------------------------------------------------------------------------- 1 | 银 2 | 白银 3 | 亮银 4 | 银光 5 | 银辉 6 | 银白 7 | 灵 8 | 雨光 9 | 金光 10 | 璀璨 11 | 靓丽 12 | 无妄 13 | 七香 14 | 长青 15 | 拘玉 16 | 玲珑 17 | 夺目 18 | 朱雀 19 | 白泽 20 | 凤凰 21 | 螭吻 22 | 重明 23 | 飞燕 24 | 温玉 25 | 灵通 26 | 夜明 27 | 八宝 28 | 鸳鸯 29 | 连理 30 | 玉风 31 | 绵竹 32 | 羽灵 33 | 玉龙 34 | 鱼鳞 35 | 素缨 36 | 拂尘 37 | 化影 38 | 如意 39 | 拂柳 40 | 归尘 41 | 玉清 42 | 玄微 43 | 太微 44 | 玄门 45 | 化影 46 | 御风 47 | 蝶鸢 48 | 无暇 49 | 白露 50 | 凝泪 51 | 赤心 52 | 凌绝 53 | 云川 54 | 沧耳 55 | 七曜 56 | 青明 57 | 明光 58 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/spear/iron的spear前缀.txt: -------------------------------------------------------------------------------- 1 | 铁 2 | 精铁 3 | 硬铁 4 | 白铁 5 | 雨光 6 | 龙胆 7 | 亮银 8 | 神威 9 | 沥泉 10 | 湛金 11 | 断魂 12 | 裂天 13 | 红缨 14 | 苍龙 15 | 常龙 16 | 拘风 17 | 穿云 18 | 穿风 19 | 追星 20 | 流云 21 | 龙泉 22 | 藏锋 23 | 云峰 24 | 亮泽 25 | 净空 26 | 惊蛰 27 | 惊涛 28 | 海棠 29 | 过海 30 | 澜沧 31 | 沧海 32 | 盘龙 33 | 龙虎 34 | 穿虚 35 | 无影 36 | 无踪 37 | 纵横 38 | 御风 39 | 孤影 40 | 流觞 41 | 凌绝 42 | 云川 43 | 飞星 44 | 沧耳 45 | 青明 46 | 火尖 47 | 寒星 48 | 奔雷 49 | 透甲 50 | 雁翎 51 | 啸牙 52 | 荧焰 53 | 青涛 54 | 坠明 55 | 日影 56 | 明光 57 | 武烈 58 | 嘲风 59 | 狴犴 60 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/spear/adamantine的spear前缀.txt: -------------------------------------------------------------------------------- 1 | 精金 2 | 暗纹 3 | 暗曜 4 | 熔金 5 | 雨光 6 | 龙胆 7 | 亮银 8 | 神威 9 | 沥泉 10 | 湛金 11 | 断魂 12 | 裂天 13 | 红缨 14 | 苍龙 15 | 常龙 16 | 拘风 17 | 穿云 18 | 穿风 19 | 追星 20 | 流云 21 | 龙泉 22 | 藏锋 23 | 云峰 24 | 亮泽 25 | 净空 26 | 惊蛰 27 | 惊涛 28 | 海棠 29 | 过海 30 | 澜沧 31 | 沧海 32 | 盘龙 33 | 龙虎 34 | 穿虚 35 | 无影 36 | 无踪 37 | 纵横 38 | 御风 39 | 孤影 40 | 流觞 41 | 凌绝 42 | 云川 43 | 飞星 44 | 沧耳 45 | 青明 46 | 火尖 47 | 寒星 48 | 奔雷 49 | 透甲 50 | 雁翎 51 | 啸牙 52 | 荧焰 53 | 青涛 54 | 坠明 55 | 日影 56 | 明光 57 | 武烈 58 | 嘲风 59 | 狴犴 60 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/spear/mythril的spear前缀.txt: -------------------------------------------------------------------------------- 1 | 秘银 2 | 蓝银 3 | 蓝光 4 | 蓝钻 5 | 雨光 6 | 龙胆 7 | 亮银 8 | 神威 9 | 沥泉 10 | 湛金 11 | 断魂 12 | 裂天 13 | 红缨 14 | 苍龙 15 | 常龙 16 | 拘风 17 | 穿云 18 | 穿风 19 | 追星 20 | 流云 21 | 龙泉 22 | 藏锋 23 | 云峰 24 | 亮泽 25 | 净空 26 | 惊蛰 27 | 惊涛 28 | 海棠 29 | 过海 30 | 澜沧 31 | 沧海 32 | 盘龙 33 | 龙虎 34 | 穿虚 35 | 无影 36 | 无踪 37 | 纵横 38 | 御风 39 | 孤影 40 | 流觞 41 | 凌绝 42 | 云川 43 | 飞星 44 | 沧耳 45 | 青明 46 | 火尖 47 | 寒星 48 | 奔雷 49 | 透甲 50 | 雁翎 51 | 啸牙 52 | 荧焰 53 | 青涛 54 | 坠明 55 | 日影 56 | 明光 57 | 武烈 58 | 嘲风 59 | 狴犴 60 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/spear/steel的spear前缀.txt: -------------------------------------------------------------------------------- 1 | 钢 2 | 精钢 3 | 硬钢 4 | 印钢 5 | 百炼 6 | 雨光 7 | 龙胆 8 | 亮银 9 | 神威 10 | 沥泉 11 | 湛金 12 | 断魂 13 | 裂天 14 | 红缨 15 | 苍龙 16 | 常龙 17 | 拘风 18 | 穿云 19 | 穿风 20 | 追星 21 | 流云 22 | 龙泉 23 | 藏锋 24 | 云峰 25 | 亮泽 26 | 净空 27 | 惊蛰 28 | 惊涛 29 | 海棠 30 | 过海 31 | 澜沧 32 | 沧海 33 | 盘龙 34 | 龙虎 35 | 穿虚 36 | 无影 37 | 无踪 38 | 纵横 39 | 御风 40 | 孤影 41 | 流觞 42 | 凌绝 43 | 云川 44 | 飞星 45 | 沧耳 46 | 青明 47 | 火尖 48 | 寒星 49 | 奔雷 50 | 透甲 51 | 雁翎 52 | 啸牙 53 | 荧焰 54 | 青涛 55 | 坠明 56 | 日影 57 | 明光 58 | 武烈 59 | 嘲风 60 | 狴犴 61 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/spear/silver的spear前缀.txt: -------------------------------------------------------------------------------- 1 | 银 2 | 白银 3 | 亮银 4 | 银光 5 | 银辉 6 | 银白 7 | 雨光 8 | 龙胆 9 | 亮银 10 | 神威 11 | 沥泉 12 | 湛金 13 | 断魂 14 | 裂天 15 | 红缨 16 | 苍龙 17 | 常龙 18 | 拘风 19 | 穿云 20 | 穿风 21 | 追星 22 | 流云 23 | 龙泉 24 | 藏锋 25 | 云峰 26 | 亮泽 27 | 净空 28 | 惊蛰 29 | 惊涛 30 | 海棠 31 | 过海 32 | 澜沧 33 | 沧海 34 | 盘龙 35 | 龙虎 36 | 穿虚 37 | 无影 38 | 无踪 39 | 纵横 40 | 御风 41 | 孤影 42 | 流觞 43 | 凌绝 44 | 云川 45 | 飞星 46 | 沧耳 47 | 青明 48 | 火尖 49 | 寒星 50 | 奔雷 51 | 透甲 52 | 雁翎 53 | 啸牙 54 | 荧焰 55 | 青涛 56 | 坠明 57 | 日影 58 | 明光 59 | 武烈 60 | 嘲风 61 | 狴犴 62 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/iron的armor前缀.txt: -------------------------------------------------------------------------------- 1 | 铁 2 | 精铁 3 | 硬铁 4 | 白铁 5 | 雨光 6 | 镔铁 7 | 鎏金 8 | 连环 9 | 唐猊 10 | 狮蛮 11 | 狂战 12 | 麒麟 13 | 青龙 14 | 白虎 15 | 玄武 16 | 白泽 17 | 狻猊 18 | 烛龙 19 | 饕餮 20 | 吞天 21 | 敖龙 22 | 飞凤 23 | 玉龙 24 | 羽灵 25 | 鱼鳞 26 | 素缨 27 | 拂柳 28 | 灵武 29 | 琉璃 30 | 震山 31 | 玄门 32 | 百花 33 | 锁天 34 | 神照 35 | 飞渡 36 | 如意 37 | 缥缈 38 | 水晶 39 | 金霞 40 | 太微 41 | 玉清 42 | 封龙 43 | 玄微 44 | 洗髓 45 | 晶炎 46 | 九鼎 47 | 吞象 48 | 崆峒 49 | 龙啸 50 | 无终 51 | 宝墨 52 | 参合 53 | 点苍 54 | 陨玉 55 | 镇魔 56 | 通天 57 | 化影 58 | 归尘 59 | 凌绝 60 | 云川 61 | 青明 62 | 武烈 63 | 明光 64 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/iron的boots前缀.txt: -------------------------------------------------------------------------------- 1 | 铁 2 | 精铁 3 | 硬铁 4 | 白铁 5 | 雨光 6 | 镔铁 7 | 鎏金 8 | 连环 9 | 唐猊 10 | 狮蛮 11 | 狂战 12 | 麒麟 13 | 青龙 14 | 白虎 15 | 玄武 16 | 白泽 17 | 狻猊 18 | 烛龙 19 | 饕餮 20 | 吞天 21 | 敖龙 22 | 飞凤 23 | 玉龙 24 | 羽灵 25 | 鱼鳞 26 | 素缨 27 | 拂柳 28 | 灵武 29 | 琉璃 30 | 震山 31 | 玄门 32 | 百花 33 | 锁天 34 | 神照 35 | 飞渡 36 | 如意 37 | 缥缈 38 | 水晶 39 | 金霞 40 | 太微 41 | 玉清 42 | 封龙 43 | 玄微 44 | 洗髓 45 | 晶炎 46 | 九鼎 47 | 吞象 48 | 崆峒 49 | 龙啸 50 | 无终 51 | 宝墨 52 | 参合 53 | 点苍 54 | 陨玉 55 | 镇魔 56 | 通天 57 | 疾驰 58 | 归尘 59 | 凌绝 60 | 云川 61 | 青明 62 | 武烈 63 | 明光 64 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/iron的helmet前缀.txt: -------------------------------------------------------------------------------- 1 | 铁 2 | 精铁 3 | 硬铁 4 | 白铁 5 | 雨光 6 | 镔铁 7 | 鎏金 8 | 连环 9 | 唐猊 10 | 狮蛮 11 | 狂战 12 | 麒麟 13 | 青龙 14 | 白虎 15 | 玄武 16 | 白泽 17 | 狻猊 18 | 烛龙 19 | 饕餮 20 | 吞天 21 | 敖龙 22 | 飞凤 23 | 玉龙 24 | 羽灵 25 | 鱼鳞 26 | 素缨 27 | 拂柳 28 | 灵武 29 | 琉璃 30 | 震山 31 | 玄门 32 | 百花 33 | 锁天 34 | 神照 35 | 飞渡 36 | 如意 37 | 缥缈 38 | 水晶 39 | 金霞 40 | 太微 41 | 玉清 42 | 封龙 43 | 玄微 44 | 洗髓 45 | 晶炎 46 | 九鼎 47 | 吞象 48 | 崆峒 49 | 龙啸 50 | 无终 51 | 宝墨 52 | 参合 53 | 点苍 54 | 陨玉 55 | 镇魔 56 | 通天 57 | 化影 58 | 归尘 59 | 凌绝 60 | 云川 61 | 青明 62 | 武烈 63 | 明光 64 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/mythril的armor前缀.txt: -------------------------------------------------------------------------------- 1 | 秘银 2 | 蓝银 3 | 蓝光 4 | 蓝钻 5 | 雨光 6 | 镔铁 7 | 鎏金 8 | 连环 9 | 唐猊 10 | 狮蛮 11 | 狂战 12 | 麒麟 13 | 青龙 14 | 白虎 15 | 玄武 16 | 白泽 17 | 狻猊 18 | 烛龙 19 | 饕餮 20 | 吞天 21 | 敖龙 22 | 飞凤 23 | 玉龙 24 | 羽灵 25 | 鱼鳞 26 | 素缨 27 | 拂柳 28 | 灵武 29 | 琉璃 30 | 震山 31 | 玄门 32 | 百花 33 | 锁天 34 | 神照 35 | 飞渡 36 | 如意 37 | 缥缈 38 | 水晶 39 | 金霞 40 | 太微 41 | 玉清 42 | 封龙 43 | 玄微 44 | 洗髓 45 | 晶炎 46 | 九鼎 47 | 吞象 48 | 崆峒 49 | 龙啸 50 | 无终 51 | 宝墨 52 | 参合 53 | 点苍 54 | 陨玉 55 | 镇魔 56 | 通天 57 | 化影 58 | 归尘 59 | 凌绝 60 | 云川 61 | 青明 62 | 武烈 63 | 明光 64 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/mythril的boots前缀.txt: -------------------------------------------------------------------------------- 1 | 秘银 2 | 蓝银 3 | 蓝光 4 | 蓝钻 5 | 雨光 6 | 镔铁 7 | 鎏金 8 | 连环 9 | 唐猊 10 | 狮蛮 11 | 狂战 12 | 麒麟 13 | 青龙 14 | 白虎 15 | 玄武 16 | 白泽 17 | 狻猊 18 | 烛龙 19 | 饕餮 20 | 吞天 21 | 敖龙 22 | 飞凤 23 | 玉龙 24 | 羽灵 25 | 鱼鳞 26 | 素缨 27 | 拂柳 28 | 灵武 29 | 琉璃 30 | 震山 31 | 玄门 32 | 百花 33 | 锁天 34 | 神照 35 | 飞渡 36 | 如意 37 | 缥缈 38 | 水晶 39 | 金霞 40 | 太微 41 | 玉清 42 | 封龙 43 | 玄微 44 | 洗髓 45 | 晶炎 46 | 九鼎 47 | 吞象 48 | 崆峒 49 | 龙啸 50 | 无终 51 | 宝墨 52 | 参合 53 | 点苍 54 | 陨玉 55 | 镇魔 56 | 通天 57 | 疾驰 58 | 归尘 59 | 凌绝 60 | 云川 61 | 青明 62 | 武烈 63 | 明光 64 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/mythril的helmet前缀.txt: -------------------------------------------------------------------------------- 1 | 秘银 2 | 蓝银 3 | 蓝光 4 | 蓝钻 5 | 雨光 6 | 镔铁 7 | 鎏金 8 | 连环 9 | 唐猊 10 | 狮蛮 11 | 狂战 12 | 麒麟 13 | 青龙 14 | 白虎 15 | 玄武 16 | 白泽 17 | 狻猊 18 | 烛龙 19 | 饕餮 20 | 吞天 21 | 敖龙 22 | 飞凤 23 | 玉龙 24 | 羽灵 25 | 鱼鳞 26 | 素缨 27 | 拂柳 28 | 灵武 29 | 琉璃 30 | 震山 31 | 玄门 32 | 百花 33 | 锁天 34 | 神照 35 | 飞渡 36 | 如意 37 | 缥缈 38 | 水晶 39 | 金霞 40 | 太微 41 | 玉清 42 | 封龙 43 | 玄微 44 | 洗髓 45 | 晶炎 46 | 九鼎 47 | 吞象 48 | 崆峒 49 | 龙啸 50 | 无终 51 | 宝墨 52 | 参合 53 | 点苍 54 | 陨玉 55 | 镇魔 56 | 通天 57 | 化影 58 | 归尘 59 | 凌绝 60 | 云川 61 | 青明 62 | 武烈 63 | 明光 64 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/bow/iron的bow前缀.txt: -------------------------------------------------------------------------------- 1 | 铁 2 | 精铁 3 | 硬铁 4 | 白铁 5 | 雨光 6 | 麒麟 7 | 灵宝 8 | 游子 9 | 万石 10 | 落日 11 | 飞鸿 12 | 惊雁 13 | 汉威 14 | 鸣夜 15 | 惊寂 16 | 苍龙 17 | 穿杨 18 | 风驰 19 | 追日 20 | 拘风 21 | 百胜 22 | 弯月 23 | 天弦 24 | 穿云 25 | 破苍 26 | 飞云 27 | 飞鱼 28 | 飞羽 29 | 灵通 30 | 归藏 31 | 移星 32 | 天蝉 33 | 摘星 34 | 纵横 35 | 飞云 36 | 碧竹 37 | 芙蓉 38 | 墨玉 39 | 玉环 40 | 离尘 41 | 天枢 42 | 玄微 43 | 尘风 44 | 乘风 45 | 通身 46 | 神机 47 | 琼花 48 | 弄雾 49 | 御风 50 | 青明 51 | 孤影 52 | 流觞 53 | 凌绝 54 | 云川 55 | 醉云 56 | 裂空 57 | 飞星 58 | 沧耳 59 | 七曜 60 | 破晓 61 | 明光 62 | 雁翎 63 | 螭吻 64 | 嘲风 65 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/adamantine的armor前缀.txt: -------------------------------------------------------------------------------- 1 | 精金 2 | 暗纹 3 | 暗曜 4 | 熔金 5 | 雨光 6 | 镔铁 7 | 鎏金 8 | 连环 9 | 唐猊 10 | 狮蛮 11 | 狂战 12 | 麒麟 13 | 青龙 14 | 白虎 15 | 玄武 16 | 白泽 17 | 狻猊 18 | 烛龙 19 | 饕餮 20 | 吞天 21 | 敖龙 22 | 飞凤 23 | 玉龙 24 | 羽灵 25 | 鱼鳞 26 | 素缨 27 | 拂柳 28 | 灵武 29 | 琉璃 30 | 震山 31 | 玄门 32 | 百花 33 | 锁天 34 | 神照 35 | 飞渡 36 | 如意 37 | 缥缈 38 | 水晶 39 | 金霞 40 | 太微 41 | 玉清 42 | 封龙 43 | 玄微 44 | 洗髓 45 | 晶炎 46 | 九鼎 47 | 吞象 48 | 崆峒 49 | 龙啸 50 | 无终 51 | 宝墨 52 | 参合 53 | 点苍 54 | 陨玉 55 | 镇魔 56 | 通天 57 | 化影 58 | 归尘 59 | 凌绝 60 | 云川 61 | 青明 62 | 武烈 63 | 明光 64 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/adamantine的boots前缀.txt: -------------------------------------------------------------------------------- 1 | 精金 2 | 暗纹 3 | 暗曜 4 | 熔金 5 | 雨光 6 | 镔铁 7 | 鎏金 8 | 连环 9 | 唐猊 10 | 狮蛮 11 | 狂战 12 | 麒麟 13 | 青龙 14 | 白虎 15 | 玄武 16 | 白泽 17 | 狻猊 18 | 烛龙 19 | 饕餮 20 | 吞天 21 | 敖龙 22 | 飞凤 23 | 玉龙 24 | 羽灵 25 | 鱼鳞 26 | 素缨 27 | 拂柳 28 | 灵武 29 | 琉璃 30 | 震山 31 | 玄门 32 | 百花 33 | 锁天 34 | 神照 35 | 飞渡 36 | 如意 37 | 缥缈 38 | 水晶 39 | 金霞 40 | 太微 41 | 玉清 42 | 封龙 43 | 玄微 44 | 洗髓 45 | 晶炎 46 | 九鼎 47 | 吞象 48 | 崆峒 49 | 龙啸 50 | 无终 51 | 宝墨 52 | 参合 53 | 点苍 54 | 陨玉 55 | 镇魔 56 | 通天 57 | 疾驰 58 | 归尘 59 | 凌绝 60 | 云川 61 | 青明 62 | 武烈 63 | 明光 64 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/adamantine的helmet前缀.txt: -------------------------------------------------------------------------------- 1 | 精金 2 | 暗纹 3 | 暗曜 4 | 熔金 5 | 雨光 6 | 镔铁 7 | 鎏金 8 | 连环 9 | 唐猊 10 | 狮蛮 11 | 狂战 12 | 麒麟 13 | 青龙 14 | 白虎 15 | 玄武 16 | 白泽 17 | 狻猊 18 | 烛龙 19 | 饕餮 20 | 吞天 21 | 敖龙 22 | 飞凤 23 | 玉龙 24 | 羽灵 25 | 鱼鳞 26 | 素缨 27 | 拂柳 28 | 灵武 29 | 琉璃 30 | 震山 31 | 玄门 32 | 百花 33 | 锁天 34 | 神照 35 | 飞渡 36 | 如意 37 | 缥缈 38 | 水晶 39 | 金霞 40 | 太微 41 | 玉清 42 | 封龙 43 | 玄微 44 | 洗髓 45 | 晶炎 46 | 九鼎 47 | 吞象 48 | 崆峒 49 | 龙啸 50 | 无终 51 | 宝墨 52 | 参合 53 | 点苍 54 | 陨玉 55 | 镇魔 56 | 通天 57 | 化影 58 | 归尘 59 | 凌绝 60 | 云川 61 | 青明 62 | 武烈 63 | 明光 64 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/steel的armor前缀.txt: -------------------------------------------------------------------------------- 1 | 钢 2 | 精钢 3 | 硬钢 4 | 印钢 5 | 百炼 6 | 雨光 7 | 镔铁 8 | 鎏金 9 | 连环 10 | 唐猊 11 | 狮蛮 12 | 狂战 13 | 麒麟 14 | 青龙 15 | 白虎 16 | 玄武 17 | 白泽 18 | 狻猊 19 | 烛龙 20 | 饕餮 21 | 吞天 22 | 敖龙 23 | 飞凤 24 | 玉龙 25 | 羽灵 26 | 鱼鳞 27 | 素缨 28 | 拂柳 29 | 灵武 30 | 琉璃 31 | 震山 32 | 玄门 33 | 百花 34 | 锁天 35 | 神照 36 | 飞渡 37 | 如意 38 | 缥缈 39 | 水晶 40 | 金霞 41 | 太微 42 | 玉清 43 | 封龙 44 | 玄微 45 | 洗髓 46 | 晶炎 47 | 九鼎 48 | 吞象 49 | 崆峒 50 | 龙啸 51 | 无终 52 | 宝墨 53 | 参合 54 | 点苍 55 | 陨玉 56 | 镇魔 57 | 通天 58 | 化影 59 | 归尘 60 | 凌绝 61 | 云川 62 | 青明 63 | 武烈 64 | 明光 65 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/steel的boots前缀.txt: -------------------------------------------------------------------------------- 1 | 钢 2 | 精钢 3 | 硬钢 4 | 印钢 5 | 百炼 6 | 雨光 7 | 镔铁 8 | 鎏金 9 | 连环 10 | 唐猊 11 | 狮蛮 12 | 狂战 13 | 麒麟 14 | 青龙 15 | 白虎 16 | 玄武 17 | 白泽 18 | 狻猊 19 | 烛龙 20 | 饕餮 21 | 吞天 22 | 敖龙 23 | 飞凤 24 | 玉龙 25 | 羽灵 26 | 鱼鳞 27 | 素缨 28 | 拂柳 29 | 灵武 30 | 琉璃 31 | 震山 32 | 玄门 33 | 百花 34 | 锁天 35 | 神照 36 | 飞渡 37 | 如意 38 | 缥缈 39 | 水晶 40 | 金霞 41 | 太微 42 | 玉清 43 | 封龙 44 | 玄微 45 | 洗髓 46 | 晶炎 47 | 九鼎 48 | 吞象 49 | 崆峒 50 | 龙啸 51 | 无终 52 | 宝墨 53 | 参合 54 | 点苍 55 | 陨玉 56 | 镇魔 57 | 通天 58 | 疾驰 59 | 归尘 60 | 凌绝 61 | 云川 62 | 青明 63 | 武烈 64 | 明光 65 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/steel的helmet前缀.txt: -------------------------------------------------------------------------------- 1 | 钢 2 | 精钢 3 | 硬钢 4 | 印钢 5 | 百炼 6 | 雨光 7 | 镔铁 8 | 鎏金 9 | 连环 10 | 唐猊 11 | 狮蛮 12 | 狂战 13 | 麒麟 14 | 青龙 15 | 白虎 16 | 玄武 17 | 白泽 18 | 狻猊 19 | 烛龙 20 | 饕餮 21 | 吞天 22 | 敖龙 23 | 飞凤 24 | 玉龙 25 | 羽灵 26 | 鱼鳞 27 | 素缨 28 | 拂柳 29 | 灵武 30 | 琉璃 31 | 震山 32 | 玄门 33 | 百花 34 | 锁天 35 | 神照 36 | 飞渡 37 | 如意 38 | 缥缈 39 | 水晶 40 | 金霞 41 | 太微 42 | 玉清 43 | 封龙 44 | 玄微 45 | 洗髓 46 | 晶炎 47 | 九鼎 48 | 吞象 49 | 崆峒 50 | 龙啸 51 | 无终 52 | 宝墨 53 | 参合 54 | 点苍 55 | 陨玉 56 | 镇魔 57 | 通天 58 | 化影 59 | 归尘 60 | 凌绝 61 | 云川 62 | 青明 63 | 武烈 64 | 明光 65 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/bow/adamantine的bow前缀.txt: -------------------------------------------------------------------------------- 1 | 精金 2 | 暗纹 3 | 暗曜 4 | 熔金 5 | 雨光 6 | 麒麟 7 | 灵宝 8 | 游子 9 | 万石 10 | 落日 11 | 飞鸿 12 | 惊雁 13 | 汉威 14 | 鸣夜 15 | 惊寂 16 | 苍龙 17 | 穿杨 18 | 风驰 19 | 追日 20 | 拘风 21 | 百胜 22 | 弯月 23 | 天弦 24 | 穿云 25 | 破苍 26 | 飞云 27 | 飞鱼 28 | 飞羽 29 | 灵通 30 | 归藏 31 | 移星 32 | 天蝉 33 | 摘星 34 | 纵横 35 | 飞云 36 | 碧竹 37 | 芙蓉 38 | 墨玉 39 | 玉环 40 | 离尘 41 | 天枢 42 | 玄微 43 | 尘风 44 | 乘风 45 | 通身 46 | 神机 47 | 琼花 48 | 弄雾 49 | 御风 50 | 青明 51 | 孤影 52 | 流觞 53 | 凌绝 54 | 云川 55 | 醉云 56 | 裂空 57 | 飞星 58 | 沧耳 59 | 七曜 60 | 破晓 61 | 明光 62 | 雁翎 63 | 螭吻 64 | 嘲风 65 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/bow/mythril的bow前缀.txt: -------------------------------------------------------------------------------- 1 | 秘银 2 | 蓝银 3 | 蓝光 4 | 蓝钻 5 | 雨光 6 | 麒麟 7 | 灵宝 8 | 游子 9 | 万石 10 | 落日 11 | 飞鸿 12 | 惊雁 13 | 汉威 14 | 鸣夜 15 | 惊寂 16 | 苍龙 17 | 穿杨 18 | 风驰 19 | 追日 20 | 拘风 21 | 百胜 22 | 弯月 23 | 天弦 24 | 穿云 25 | 破苍 26 | 飞云 27 | 飞鱼 28 | 飞羽 29 | 灵通 30 | 归藏 31 | 移星 32 | 天蝉 33 | 摘星 34 | 纵横 35 | 飞云 36 | 碧竹 37 | 芙蓉 38 | 墨玉 39 | 玉环 40 | 离尘 41 | 天枢 42 | 玄微 43 | 尘风 44 | 乘风 45 | 通身 46 | 神机 47 | 琼花 48 | 弄雾 49 | 御风 50 | 青明 51 | 孤影 52 | 流觞 53 | 凌绝 54 | 云川 55 | 醉云 56 | 裂空 57 | 飞星 58 | 沧耳 59 | 七曜 60 | 破晓 61 | 明光 62 | 雁翎 63 | 螭吻 64 | 嘲风 65 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/bow/steel的bow前缀.txt: -------------------------------------------------------------------------------- 1 | 钢 2 | 精钢 3 | 硬钢 4 | 印钢 5 | 百炼 6 | 雨光 7 | 麒麟 8 | 灵宝 9 | 游子 10 | 万石 11 | 落日 12 | 飞鸿 13 | 惊雁 14 | 汉威 15 | 鸣夜 16 | 惊寂 17 | 苍龙 18 | 穿杨 19 | 风驰 20 | 追日 21 | 拘风 22 | 百胜 23 | 弯月 24 | 天弦 25 | 穿云 26 | 破苍 27 | 飞云 28 | 飞鱼 29 | 飞羽 30 | 灵通 31 | 归藏 32 | 移星 33 | 天蝉 34 | 摘星 35 | 纵横 36 | 飞云 37 | 碧竹 38 | 芙蓉 39 | 墨玉 40 | 玉环 41 | 离尘 42 | 天枢 43 | 玄微 44 | 尘风 45 | 乘风 46 | 通身 47 | 神机 48 | 琼花 49 | 弄雾 50 | 御风 51 | 青明 52 | 孤影 53 | 流觞 54 | 凌绝 55 | 云川 56 | 醉云 57 | 裂空 58 | 飞星 59 | 沧耳 60 | 七曜 61 | 破晓 62 | 明光 63 | 雁翎 64 | 螭吻 65 | 嘲风 66 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/silver的armor前缀.txt: -------------------------------------------------------------------------------- 1 | 银 2 | 白银 3 | 亮银 4 | 银光 5 | 银辉 6 | 银白 7 | 雨光 8 | 镔铁 9 | 鎏金 10 | 连环 11 | 唐猊 12 | 狮蛮 13 | 狂战 14 | 麒麟 15 | 青龙 16 | 白虎 17 | 玄武 18 | 白泽 19 | 狻猊 20 | 烛龙 21 | 饕餮 22 | 吞天 23 | 敖龙 24 | 飞凤 25 | 玉龙 26 | 羽灵 27 | 鱼鳞 28 | 素缨 29 | 拂柳 30 | 灵武 31 | 琉璃 32 | 震山 33 | 玄门 34 | 百花 35 | 锁天 36 | 神照 37 | 飞渡 38 | 如意 39 | 缥缈 40 | 水晶 41 | 金霞 42 | 太微 43 | 玉清 44 | 封龙 45 | 玄微 46 | 洗髓 47 | 晶炎 48 | 九鼎 49 | 吞象 50 | 崆峒 51 | 龙啸 52 | 无终 53 | 宝墨 54 | 参合 55 | 点苍 56 | 陨玉 57 | 镇魔 58 | 通天 59 | 化影 60 | 归尘 61 | 凌绝 62 | 云川 63 | 青明 64 | 武烈 65 | 明光 66 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/silver的boots前缀.txt: -------------------------------------------------------------------------------- 1 | 银 2 | 白银 3 | 亮银 4 | 银光 5 | 银辉 6 | 银白 7 | 雨光 8 | 镔铁 9 | 鎏金 10 | 连环 11 | 唐猊 12 | 狮蛮 13 | 狂战 14 | 麒麟 15 | 青龙 16 | 白虎 17 | 玄武 18 | 白泽 19 | 狻猊 20 | 烛龙 21 | 饕餮 22 | 吞天 23 | 敖龙 24 | 飞凤 25 | 玉龙 26 | 羽灵 27 | 鱼鳞 28 | 素缨 29 | 拂柳 30 | 灵武 31 | 琉璃 32 | 震山 33 | 玄门 34 | 百花 35 | 锁天 36 | 神照 37 | 飞渡 38 | 如意 39 | 缥缈 40 | 水晶 41 | 金霞 42 | 太微 43 | 玉清 44 | 封龙 45 | 玄微 46 | 洗髓 47 | 晶炎 48 | 九鼎 49 | 吞象 50 | 崆峒 51 | 龙啸 52 | 无终 53 | 宝墨 54 | 参合 55 | 点苍 56 | 陨玉 57 | 镇魔 58 | 通天 59 | 疾驰 60 | 归尘 61 | 凌绝 62 | 云川 63 | 青明 64 | 武烈 65 | 明光 66 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/armor/silver的helmet前缀.txt: -------------------------------------------------------------------------------- 1 | 银 2 | 白银 3 | 亮银 4 | 银光 5 | 银辉 6 | 银白 7 | 雨光 8 | 镔铁 9 | 鎏金 10 | 连环 11 | 唐猊 12 | 狮蛮 13 | 狂战 14 | 麒麟 15 | 青龙 16 | 白虎 17 | 玄武 18 | 白泽 19 | 狻猊 20 | 烛龙 21 | 饕餮 22 | 吞天 23 | 敖龙 24 | 飞凤 25 | 玉龙 26 | 羽灵 27 | 鱼鳞 28 | 素缨 29 | 拂柳 30 | 灵武 31 | 琉璃 32 | 震山 33 | 玄门 34 | 百花 35 | 锁天 36 | 神照 37 | 飞渡 38 | 如意 39 | 缥缈 40 | 水晶 41 | 金霞 42 | 太微 43 | 玉清 44 | 封龙 45 | 玄微 46 | 洗髓 47 | 晶炎 48 | 九鼎 49 | 吞象 50 | 崆峒 51 | 龙啸 52 | 无终 53 | 宝墨 54 | 参合 55 | 点苍 56 | 陨玉 57 | 镇魔 58 | 通天 59 | 化影 60 | 归尘 61 | 凌绝 62 | 云川 63 | 青明 64 | 武烈 65 | 明光 66 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/items/bow/silver的bow前缀.txt: -------------------------------------------------------------------------------- 1 | 银 2 | 白银 3 | 亮银 4 | 银光 5 | 银辉 6 | 银白 7 | 雨光 8 | 麒麟 9 | 灵宝 10 | 游子 11 | 万石 12 | 落日 13 | 飞鸿 14 | 惊雁 15 | 汉威 16 | 鸣夜 17 | 惊寂 18 | 苍龙 19 | 穿杨 20 | 风驰 21 | 追日 22 | 拘风 23 | 百胜 24 | 弯月 25 | 天弦 26 | 穿云 27 | 破苍 28 | 飞云 29 | 飞鱼 30 | 飞羽 31 | 灵通 32 | 归藏 33 | 移星 34 | 天蝉 35 | 摘星 36 | 纵横 37 | 飞云 38 | 碧竹 39 | 芙蓉 40 | 墨玉 41 | 玉环 42 | 离尘 43 | 天枢 44 | 玄微 45 | 尘风 46 | 乘风 47 | 通身 48 | 神机 49 | 琼花 50 | 弄雾 51 | 御风 52 | 青明 53 | 孤影 54 | 流觞 55 | 凌绝 56 | 云川 57 | 醉云 58 | 裂空 59 | 飞星 60 | 沧耳 61 | 七曜 62 | 破晓 63 | 明光 64 | 雁翎 65 | 螭吻 66 | 嘲风 67 | 清曜 -------------------------------------------------------------------------------- /word_libraries/default/mobs/天干地支.txt: -------------------------------------------------------------------------------- 1 | 甲子 2 | 乙丑 3 | 丙寅 4 | 丁卯 5 | 戊辰 6 | 己巳 7 | 庚午 8 | 辛未 9 | 壬申 10 | 癸酉 11 | 甲戌 12 | 乙亥 13 | 丙子 14 | 丁丑 15 | 戊寅 16 | 己卯 17 | 庚辰 18 | 辛巳 19 | 壬午 20 | 癸未 21 | 甲申 22 | 乙酉 23 | 丙戌 24 | 丁亥 25 | 戊子 26 | 己丑 27 | 庚寅 28 | 辛卯 29 | 壬辰 30 | 癸巳 31 | 甲午 32 | 乙未 33 | 丙申 34 | 丁酉 35 | 戊戌 36 | 己亥 37 | 庚子 38 | 辛丑 39 | 壬寅 40 | 癸卯 41 | 甲辰 42 | 乙巳 43 | 丙午 44 | 丁未 45 | 戊申 46 | 己酉 47 | 庚戌 48 | 辛亥 49 | 壬子 50 | 癸丑 51 | 甲寅 52 | 乙卯 53 | 丙辰 54 | 丁巳 55 | 戊午 56 | 己未 57 | 庚申 58 | 辛酉 59 | 壬戌 60 | 癸亥 61 | 子丑 62 | 丑寅 63 | 寅卯 64 | 卯辰 65 | 辰巳 66 | 巳午 67 | 午未 68 | 未申 69 | 申酉 70 | 酉戌 71 | 戌亥 72 | 亥子 -------------------------------------------------------------------------------- /name_generators/default/mottos.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "kingdom_mottos", 4 | "default_template": { 5 | "format": "{常见格言}" 6 | }, 7 | "templates": [ 8 | { 9 | "format": "<$race$种族国家格言>" 10 | } 11 | ] 12 | }, 13 | { 14 | "id": "clan_mottos", 15 | "templates": [ 16 | { 17 | "format": "{常见格言}" 18 | } 19 | ] 20 | }, 21 | { 22 | "id": "alliance_mottos", 23 | "templates": [ 24 | { 25 | "format": "{联盟格言}" 26 | } 27 | ] 28 | } 29 | ] -------------------------------------------------------------------------------- /name_generators/default/cities.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "human_city", 4 | "templates": [ 5 | { 6 | "format": "{真实城名}" 7 | } 8 | ] 9 | }, 10 | { 11 | "id": "elf_city", 12 | "templates": [ 13 | { 14 | "format": "{西方姓氏}#城#" 15 | } 16 | ] 17 | }, 18 | { 19 | "id": "orc_city", 20 | "templates": [ 21 | { 22 | "format": "{西方姓氏}#城#" 23 | } 24 | ] 25 | }, 26 | { 27 | "id": "dwarf_city", 28 | "templates": [ 29 | { 30 | "format": "{西方姓氏}#城#" 31 | } 32 | ] 33 | } 34 | ] -------------------------------------------------------------------------------- /name_generators/default/cultures.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "human_culture", 4 | "templates": [ 5 | { 6 | "format": "{真实城名}#文化#" 7 | } 8 | ] 9 | }, 10 | { 11 | "id": "elf_culture", 12 | "templates": [ 13 | { 14 | "format": "{真实城名}#文化#" 15 | } 16 | ] 17 | }, 18 | { 19 | "id": "orc_culture", 20 | "templates": [ 21 | { 22 | "format": "{真实城名}#文化#" 23 | } 24 | ] 25 | }, 26 | { 27 | "id": "dwarf_culture", 28 | "templates": [ 29 | { 30 | "format": "{真实城名}#文化#" 31 | } 32 | ] 33 | } 34 | ] -------------------------------------------------------------------------------- /name_generators/default/kingdoms.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "human_kingdom", 4 | "templates": [ 5 | { 6 | "format": "{真实国名}" 7 | } 8 | ] 9 | }, 10 | { 11 | "id": "elf_kingdom", 12 | "templates": [ 13 | { 14 | "format": "{西方姓氏}{西方国名后缀}" 15 | } 16 | ] 17 | }, 18 | { 19 | "id": "orc_kingdom", 20 | "templates": [ 21 | { 22 | "format": "{西方姓氏}{西方国名后缀}" 23 | } 24 | ] 25 | }, 26 | { 27 | "id": "dwarf_kingdom", 28 | "templates": [ 29 | { 30 | "format": "{西方姓氏}{西方国名后缀}" 31 | } 32 | ] 33 | } 34 | ] -------------------------------------------------------------------------------- /name_generators/default/alliances.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "alliance_name", 4 | "default_template": { 5 | "format": "#无名联盟#" 6 | }, 7 | "templates": [ 8 | { 9 | "format": "$k1_short$$k2_short${联盟名后缀}", 10 | "weight": 5 11 | }, 12 | { 13 | "format": "$k1_capital${联盟名后缀}", 14 | "weight": 5 15 | }, 16 | { 17 | "format": "$k2_capital${联盟名后缀}", 18 | "weight": 5 19 | }, 20 | { 21 | "format": "$k1_short$$k2_short$#之盟#", 22 | "weight": 1 23 | }, 24 | { 25 | "format": "$天干地支纪年${联盟名后缀}", 26 | "weight": 0.1 27 | } 28 | ] 29 | } 30 | ] -------------------------------------------------------------------------------- /Locales/天干地支.csv: -------------------------------------------------------------------------------- 1 | key,cz 2 | 天干地支-0,甲子 3 | 天干地支-1,乙丑 4 | 天干地支-2,丙寅 5 | 天干地支-3,丁卯 6 | 天干地支-4,戊辰 7 | 天干地支-5,己巳 8 | 天干地支-6,庚午 9 | 天干地支-7,辛未 10 | 天干地支-8,壬申 11 | 天干地支-9,癸酉 12 | 天干地支-10,甲戌 13 | 天干地支-11,乙亥 14 | 天干地支-12,丙子 15 | 天干地支-13,丁丑 16 | 天干地支-14,戊寅 17 | 天干地支-15,己卯 18 | 天干地支-16,庚辰 19 | 天干地支-17,辛巳 20 | 天干地支-18,壬午 21 | 天干地支-19,癸未 22 | 天干地支-20,甲申 23 | 天干地支-21,乙酉 24 | 天干地支-22,丙戌 25 | 天干地支-23,丁亥 26 | 天干地支-24,戊子 27 | 天干地支-25,己丑 28 | 天干地支-26,庚寅 29 | 天干地支-27,辛卯 30 | 天干地支-28,壬辰 31 | 天干地支-29,癸巳 32 | 天干地支-30,甲午 33 | 天干地支-31,乙未 34 | 天干地支-32,丙申 35 | 天干地支-33,丁酉 36 | 天干地支-34,戊戌 37 | 天干地支-35,己亥 38 | 天干地支-36,庚子 39 | 天干地支-37,辛丑 40 | 天干地支-38,壬寅 41 | 天干地支-39,癸卯 42 | 天干地支-40,甲辰 43 | 天干地支-41,乙巳 44 | 天干地支-42,丙午 45 | 天干地支-43,丁未 46 | 天干地支-44,戊申 47 | 天干地支-45,己酉 48 | 天干地支-46,庚戌 49 | 天干地支-47,辛亥 50 | 天干地支-48,壬子 51 | 天干地支-49,癸丑 52 | 天干地支-50,甲寅 53 | 天干地支-51,乙卯 54 | 天干地支-52,丙辰 55 | 天干地支-53,丁巳 56 | 天干地支-54,戊午 57 | 天干地支-55,己未 58 | 天干地支-56,庚申 59 | 天干地支-57,辛酉 60 | 天干地支-58,壬戌 61 | 天干地支-59,癸亥 -------------------------------------------------------------------------------- /word_libraries/default/mobs/船只名.txt: -------------------------------------------------------------------------------- 1 | 牡丹 2 | 玫瑰 3 | 郁金香 4 | 向日葵 5 | 白莲 6 | 鸢尾 7 | 樱花 8 | 茉莉 9 | 水仙 10 | 杜鹃花 11 | 君子兰 12 | 薰衣草 13 | 银杏 14 | 白桦 15 | 枫香 16 | 红杉 17 | 月桂 18 | 枫杨 19 | 香樟 20 | 白玉兰 21 | 黄连木 22 | 青枣 23 | 金合欢 24 | 黄柏 25 | 青柳 26 | 流苏 27 | 绿萝 28 | 玉兰花 29 | 文竹 30 | 常春藤 31 | 栀子花 32 | 蒲公英 33 | 海棠 34 | 木槿 35 | 山茶花 36 | 丁香 37 | 狼尾草 38 | 细柳 39 | 无花果 40 | 油橄榄 41 | 白杨 42 | 翡翠 43 | 珍珠 44 | 水晶 45 | 琥珀 46 | 玛瑙 47 | 琉璃 48 | 青翰 49 | 彩鹢 50 | 寒烟 51 | 白帆 52 | 云帆 53 | 海阔 54 | 启蒙 55 | 启航 56 | 渡远 57 | 水堂 58 | 海燕 59 | 飞鸿 60 | 雪浪 61 | 浪涛 62 | 浪潮 63 | 碧波 64 | 漩涡 65 | 四海 66 | 波涛 67 | 澜沧 68 | 云梦 69 | 浩泽 70 | 追梦 71 | 赤子 72 | 飞翼 73 | 晓燕 74 | 鸿运 75 | 睦月 76 | 羲和 77 | 寂静 78 | 乘风 79 | 浮萍 80 | 浮光 81 | 浮云 82 | 福源 83 | 鸿羽 84 | 白羽 85 | 扬帆 86 | 仙游 87 | 追忆 88 | 往昔 89 | 长空 90 | 沧海 91 | 长烟 92 | 秋水 93 | 夏荷 94 | 春潮 95 | 冬霜 96 | 染海 97 | 鱼尾 98 | 风靡 99 | 飞鱼 100 | 游子 101 | 览海 102 | 观海 103 | 听涛 104 | 浮水 -------------------------------------------------------------------------------- /Code/Patches/BookNamePatch.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Chinese_Name.utils; 3 | using HarmonyLib; 4 | 5 | namespace Chinese_Name; 6 | 7 | public class BookNamePatch : IPatch 8 | { 9 | public void Initialize() 10 | { 11 | new Harmony(nameof(set_book_name)).Patch(AccessTools.Method(typeof(Book), nameof(Book.newBook)), 12 | postfix: new HarmonyMethod(GetType(), nameof(set_book_name))); 13 | } 14 | private static void set_book_name(Book __instance, BookTypeAsset pBookType) 15 | { 16 | var template_id = pBookType.name_template; 17 | var generator = CN_NameGeneratorLibrary.Instance.get(template_id); 18 | if (generator == null) return; 19 | 20 | var para = new Dictionary(); 21 | 22 | ParameterGetters.GetBookParameterGetter(generator.parameter_getter)(__instance, para); 23 | 24 | __instance.data.name = generator.GenerateName(para); 25 | } 26 | } -------------------------------------------------------------------------------- /Code/Patches/SubspeciesNamePatch.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Chinese_Name.utils; 3 | using HarmonyLib; 4 | 5 | namespace Chinese_Name; 6 | 7 | public class SubspeciesNamePatch : IPatch 8 | { 9 | public void Initialize() 10 | { 11 | new Harmony(nameof(set_subspecies_name)).Patch(AccessTools.Method(typeof(Subspecies), nameof(Subspecies.generateName)), 12 | postfix: new HarmonyMethod(GetType(), nameof(set_subspecies_name))); 13 | } 14 | private static void set_subspecies_name(Subspecies __instance) 15 | { 16 | var template_id = "default_species"; 17 | var generator = CN_NameGeneratorLibrary.Instance.get(template_id); 18 | if (generator == null) return; 19 | 20 | var para = new Dictionary(); 21 | 22 | ParameterGetters.GetSubspeciesParameterGetter(generator.parameter_getter)(__instance, para); 23 | 24 | __instance.data.name = generator.GenerateName(para); 25 | } 26 | } -------------------------------------------------------------------------------- /name_generators/default/clans.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "human_clan", 4 | "templates": [ 5 | { 6 | "format": "$founder_home$$founder_family_name$#家#" 7 | }, 8 | { 9 | "format": "$founder_home$$founder_family_name$#氏#" 10 | }, 11 | { 12 | "format": "$founder_home$$founder_family_name$#族#" 13 | } 14 | ] 15 | }, 16 | { 17 | "id": "elf_clan", 18 | "templates": [ 19 | { 20 | "format": "$founder_family_name$#家族#" 21 | } 22 | ] 23 | }, 24 | { 25 | "id": "orc_clan", 26 | "templates": [ 27 | { 28 | "format": "$founder_family_name$#家族#" 29 | } 30 | ] 31 | }, 32 | { 33 | "id": "dwarf_clan", 34 | "templates": [ 35 | { 36 | "format": "$founder_family_name$#家族#" 37 | } 38 | ] 39 | } 40 | ] -------------------------------------------------------------------------------- /Code/Patches/LanguageNamePatch.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Chinese_Name.utils; 3 | using HarmonyLib; 4 | 5 | namespace Chinese_Name; 6 | 7 | public class LanguageNamePatch : IPatch 8 | { 9 | public void Initialize() 10 | { 11 | new Harmony(nameof(set_lang_name)).Patch(AccessTools.Method(typeof(Language), nameof(Language.generateName)), 12 | postfix: new HarmonyMethod(GetType(), nameof(set_lang_name))); 13 | } 14 | private static void set_lang_name(Language __instance, Actor pActor) 15 | { 16 | var template_id = pActor.GetNameTemplate(MetaType.Language); 17 | template_id = "human_lang"; 18 | var generator = CN_NameGeneratorLibrary.Instance.get(template_id); 19 | if (generator == null) return; 20 | 21 | var para = new Dictionary(); 22 | 23 | ParameterGetters.GetLanguageParameterGetter(generator.parameter_getter)(__instance, para); 24 | 25 | __instance.data.name = generator.GenerateName(para); 26 | } 27 | } -------------------------------------------------------------------------------- /Code/Patches/ReligionNamePatch.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Chinese_Name.utils; 3 | using HarmonyLib; 4 | 5 | namespace Chinese_Name; 6 | 7 | public class ReligionNamePatch : IPatch 8 | { 9 | public void Initialize() 10 | { 11 | new Harmony(nameof(set_religion_name)).Patch(AccessTools.Method(typeof(Religion), nameof(Religion.generateName)), 12 | postfix: new HarmonyMethod(GetType(), nameof(set_religion_name))); 13 | } 14 | private static void set_religion_name(Religion __instance, Actor pActor) 15 | { 16 | var template_id = pActor.GetNameTemplate(MetaType.Religion); 17 | template_id = "human_religion"; 18 | var generator = CN_NameGeneratorLibrary.Instance.get(template_id); 19 | if (generator == null) return; 20 | 21 | var para = new Dictionary(); 22 | 23 | ParameterGetters.GetReligionParameterGetter(generator.parameter_getter)(__instance, para); 24 | 25 | __instance.data.name = generator.GenerateName(para); 26 | } 27 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Inmny 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Code/Patches/CityNamePatch.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Chinese_Name.utils; 3 | using HarmonyLib; 4 | using NeoModLoader.api.attributes; 5 | using NeoModLoader.General.Event.Handlers; 6 | using NeoModLoader.General.Event.Listeners; 7 | 8 | namespace Chinese_Name; 9 | 10 | public class CityNamePatch : IPatch 11 | { 12 | public void Initialize() 13 | { 14 | new Harmony(nameof(set_city_name)).Patch(AccessTools.Method(typeof(City), nameof(City.generateName)), 15 | postfix: new HarmonyMethod(typeof(CityNamePatch), nameof(set_city_name))); 16 | } 17 | [Hotfixable] 18 | private static void set_city_name(City __instance, Actor pActor) 19 | { 20 | var template_id = pActor.GetNameTemplate(MetaType.City); 21 | template_id = "human_city"; 22 | var generator = CN_NameGeneratorLibrary.Instance.get(template_id); 23 | if (generator == null) return; 24 | 25 | var para = new Dictionary(); 26 | 27 | ParameterGetters.GetCityParameterGetter(generator.parameter_getter)(__instance, para); 28 | 29 | __instance.data.name = generator.GenerateName(para); 30 | } 31 | } -------------------------------------------------------------------------------- /Chinese_Name.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.2.32616.157 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chinese_Name", "Chinese_Name.csproj", "{85A0A737-8C31-44BB-8CF0-C229BA1F1646}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {85A0A737-8C31-44BB-8CF0-C229BA1F1646}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {85A0A737-8C31-44BB-8CF0-C229BA1F1646}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {85A0A737-8C31-44BB-8CF0-C229BA1F1646}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {85A0A737-8C31-44BB-8CF0-C229BA1F1646}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {1C0A9E0C-DBCD-4A2E-8D39-1CB287863073} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /Code/Patches/CultureNamePatch.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Chinese_Name.utils; 3 | using HarmonyLib; 4 | using NeoModLoader.General.Event.Handlers; 5 | using NeoModLoader.General.Event.Listeners; 6 | 7 | namespace Chinese_Name; 8 | 9 | public class CultureNamePatch : IPatch 10 | { 11 | public void Initialize() 12 | { 13 | //CultureCreateListener.RegisterHandler(new RenameCulture()); 14 | new Harmony(nameof(set_culture_name)).Patch(AccessTools.Method(typeof(Culture), nameof(Culture.createCulture)), 15 | postfix: new HarmonyMethod(GetType(), nameof(set_culture_name))); 16 | } 17 | 18 | private static void set_culture_name(Culture __instance, Actor pActor) 19 | { 20 | string template_id = pActor.GetNameTemplate(MetaType.Culture); 21 | template_id = "human_culture"; 22 | var generator = CN_NameGeneratorLibrary.Instance.get(template_id); 23 | if (generator == null) return; 24 | 25 | var para = new Dictionary(); 26 | 27 | ParameterGetters.GetCultureParameterGetter(generator.parameter_getter)(__instance, para); 28 | __instance.data.name = generator.GenerateName(para); 29 | } 30 | } -------------------------------------------------------------------------------- /word_libraries/default/联盟格言.txt: -------------------------------------------------------------------------------- 1 | 风起---- 2 | 雄视天下 3 | 为天下命 4 | 让我看看! 5 | 把酒论天下! 6 | 千万人吾往矣 7 | 智者顺时而谋 8 | 矛与盾,皆在手 9 | 一寸山河一寸血 10 | 和平经不起等待 11 | 以剑为救赎之翼 12 | 宝剑锋从磨砺出 13 | 师夷长技以制夷 14 | 大风起兮云飞扬 15 | 不过是糖衣炮弹 16 | 战争,战争永不变 17 | 道不同,不相为谋 18 | 领天意,征伐天下 19 | 天下风云出我辈! 20 | 你死我活,何必呢? 21 | 沉默是无言的蔑视 22 | 傲慢通往败亡之路 23 | 历史由胜利者书写 24 | 尊严总在剑锋之上 25 | 凡有血气,皆有争心 26 | 哀其不幸,怒其不争 27 | 攻城为下,攻心为上 28 | 黄金之路,就在脚下 29 | 怠慢忘身,祸灾乃作 30 | 你为鱼肉,我为刀俎 31 | 冲阵杀敌,无往不利 32 | 雄踞一方,草视天下 33 | 它山之石,可以攻玉 34 | 顺我者昌,逆我者亡 35 | 有一分热,发一分光 36 | 燕雀安知鸿鹄之志! 37 | 谁与争锋,大杀四方! 38 | 木秀于林,风必摧之! 39 | 恐惧来源于火力不足 40 | 没有无法跨越的寒冬 41 | 和平是用鲜血换来的 42 | 死于我手,是你的荣幸 43 | 以古为镜,可以知兴替 44 | 纵横之道,以苍生为棋 45 | 问苍茫大地,谁主沉浮? 46 | 事实能将空言打得粉碎 47 | 天下英雄尽入我毂中矣 48 | 野火烧不尽,春风吹又生 49 | 宁为刀下魂,不做膝下鬼 50 | 文章千秋治,武者甲子休 51 | 蛰龙已惊眠,一啸动千山 52 | 为天地立心,为生民立命 53 | 龙乘时而变,人乘势而起 54 | 不安于现状,不甘于平庸 55 | 得道者多助,失道者寡助 56 | 唯见月寒日暖,来煎人寿 57 | 呵呵,这可是时代的巨轮 58 | 天地同协力,何愁吾辈不昌 59 | 革命是要人生,不是要人死! 60 | 不安于小成,然后足以成大器 61 | 穷则独善其身,达则兼济天下 62 | 黑夜终将逝去,太阳终会升起 63 | 融世界于一城,筑一城为世界 64 | 为千秋谋大计,为万世开太平 65 | 我正变成死亡,世界的毁灭者 66 | 纵使困顿难行,亦当砥砺奋进 67 | 沙场染血何忧惧,马革裹尸还! 68 | 志之所向,金石为开,谁能御之? 69 | 无意逐鹿群雄,但知晓苍生苦楚 70 | 望神州,百姓苦,千里沃土皆荒芜 71 | 云从龙,风从虎,功名利禄尘与土 72 | 大江东去,浪淘尽,千古风流人物 73 | 结局终将美好,尽管路途遥远艰辛 74 | 路漫漫其修远兮,吾将上下而求索 75 | 江山如此多娇,引无数英雄竞折腰 76 | 往昔胜败何人究,沉戟黄沙度春秋 77 | 宁教我负天下人,切莫天下人负我 78 | 一言难诉千秋业,一纸难评半世人 79 | 不在沉默中爆发,就在沉默中灭亡 80 | 睥睨四顾纵声笑,天下英雄皆枉然! -------------------------------------------------------------------------------- /name_generators/default/creatures.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "human_name", 4 | "templates": [ 5 | { 6 | "format": "{百家姓:family_name}{千字文}{千字文}", 7 | "weight": 4 8 | }, 9 | { 10 | "format": "{百家姓:family_name}{千字文}", 11 | "weight": 1 12 | } 13 | ] 14 | }, 15 | { 16 | "id": "elf_name", 17 | "templates": [ 18 | { 19 | "format": "{西方名字}#·#{西方名字中缀}#·#{西方姓氏:family_name}", 20 | "weight": 1 21 | }, 22 | { 23 | "format": "{西方名字}#·#{西方姓氏:family_name}", 24 | "weight": 4 25 | } 26 | ] 27 | }, 28 | { 29 | "id": "orc_name", 30 | "templates": [ 31 | { 32 | "format": "{西方名字}#·#{西方名字中缀}#·#{西方姓氏:family_name}", 33 | "weight": 1 34 | }, 35 | { 36 | "format": "{西方名字}#·#{西方姓氏:family_name}", 37 | "weight": 4 38 | } 39 | ] 40 | }, 41 | { 42 | "id": "dwarf_name", 43 | "templates": [ 44 | { 45 | "format": "{西方名字}#·#{西方名字中缀}#·#{西方姓氏:family_name}", 46 | "weight": 1 47 | }, 48 | { 49 | "format": "{西方名字}#·#{西方姓氏:family_name}", 50 | "weight": 4 51 | } 52 | ] 53 | } 54 | ] -------------------------------------------------------------------------------- /name_generators/default/wars.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "war_conquest", 4 | "templates": [ 5 | { 6 | "format": "$defender_capital$#保卫战#", 7 | "weight": 5 8 | }, 9 | { 10 | "format": "$attacker$#侵#$defender_short$#战争#", 11 | "weight": 5 12 | }, 13 | { 14 | "format": "$天干地支纪年$#战役#", 15 | "weight": 0.1 16 | } 17 | ] 18 | }, 19 | { 20 | "id": "war_spite", 21 | "templates": [ 22 | { 23 | "format": "$attacker$#全面战争#" 24 | }, 25 | { 26 | "format": "$attacker$#征服战争#" 27 | } 28 | ] 29 | }, 30 | { 31 | "id": "war_inspire", 32 | "templates": [ 33 | { 34 | "format": "$attacker_short$$defender_short$#冲突#" 35 | } 36 | ] 37 | }, 38 | { 39 | "id": "war_rebellion", 40 | "templates": [ 41 | { 42 | "format": "$defender_capital$#起义#", 43 | "weight": 5 44 | }, 45 | { 46 | "format": "$defender_leader$#起义#", 47 | "weight": 5 48 | }, 49 | { 50 | "format": "$天干地支纪年$#革命#", 51 | "weight": 0.1 52 | } 53 | ] 54 | }, 55 | { 56 | "id": "war_whisper", 57 | "templates": [ 58 | { 59 | "format": "$attacker_short$$defender_short$#冲突#" 60 | }, 61 | { 62 | "format": "$attacker$#圣战#" 63 | } 64 | ] 65 | } 66 | ] -------------------------------------------------------------------------------- /Code/ModClass.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Reflection; 4 | using NeoModLoader.api; 5 | 6 | namespace Chinese_Name 7 | { 8 | class ModClass : BasicMod, IReloadable 9 | { 10 | internal Dictionary GlobalParameters = new(); 11 | 12 | private void Update() 13 | { 14 | foreach (var getter in ParameterGetters.global_parameter_getters) 15 | { 16 | getter(GlobalParameters); 17 | } 18 | } 19 | 20 | public void Reload() 21 | { 22 | WordLibraryManager.Instance.Reload(); 23 | CN_NameGeneratorLibrary.Instance.Reload(); 24 | } 25 | 26 | protected override void OnModLoad() 27 | { 28 | WordLibraryManager.Instance.init(); 29 | CN_NameGeneratorLibrary.Instance.init(); 30 | 31 | Config.isEditor = true; 32 | 33 | Type[] types = Assembly.GetExecutingAssembly().GetTypes(); 34 | // 虽然可以直接patch getName和getNameFromTemplate, 但那样无法获取更多的参数 35 | foreach (Type type in types) 36 | { 37 | if (type.GetInterface(nameof(IPatch)) != null) 38 | { 39 | try 40 | { 41 | IPatch patch = (IPatch)type.GetConstructor(new Type[] { }).Invoke(new object[] { }); 42 | patch.Initialize(); 43 | } 44 | catch (Exception e) 45 | { 46 | LogWarning("Failed to initialize patch: " + type.Name); 47 | LogWarning(e.ToString()); 48 | } 49 | } 50 | } 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /Code/Patches/AllianceNamePatch.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using HarmonyLib; 3 | using NeoModLoader.General.Event.Handlers; 4 | using NeoModLoader.General.Event.Listeners; 5 | 6 | namespace Chinese_Name; 7 | 8 | public class AllianceNamePatch : IPatch 9 | { 10 | public void Initialize() 11 | { 12 | new Harmony(nameof(set_alliance_name)).Patch( 13 | AccessTools.Method(typeof(WorldLog), nameof(WorldLog.logAllianceCreated)), 14 | prefix: new HarmonyMethod(typeof(AllianceNamePatch), nameof(set_alliance_name))); 15 | new Harmony(nameof(set_alliance_motto)).Patch(AccessTools.Method(typeof(Alliance), nameof(Alliance.getMotto)), 16 | prefix: new HarmonyMethod(AccessTools.Method(GetType(), nameof(set_alliance_motto)))); 17 | } 18 | 19 | private static bool set_alliance_motto(Alliance __instance) 20 | { 21 | if (!string.IsNullOrWhiteSpace(__instance.data.motto)) return true; 22 | var generator = CN_NameGeneratorLibrary.Instance.get("alliance_mottos"); 23 | if (generator == null) return true; 24 | 25 | var para = new Dictionary(); 26 | 27 | ParameterGetters.GetAllianceParameterGetter(generator.parameter_getter)(__instance, para); 28 | 29 | __instance.data.motto = generator.GenerateName(para); 30 | 31 | return true; 32 | } 33 | private static void set_alliance_name(Alliance pAlliance) 34 | { 35 | var generator = CN_NameGeneratorLibrary.Instance.get("alliance_name"); 36 | if (generator == null) return; 37 | 38 | var para = new Dictionary(); 39 | 40 | ParameterGetters.GetAllianceParameterGetter(generator.parameter_getter)(pAlliance, para); 41 | 42 | pAlliance.data.name = generator.GenerateName(para); 43 | } 44 | } -------------------------------------------------------------------------------- /name_generators/default/books.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "book_name_love_story", 4 | "templates": [ 5 | { 6 | "format": "{千字文}{千字文}#传记#", 7 | "weight": 4 8 | } 9 | ] 10 | }, 11 | { 12 | "id": "book_name_bad_story", 13 | "templates": [ 14 | { 15 | "format": "{千字文}{千字文}#悲剧#", 16 | "weight": 4 17 | } 18 | ] 19 | }, 20 | { 21 | "id": "book_name_fable", 22 | "templates": [ 23 | { 24 | "format": "{千字文}{千字文}#列传#", 25 | "weight": 4 26 | } 27 | ] 28 | }, 29 | { 30 | "id": "book_name_warfare_manual", 31 | "templates": [ 32 | { 33 | "format": "{千字文}{千字文}#军事指挥入门到入土#", 34 | "weight": 4 35 | } 36 | ] 37 | }, 38 | { 39 | "id": "book_name_economy_manual", 40 | "templates": [ 41 | { 42 | "format": "{千字文}{千字文}#经济调控从入门到入土#", 43 | "weight": 4 44 | } 45 | ] 46 | }, 47 | { 48 | "id": "book_name_stewardship_manual", 49 | "templates": [ 50 | { 51 | "format": "{千字文}{千字文}#内政处理从入门到入土#", 52 | "weight": 4 53 | } 54 | ] 55 | }, 56 | { 57 | "id": "book_name_diplomacy_manual", 58 | "templates": [ 59 | { 60 | "format": "{千字文}{千字文}#外交策略从入门到入土#", 61 | "weight": 4 62 | } 63 | ] 64 | }, 65 | { 66 | "id": "book_name_math", 67 | "templates": [ 68 | { 69 | "format": "{千字文}{千字文}#算经#", 70 | "weight": 4 71 | } 72 | ] 73 | }, 74 | { 75 | "id": "book_name_biology", 76 | "templates": [ 77 | { 78 | "format": "{千字文}{千字文}#进化指南#", 79 | "weight": 4 80 | } 81 | ] 82 | }, 83 | { 84 | "id": "book_name_history", 85 | "templates": [ 86 | { 87 | "format": "{千字文}{千字文}#史诗#", 88 | "weight": 4 89 | } 90 | ] 91 | } 92 | ] -------------------------------------------------------------------------------- /Code/Patches/WarNamePatch.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using HarmonyLib; 3 | using NeoModLoader.General.Event.Handlers; 4 | using NeoModLoader.General.Event.Listeners; 5 | 6 | namespace Chinese_Name; 7 | 8 | public class WarNamePatch : IPatch 9 | { 10 | public void Initialize() 11 | { 12 | new Harmony(nameof(set_war_name)).Patch(AccessTools.Method(typeof(WarManager), nameof(WarManager.newWar)), 13 | postfix: new HarmonyMethod(typeof(WarNamePatch), nameof(set_war_name))); 14 | 15 | WarStartListener.RegisterHandler(new RenameWar()); 16 | } 17 | 18 | private static void set_war_name(War __result, Kingdom pAttacker, Kingdom pDefender, WarTypeAsset pType) 19 | { 20 | if (pDefender != null && pDefender.getAge() <= 1) 21 | { 22 | pType = WarTypeLibrary.rebellion; 23 | } 24 | 25 | var generator = CN_NameGeneratorLibrary.Instance.get(pType.name_template); 26 | if (generator == null) return; 27 | 28 | var para = new Dictionary(); 29 | ParameterGetters.GetWarParameterGetter(generator.parameter_getter)(__result, para); 30 | 31 | __result.data.name = generator.GenerateName(para); 32 | } 33 | class RenameWar : WarStartHandler 34 | { 35 | public override void Handle(War pWar, Kingdom pAttacker, Kingdom pDefender, WarTypeAsset pWarType) 36 | { 37 | if (!string.IsNullOrWhiteSpace(pWar.data.name)) return; 38 | if (pDefender != null && pDefender.getAge() <= 1) 39 | { 40 | pWarType = WarTypeLibrary.rebellion; 41 | } 42 | 43 | var generator = CN_NameGeneratorLibrary.Instance.get(pWarType.name_template); 44 | if (generator == null) return; 45 | 46 | var para = new Dictionary(); 47 | ParameterGetters.GetWarParameterGetter(generator.parameter_getter)(pWar, para); 48 | 49 | pWar.data.name = generator.GenerateName(para); 50 | } 51 | } 52 | } -------------------------------------------------------------------------------- /Code/Utils/GeneralUtils.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Reflection; 6 | using Newtonsoft.Json; 7 | using Newtonsoft.Json.Serialization; 8 | using UnityEngine; 9 | 10 | namespace Chinese_Name.utils; 11 | 12 | internal static class GeneralUtils 13 | { 14 | public static string GetNameTemplate(this Actor actor, MetaType type) 15 | { 16 | string tNameTemplate = null; 17 | if (actor.hasCulture()) 18 | { 19 | tNameTemplate = actor.culture.getNameTemplate(type); 20 | } 21 | else 22 | { 23 | foreach (Actor t_parent in actor.getParents()) 24 | { 25 | if (t_parent.hasCulture()) 26 | { 27 | tNameTemplate = t_parent.culture.getNameTemplate(type); 28 | break; 29 | } 30 | } 31 | } 32 | if (string.IsNullOrEmpty(tNameTemplate)) 33 | { 34 | tNameTemplate = actor.asset.getNameTemplate(type); 35 | } 36 | 37 | return tNameTemplate; 38 | } 39 | public static List DeserializeAllFromResource(string pPath) 40 | { 41 | TextAsset[] text_assets = LoadAllFrom(pPath); 42 | return text_assets.Select(text_asset => Newtonsoft.Json.JsonConvert.DeserializeObject(text_asset.text)).Where(asset => asset != null).ToList(); 43 | } 44 | 45 | public static TextAsset[] LoadAllFrom(string pPath) 46 | { 47 | if (!Directory.Exists(pPath)) 48 | { 49 | return Array.Empty(); 50 | } 51 | List text_assets = new List(); 52 | foreach(var file_path in Directory.GetFiles(pPath, "*", SearchOption.AllDirectories)) 53 | { 54 | var text_asset = new TextAsset(File.ReadAllText(file_path)); 55 | text_asset.name = Path.GetFileNameWithoutExtension(file_path); 56 | text_assets.Add(text_asset); 57 | } 58 | return text_assets.ToArray(); 59 | } 60 | } -------------------------------------------------------------------------------- /name_generators/default/armor_and_accessory.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "armor_name", 4 | "default_template": { 5 | "format": "$locale$" 6 | }, 7 | "templates": [ 8 | { 9 | "format": "<$material$的$type$前缀><$type$后缀>", 10 | "weight": 60 11 | }, 12 | { 13 | "format": "<$material$><$type$后缀>" 14 | }, 15 | { 16 | "format": "$locale$" 17 | } 18 | ] 19 | }, 20 | { 21 | "id": "boots_name", 22 | "default_template": { 23 | "format": "$locale$" 24 | }, 25 | "templates": [ 26 | { 27 | "format": "<$material$的$type$前缀><$type$后缀>", 28 | "weight": 60 29 | }, 30 | { 31 | "format": "<$material$><$type$后缀>" 32 | }, 33 | { 34 | "format": "$locale$" 35 | } 36 | ] 37 | }, 38 | { 39 | "id": "helmet_name", 40 | "default_template": { 41 | "format": "$locale$" 42 | }, 43 | "templates": [ 44 | { 45 | "format": "<$material$的$type$前缀><$type$后缀>", 46 | "weight": 60 47 | }, 48 | { 49 | "format": "<$material$><$type$后缀>" 50 | }, 51 | { 52 | "format": "$locale$" 53 | } 54 | ] 55 | }, 56 | { 57 | "id": "ring_name", 58 | "default_template": { 59 | "format": "$locale$" 60 | }, 61 | "templates": [ 62 | { 63 | "format": "<$material$的$type$前缀><$type$后缀>", 64 | "weight": 60 65 | }, 66 | { 67 | "format": "<$material$><$type$后缀>" 68 | }, 69 | { 70 | "format": "$locale$" 71 | } 72 | ] 73 | }, 74 | { 75 | "id": "amulet_name", 76 | "default_template": { 77 | "format": "$locale$" 78 | }, 79 | "templates": [ 80 | { 81 | "format": "<$material$的$type$前缀><$type$后缀>", 82 | "weight": 60 83 | }, 84 | { 85 | "format": "<$material$><$type$后缀>" 86 | }, 87 | { 88 | "format": "$locale$" 89 | } 90 | ] 91 | } 92 | ] -------------------------------------------------------------------------------- /word_libraries/default/百家姓.txt: -------------------------------------------------------------------------------- 1 | 赵 2 | 钱 3 | 孙 4 | 李 5 | 周 6 | 吴 7 | 郑 8 | 王 9 | 冯 10 | 陈 11 | 褚 12 | 卫 13 | 蒋 14 | 沈 15 | 韩 16 | 杨 17 | 朱 18 | 秦 19 | 许 20 | 何 21 | 吕 22 | 施 23 | 张 24 | 孔 25 | 曹 26 | 严 27 | 华 28 | 金 29 | 魏 30 | 陶 31 | 姜 32 | 戚 33 | 谢 34 | 邹 35 | 喻 36 | 柏 37 | 章 38 | 云 39 | 苏 40 | 潘 41 | 葛 42 | 商 43 | 奚 44 | 范 45 | 彭 46 | 鲁 47 | 韦 48 | 昌 49 | 马 50 | 苗 51 | 花 52 | 方 53 | 俞 54 | 任 55 | 袁 56 | 柳 57 | 唐 58 | 费 59 | 薛 60 | 雷 61 | 贺 62 | 汤 63 | 滕 64 | 殷 65 | 罗 66 | 常 67 | 乐 68 | 于 69 | 时 70 | 齐 71 | 康 72 | 乌 73 | 言 74 | 贲 75 | 富 76 | 余 77 | 元 78 | 卜 79 | 傅 80 | 顾 81 | 孟 82 | 黄 83 | 穆 84 | 萧 85 | 尹 86 | 晋 87 | 楚 88 | 阎 89 | 法 90 | 姚 91 | 邵 92 | 岳 93 | 琴 94 | 汪 95 | 祁 96 | 毛 97 | 禹 98 | 狄 99 | 夜 100 | 贝 101 | 墨 102 | 臧 103 | 计 104 | 成 105 | 戴 106 | 宋 107 | 茅 108 | 庞 109 | 熊 110 | 纪 111 | 舒 112 | 屈 113 | 项 114 | 祝 115 | 董 116 | 梁 117 | 杜 118 | 阮 119 | 蓝 120 | 闵 121 | 席 122 | 典 123 | 季 124 | 贾 125 | 江 126 | 童 127 | 颜 128 | 郭 129 | 梅 130 | 米 131 | 居 132 | 尤 133 | 凤 134 | 盛 135 | 林 136 | 钟 137 | 丘 138 | 徐 139 | 邱 140 | 骆 141 | 寒 142 | 高 143 | 夏 144 | 蔡 145 | 田 146 | 樊 147 | 胡 148 | 凌 149 | 霍 150 | 虞 151 | 万 152 | 柯 153 | 管 154 | 卢 155 | 莫 156 | 房 157 | 应 158 | 宗 159 | 丁 160 | 邓 161 | 单 162 | 杭 163 | 洪 164 | 包 165 | 左 166 | 归 167 | 况 168 | 海 169 | 侯 170 | 将 171 | 石 172 | 崔 173 | 吉 174 | 龚 175 | 程 176 | 嵇 177 | 裴 178 | 陆 179 | 荣 180 | 翁 181 | 裘 182 | 甄 183 | 曲 184 | 糜 185 | 松 186 | 段 187 | 焦 188 | 牧 189 | 谷 190 | 班 191 | 秋 192 | 伊 193 | 宁 194 | 栾 195 | 甘 196 | 厉 197 | 容 198 | 融 199 | 饶 200 | 广 201 | 武 202 | 欧 203 | 闻 204 | 司 205 | 符 206 | 公 207 | 刘 208 | 景 209 | 詹 210 | 龙 211 | 叶 212 | 幸 213 | 娄 214 | 阳 215 | 邢 216 | 路 217 | 明 218 | 水 219 | 黎 220 | 印 221 | 白 222 | 全 223 | 封 224 | 怀 225 | 蒲 226 | 赖 227 | 卓 228 | 蔺 229 | 蒙 230 | 池 231 | 乔 232 | 郁 233 | 苍 234 | 翟 235 | 谭 236 | 姬 237 | 申 238 | 冉 239 | 桂 240 | 扈 241 | 燕 242 | 尚 243 | 农 244 | 温 245 | 庄 246 | 晏 247 | 柴 248 | 瞿 249 | 慕 250 | 连 251 | 习 252 | 艾 253 | 鱼 254 | 向 255 | 古 256 | 易 257 | 佟 258 | 牛 259 | 贡 260 | 胥 261 | 廖 262 | 步 263 | 耿 264 | 文 265 | 东 266 | 蔚 267 | 荀 268 | 宣 269 | 缪 270 | 井 271 | 车 272 | 衡 273 | 庚 274 | 聂 275 | 晁 276 | 敖 277 | 冷 278 | 辛 279 | 曾 280 | 权 281 | 岑 282 | 倪 283 | 安 284 | 平 285 | 郝 286 | 涂 287 | 沙 288 | 鲍 289 | 廉 290 | 解 291 | 鞠 292 | 毕 293 | 伍 294 | 宫 295 | 卞 296 | 丰 297 | 关 298 | 红 299 | 游 300 | 司马 301 | 司徒 302 | 司空 303 | 上官 304 | 欧阳 305 | 夏侯 306 | 诸葛 307 | 闻人 308 | 呼延 309 | 百里 310 | 东方 311 | 皇甫 312 | 尉迟 313 | 公孙 314 | 公羊 315 | 公西 316 | 轩辕 317 | 令狐 318 | 钟离 319 | 宇文 320 | 端木 321 | 乐正 322 | 长孙 323 | 慕容 324 | 左丘 325 | 东郭 326 | 西门 327 | 南宫 328 | 北堂 329 | 闾丘 330 | 独孤 331 | 淳于 332 | 公冶 333 | 宗政 334 | 澹台 335 | 微生 336 | 梁丘 -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /Code/Patches/ItemNamePatch.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using HarmonyLib; 3 | using NeoModLoader.api.attributes; 4 | 5 | namespace Chinese_Name; 6 | 7 | public class ItemNamePatch : IPatch 8 | { 9 | public void Initialize() 10 | {/* 11 | new Harmony(nameof(set_item_name)).Patch( 12 | AccessTools.Method(typeof(ItemGenerator), 13 | nameof(ItemGenerator.generateItem)), 14 | postfix: new 15 | HarmonyMethod(AccessTools.Method(GetType(), 16 | nameof(set_item_name))));*/ 17 | } 18 | /* 19 | [Hotfixable] 20 | private static void set_item_name(ref ItemData __result, ItemAsset pItemAsset, 21 | ActorBase pActor) 22 | { 23 | if (__result == null) return; 24 | if (!string.IsNullOrWhiteSpace(__result.name)) return; 25 | var max_quality = ItemQuality.Normal; 26 | foreach (var mod in __result.modifiers) 27 | { 28 | var mod_asset = AssetManager.items_modifiers.get(mod); 29 | if (mod_asset.quality > max_quality) max_quality = mod_asset.quality; 30 | } 31 | 32 | if (max_quality < ItemQuality.Legendary) return; 33 | 34 | string name = null; 35 | int num = 0; 36 | int no_found = 0; 37 | 38 | var para = new Dictionary(); 39 | while (string.IsNullOrWhiteSpace(name) || ItemGenerator.unique_legendary_names.Contains(name)) 40 | { 41 | string random_name_template = pItemAsset.getRandomNameTemplate(pActor); 42 | var generator = CN_NameGeneratorLibrary.Instance.get(random_name_template); 43 | 44 | if (generator == null) 45 | { 46 | no_found++; 47 | if (no_found > 3) return; 48 | 49 | continue; 50 | } 51 | 52 | ParameterGetters.GetItemParameterGetter(generator.parameter_getter)(__result, pItemAsset, pActor.a, para); 53 | generator.ClearTemplateGetter(); 54 | var template = generator.GetTemplate(para); 55 | name = template.GenerateName(para); 56 | 57 | if (++num > 10) 58 | { 59 | ItemGenerator.unique_legendary_names.Clear(); 60 | } 61 | 62 | if (num > 12) 63 | { 64 | name = generator.default_template.GenerateName(para); 65 | break; 66 | } 67 | } 68 | 69 | __result.name = name; 70 | if (num <= 10) ItemGenerator.unique_legendary_names.Add(name); 71 | }*/ 72 | } -------------------------------------------------------------------------------- /word_libraries/default/常见格言.txt: -------------------------------------------------------------------------------- 1 | 风起---- 2 | 兼爱非攻 3 | 繁荣昌盛 4 | 天国万年 5 | 与天博弈 6 | 雄视天下 7 | 为天下命 8 | 道,自然也 9 | 一代天骄--- 10 | 法,历则国正 11 | 义,以命为抵 12 | 千万人吾往矣 13 | 善,大爱于天下 14 | 周易,阴阳之道 15 | 言之易,行之难 16 | 知天易,逆天难 17 | 礼之用,和为贵 18 | 顺天意,行大道 19 | 九五 飞龙在天 20 | 初九 潜龙勿用 21 | 剑光如虹!前进! 22 | 一寸山河一寸血 23 | 和平经不起等待 24 | 以剑为救赎之翼 25 | 宝剑锋从磨砺出 26 | 师夷长技以制夷 27 | 大风起兮云飞扬 28 | 走,我带你杀人去 29 | 战争,战争永不变 30 | 道不同,不相为谋 31 | 领天意,征伐天下 32 | 天下风云出我辈! 33 | 浮夸掩盖不了事实 34 | 傲慢通往败亡之路 35 | 历史由胜利者书写 36 | 尊严总在剑锋之上 37 | 礼乐征伐自天子出 38 | 亘古不朽,方为永存 39 | 凡有血气,皆有争心 40 | 黄金之路,就在脚下 41 | 天上天下,唯朕独尊 42 | 怠慢忘身,祸灾乃作 43 | 你为鱼肉,我为刀俎 44 | 冲阵杀敌,无往不利 45 | 开天辟地,无惧无畏 46 | 雄踞一方,草视天下 47 | 它山之石,可以攻玉 48 | 顺我者昌,逆我者亡 49 | 不鸣则已,一鸣惊人 50 | 承天之志,御统八荒 51 | 逆天而行,上伐其道 52 | 龙战于野,其血玄黄 53 | 待到天时,荣耀方至 54 | 古之为政,爱人为大 55 | 兵锋所向,所向披靡 56 | 嫡庶有别,尊卑有序 57 | 率土之滨,莫非王土 58 | 是非曲直,任人评说 59 | 山河无恙,立当自强 60 | 陨道战天,谁与争锋 61 | 水能载舟,亦能覆舟 62 | 居上不骄,为下不倍 63 | 有一分热,发一分光 64 | 悠悠万国,吾为正统 65 | 直而不肆,光而不耀 66 | 三界六道,九州八荒 67 | 照亮前路,星夜兼程 68 | 燕雀安知鸿鹄之志! 69 | 受命于天,既寿永昌! 70 | 谁与争锋,大杀四方! 71 | 周公吐脯,天下归心! 72 | 木秀于林,风必摧之! 73 | 无惧无畏,生死何惜? 74 | 恐惧来源于火力不足 75 | 你的无畏来源于无知 76 | 你们对力量一无所知 77 | 没有无法跨越的寒冬 78 | 歌舞祥和,太平盛景乐 79 | 天下,终究是一场梦啊 80 | 死于我手,是你的荣幸 81 | 以古为镜,可以知兴替 82 | 纵横之道,以苍生为棋 83 | 以一身肝胆,捍卫正义 84 | 数风流人物,还看今朝 85 | 变法度,兴文化,安四方 86 | 问苍茫大地,谁主沉浮? 87 | 天下英雄尽入我毂中矣 88 | 你我之间隔着第四面墙 89 | 穷且益坚,不坠青云之志 90 | 野火烧不尽,春风吹又生 91 | 万花凋落尽,一梅独傲霜 92 | 天地一逆旅,同悲万古尘 93 | 门外沧浪水,可以濯吾缨 94 | 宁为刀下魂,不做膝下鬼 95 | 文章千秋治,武者甲子休 96 | 天子守国门,君王死社稷 97 | 蛰龙已惊眠,一啸动千山 98 | 为天地立心,为生民立命 99 | 三杯通大道,一醉解千愁 100 | 任力者故劳,任人者故逸 101 | 龙乘时而变,人乘势而起 102 | 不安于现状,不甘于平庸 103 | 唯见月寒日暖,来煎人寿 104 | 天地不仁,以万物为刍狗! 105 | 一生二,二生三,三生万物 106 | 尔等不过以五十步笑百步 107 | 通往王座的埋骨之路…… 108 | 上善若水,水利万物而不争 109 | 走自己的路,让别人说去吧 110 | 天地同协力,何愁吾辈不昌 111 | 国者,天下之大器也,重任也 112 | 法,立则国正善,大爱于天下 113 | 内外诸夷,凡敢称兵者,皆斩! 114 | 我们是这片土地上最靓的仔 115 | 不安于小成,然后足以成大器 116 | 不诱于小利,然后可以立远功 117 | 穷则独善其身,达则兼济天下 118 | 黑夜终将逝去,太阳终会升起 119 | 融世界于一城,筑一城为世界 120 | 为千秋谋大计,为万世开太平 121 | 黑夜悄然而至,灯火依旧通明 122 | 挽狂澜于既倒,扶大厦于将倾 123 | 我正变成死亡,世界的毁灭者 124 | 纵使困顿难行,亦当砥砺奋进 125 | 沙场染血何忧惧,马革裹尸还 126 | 万物之始,大道至简,衍化至繁 127 | 百姓无栗米充饥,何不食肉糜? 128 | 九劫空,苍天逆,旭日腾,圣族兴 129 | 挫其锐,解其纷,和其光,同其尘 130 | 志之所向,金石为开,谁能御之? 131 | 退一步是人间,进一步就在幽冥 132 | 滚滚长江东逝水,浪花淘尽英雄 133 | 书中皆记王侯事,青史不载人间 134 | 过往皆虚妄,唯有当下才是真实 135 | 金子做了骨髓,怕也是站不直吧 136 | “失败”只存在于废人的字典里 137 | 无意逐鹿群雄,但知晓苍生苦楚 138 | ​酒足饭暖八方友,宴尽席散一孤 139 | 望神州,百姓苦,千里沃土皆荒芜 140 | 云从龙,风从虎,功名利禄尘与土 141 | 大江东去,浪淘尽,千古风流人物 142 | 人法地,地法天,天法道,道法自然 143 | 结局终将美好,尽管路途遥远艰辛 144 | 路漫漫其修远兮,吾将上下而求索 145 | 灯火万家城四畔,星河一道水中央 146 | 此非偏安一隅,只求一方百姓安宁 147 | 江山如此多娇,引无数英雄竞折腰 148 | 往昔胜败何人究,沉戟黄沙度春秋 149 | 宁教我负天下人,切莫天下人负我 150 | 黄沙百战穿金甲,不破楼兰终不还 151 | 风水人间不可无,也须阴骘两相扶 152 | 君之视臣如土芥,则臣视君如寇仇 153 | 功名利禄皆作尘,不断江河万古流 154 | 混沌未分天地乱,茫茫渺渺无人见 155 | 一言难诉千秋业,一纸难评半世人 156 | 睥睨四顾纵声笑,天下英雄皆枉然! 157 | 济育苍生,其益多;平定寰宇,其功大 158 | 许多人开来的药方,往往不过是废纸 159 | 天道远,人道迩,非所及也,何以知之? 160 | 师之所处,荆棘生焉;大军之后,必有凶年 161 | 天下熙熙,皆为利来;天下攘攘,皆为利往 162 | 古之得道者,穷亦乐,达亦乐,所乐非穷达也 163 | 有志者自有千计万计,无志者只感千难万难 164 | 上不失天时,下不失地利,中得人和,而百事不废 -------------------------------------------------------------------------------- /Code/Patches/ClanNamePatch.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Chinese_Name.utils; 3 | using HarmonyLib; 4 | using NeoModLoader.General.Event.Handlers; 5 | using NeoModLoader.General.Event.Listeners; 6 | 7 | namespace Chinese_Name; 8 | 9 | public class ClanNamePatch : IPatch 10 | { 11 | public void Initialize() 12 | { 13 | // ClanCreateListener.RegisterHandler(new RenameClan()); 14 | new Harmony(nameof(set_clan_name)).Patch(AccessTools.Method(typeof(Clan), nameof(Clan.newClan)), 15 | postfix: new HarmonyMethod(AccessTools.Method(GetType(), nameof(set_clan_name)))); 16 | new Harmony(nameof(set_clan_motto)).Patch(AccessTools.Method(typeof(Clan), nameof(Clan.getMotto)), 17 | prefix: new HarmonyMethod(AccessTools.Method(GetType(), nameof(set_clan_motto)))); 18 | } 19 | 20 | private static bool set_clan_motto(Clan __instance) 21 | { 22 | if (!string.IsNullOrWhiteSpace(__instance.data.motto)) return true; 23 | var generator = CN_NameGeneratorLibrary.Instance.get("clan_mottos"); 24 | if (generator == null) return true; 25 | 26 | var para = new Dictionary(); 27 | 28 | ParameterGetters.GetClanParameterGetter(generator.parameter_getter)(__instance, null, para); 29 | 30 | __instance.data.motto = generator.GenerateName(para); 31 | return true; 32 | } 33 | 34 | private static void set_clan_name(Clan __instance, Actor pFounder) 35 | { 36 | var template_id = pFounder.GetNameTemplate(MetaType.Clan); 37 | template_id = "human_clan"; 38 | var generator = CN_NameGeneratorLibrary.Instance.get(template_id); 39 | if (generator == null) return; 40 | 41 | var para = new Dictionary(); 42 | 43 | ParameterGetters.GetClanParameterGetter(generator.parameter_getter)(__instance, pFounder, para); 44 | 45 | __instance.data.name = generator.GenerateName(para); 46 | } 47 | /* 48 | class RenameClan : ClanCreateHandler 49 | { 50 | private static readonly HashSet vanilla_postfix = new() 51 | { 52 | "ak", "an", "ok", "on", "uk", "un" 53 | }; 54 | 55 | public override void Handle(Clan pClan, Actor pFounder) 56 | { 57 | if (!string.IsNullOrWhiteSpace(pClan.data.name) && 58 | !vanilla_postfix.Contains(pClan.data.name.Trim())) return; 59 | if (pFounder == null) return; 60 | 61 | var asset = CN_NameGeneratorLibrary.Instance.get(pFounder.race.name_template_clan); 62 | if (asset == null) return; 63 | 64 | var para = new Dictionary(); 65 | 66 | ParameterGetters.GetClanParameterGetter(asset.parameter_getter)(pClan, pFounder, para); 67 | 68 | pClan.data.name = asset.GenerateName(para); 69 | } 70 | }*/ 71 | } -------------------------------------------------------------------------------- /word_libraries/default/西方名字中缀.txt: -------------------------------------------------------------------------------- 1 | 圣 2 | 琼 3 | 简 4 | 休 5 | 路 6 | 金 7 | 安 8 | 肯 9 | 班 10 | 宾 11 | 克 12 | 文 13 | 斯 14 | 莱 15 | 汀 16 | 罕 17 | 当 18 | 弗 19 | 阿 20 | 盖 21 | 艾 22 | 里 23 | 本 24 | 艾伦 25 | 阿诺 26 | 菲力 27 | 格罗 28 | 加米 29 | 欧锐 30 | 霍恩 31 | 戈恩 32 | 科格 33 | 瓦格 34 | 戴格 35 | 穆格 36 | 吉姆 37 | 德林 38 | 腓力 39 | 图尔 40 | 奥布 41 | 戈多 42 | 科沃 43 | 坦莱 44 | 亚托 45 | 犹格 46 | 托斯 47 | 塔库 48 | 莱恩 49 | 亚格 50 | 佩利 51 | 艾布特 52 | 亚伯 53 | 艾布纳 54 | 亚岱尔 55 | 亚当 56 | 艾狄生 57 | 亚恒 58 | 艾伯特 59 | 阿尔 60 | 奥斯顿 61 | 阿尔瓦 62 | 阿尔文 63 | 亚摩斯 64 | 安得烈 65 | 安德鲁 66 | 安迪 67 | 安其罗 68 | 安格斯 69 | 安东尼 70 | 安东莞 71 | 阿奇尔 72 | 亚力士 73 | 亚尔林 74 | 亚尔曼 75 | 阿诺德 76 | 亚瑟 77 | 艾文 78 | 亚撒 79 | 奥布里 80 | 巴德 81 | 巴罗 82 | 巴奈特 83 | 巴伦 84 | 巴里特 85 | 巴里 86 | 巴特 87 | 巴顿 88 | 巴特莱 89 | 巴泽尔 90 | 比其尔 91 | 贝克 92 | 班杰明 93 | 班奈特 94 | 班森 95 | 柏格 96 | 格吉尔 97 | 格纳 98 | 伯尼 99 | 伯特 100 | 伯顿 101 | 毕维斯 102 | 比尔 103 | 毕夏普 104 | 布雷尔 105 | 布莱克 106 | 布莱兹 107 | 鲍伯 108 | 布兹 109 | 伯里斯 110 | 波文 111 | 柏宜斯 112 | 布德 113 | 巴克 114 | 伯骑士 115 | 巴尔克 116 | 布尼尔 117 | 波顿 118 | 拜伦 119 | 富宾恩 120 | 斐迪南 121 | 费奇 122 | 福特 123 | 加尔 124 | 盖理 125 | 盖文 126 | 吉恩 127 | 杰佛理 128 | 杰夫 129 | 乔治 130 | 吉罗德 131 | 吉伯特 132 | 贾艾斯 133 | 葛兰 134 | 哥达 135 | 戈登 136 | 葛列格 137 | 麦基 138 | 麦尔肯 139 | 曼德尔 140 | 马卡斯 141 | 马里奥 142 | 马克 143 | 马伦 144 | 玛希 145 | 马歇尔 146 | 马丁 147 | 马文 148 | 马特 149 | 马休 150 | 摩里斯 151 | 马克斯 152 | 莫尔 153 | 莫林 154 | 麦克 155 | 米契尔 156 | 密克 157 | 麦尔斯 158 | 米路 159 | 门罗 160 | 曼特裘 161 | 摩尔根 162 | 摩帝马 163 | 摩顿 164 | 摩西 165 | 摩菲 166 | 莫雷 167 | 麦伦 168 | 蓝伯特 169 | 蓝斯 170 | 劳瑞 171 | 劳伦斯 172 | 列夫 173 | 伦恩 174 | 蓝侬 175 | 利奥 176 | 伦纳德 177 | 勒斯 178 | 里斯特 179 | 路易斯 180 | 路易士 181 | 陆斯恩 182 | 路德 183 | 赖尔 184 | 林顿 185 | 林恩 186 | 阿普顿 187 | 尤莱亚 188 | 范伦丁 189 | 佛能 190 | 维克 191 | 维克多 192 | 文森 193 | 维吉尔 194 | 维托 195 | 卫维恩 196 | 维德 197 | 瓦尔克 198 | 瓦尔特 199 | 华德 200 | 华纳 201 | 韦恩 202 | 韦勃 203 | 温德尔 204 | 韦纳尔 205 | 韦尔伯 206 | 威尔 207 | 威廉 208 | 威利 209 | 温士顿 210 | 伍德洛 211 | 莱特 212 | 伟兹 213 | 赛维尔 214 | 耶鲁 215 | 耶呼迪 216 | 约克 217 | 依夫 218 | 扎克利 219 | 纪伯伦 220 | 日杰夫 221 | 艾丽莎 222 | 艾米 223 | 艾丽丝 224 | 艾琳纳 225 | 艾利森 226 | 阿曼达 227 | 安尼 228 | 安尼塔 229 | 艾利尔 230 | 艾许利 231 | 阿维瓦 232 | 贝亚特 233 | 贝基 234 | 贝迪 235 | 布兰奇 236 | 邦尼 237 | 布伦达 238 | 卡米尔 239 | 莰迪丝 240 | 卡瑞纳 241 | 卡门 242 | 凯罗尔 243 | 卡罗琳 244 | 凯丽 245 | 凯利 246 | 沙琳 247 | 夏洛特 248 | 切利 249 | 雪利尔 250 | 克利丝 251 | 辛迪 252 | 康尼 253 | 科拉 254 | 科瑞恩 255 | 达弗尼 256 | 达栖 257 | 堂纳 258 | 桃瑞丝 259 | 伊迪丝 260 | 伊迪萨 261 | 伊莱恩 262 | 埃利诺 263 | 埃拉 264 | 艾利 265 | 艾丝特 266 | 尤杜拉 267 | 伊娃 268 | 伊弗 269 | 芬尼 270 | 菲奥纳 271 | 弗里达 272 | 吉纳 273 | 吉利安 274 | 格瑞丝 275 | 格瑞塔 276 | 汉纳 277 | 海伦纳 278 | 海伦 279 | 赫柏 280 | 海迪 281 | 艾沙拉 282 | 艾琳 283 | 艾维 284 | 杰奎琳 285 | 詹米 286 | 珍尼特 287 | 杰西卡 288 | 杰西 289 | 詹尼弗 290 | 詹尼 291 | 乔安纳 292 | 乔斯林 293 | 约瑟芬 294 | 乔栖 295 | 乔伊 296 | 乔伊斯 297 | 朱迪丝 298 | 朱迪 299 | 朱利亚 300 | 朱利 301 | 朱恩 302 | 基迪 303 | 莱瑞拉 304 | 劳拉 305 | 利纳 306 | 利迪亚 307 | 利莲 308 | 琳达 309 | 利兹 310 | 温尼弥 311 | 旺达 312 | 温迪 313 | 温尼 314 | 尤兰达 315 | 伊威特 316 | 伊温尼 -------------------------------------------------------------------------------- /Code/CN_NameGeneratorAsset.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Newtonsoft.Json; 4 | using Random = UnityEngine.Random; 5 | 6 | namespace Chinese_Name; 7 | 8 | [Serializable] 9 | public class CN_NameGeneratorAsset : Asset 10 | { 11 | private float current_total_weight; 12 | private float[] current_weights = null; 13 | private float total_weight = 0f; 14 | 15 | private float[] weights = null; 16 | [JsonProperty("parameter_getter")] public string parameter_getter { get; protected set; } = "default"; 17 | 18 | [JsonProperty("default_template")] 19 | public CN_NameTemplate default_template { get; protected set; } = CN_NameTemplate.Create("#NO_NAME#", 1); 20 | 21 | [JsonProperty("templates")] public List templates { get; protected set; } = new(); 22 | 23 | /// 24 | /// 按权重随机获取一个模板 25 | /// 26 | /// 你也可以override这个方法, 然后用单个提交的方式:Submit, 来提交派生的 27 | public virtual CN_NameTemplate GetTemplate(Dictionary pParameters = null) 28 | { 29 | InitializeWeight(); 30 | // 总不能有人写出几十上百个模板吧 31 | var random = Random.Range(0f, current_total_weight); 32 | for (int i = 0; i < weights.Length; i++) 33 | { 34 | random -= current_weights[i]; 35 | if (random > 0) continue; 36 | current_total_weight -= current_weights[i]; 37 | current_weights[i] = 0; 38 | return templates[i]; 39 | } 40 | 41 | return templates[templates.Count - 1]; 42 | } 43 | 44 | private void InitializeWeight() 45 | { 46 | if (weights != null && weights.Length == templates.Count) return; 47 | weights = new float[templates.Count]; 48 | total_weight = 0; 49 | for (var i = 0; i < templates.Count; i++) 50 | { 51 | weights[i] = templates[i].weight; 52 | total_weight += weights[i]; 53 | } 54 | 55 | current_weights = new float[templates.Count]; 56 | } 57 | 58 | public virtual void ClearTemplateGetter() 59 | { 60 | InitializeWeight(); 61 | weights.CopyTo(current_weights, 0); 62 | current_total_weight = total_weight; 63 | } 64 | 65 | /// 66 | /// 根据参数, 尝试10次随机获取模板并生成名字 67 | /// 68 | /// 你也可以override这个方法, 然后用单个提交的方式:Submit, 来提交派生的 69 | public virtual string GenerateName(Dictionary pParameters) 70 | { 71 | ClearTemplateGetter(); 72 | int max_try = 10; 73 | while (max_try-- > 0) 74 | { 75 | string name = GetTemplate(pParameters).GenerateName(pParameters); 76 | if (!string.IsNullOrEmpty(name)) return name; 77 | } 78 | 79 | return default_template.GenerateName(pParameters); 80 | } 81 | } -------------------------------------------------------------------------------- /Code/Patches/ActorNamePatch.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Reflection.Emit; 3 | using Chinese_Name.constants; 4 | using Chinese_Name.utils; 5 | using HarmonyLib; 6 | using NeoModLoader.api.attributes; 7 | 8 | namespace Chinese_Name; 9 | 10 | public class ActorNamePatch : IPatch 11 | { 12 | public void Initialize() 13 | { 14 | Harmony harmony = new Harmony(nameof(set_actor_name)); 15 | harmony.Patch(AccessTools.Method(typeof(Actor), nameof(Actor.getName)), 16 | prefix: new HarmonyMethod(AccessTools.Method(GetType(), nameof(set_actor_name)))); 17 | harmony.Patch(AccessTools.Method(typeof(ActionLibrary), nameof(ActionLibrary.turnIntoZombie)), 18 | transpiler: new HarmonyMethod(AccessTools.Method(GetType(), nameof(undead_creature_name)))); 19 | harmony.Patch(AccessTools.Method(typeof(ActionLibrary), nameof(ActionLibrary.turnIntoSkeleton)), 20 | transpiler: new HarmonyMethod(AccessTools.Method(GetType(), nameof(undead_creature_name)))); 21 | } 22 | [Hotfixable] 23 | private static bool set_actor_name(Actor __instance) 24 | { 25 | if (!string.IsNullOrWhiteSpace(__instance.data.name)) return true; 26 | var template_id = __instance.GetNameTemplate(MetaType.Unit); 27 | if (__instance.asset.civ) 28 | { 29 | template_id = "human_name"; 30 | } 31 | else 32 | { 33 | template_id = "default_name"; 34 | } 35 | var generator = CN_NameGeneratorLibrary.Instance.get(template_id); 36 | if (generator == null) return true; 37 | int max_try = 10; 38 | 39 | var para = new Dictionary(); 40 | ParameterGetters.GetActorParameterGetter(generator.parameter_getter)(__instance.a, para); 41 | 42 | __instance.data.get(DataS.family_name, out var family_name, ""); 43 | if (string.IsNullOrEmpty(family_name)) 44 | { 45 | foreach (var parent in __instance.getParents()) 46 | { 47 | parent.data.get(DataS.family_name, out family_name, ""); 48 | if (!string.IsNullOrEmpty(family_name) && parent.data.sex == ActorSex.Male) break; 49 | } 50 | } 51 | para[DataS.family_name_in_template] = family_name; 52 | 53 | __instance.data.name = generator.GenerateName(para); 54 | 55 | para.TryGetValue(DataS.family_name_in_template, out family_name); 56 | __instance.data.set(DataS.family_name, family_name); 57 | 58 | return true; 59 | } 60 | 61 | private static IEnumerable undead_creature_name(IEnumerable pIntro) 62 | { 63 | var codes = new List(pIntro); 64 | var idx = codes.FindIndex(x => x.opcode == OpCodes.Ldstr && (string)x.operand == "Un"); 65 | if (idx != -1) codes[idx].operand = "亡-"; 66 | return codes; 67 | } 68 | } -------------------------------------------------------------------------------- /Code/Patches/KingdomNamePatch.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Chinese_Name.utils; 3 | using HarmonyLib; 4 | using NeoModLoader.api.attributes; 5 | using NeoModLoader.General.Event.Handlers; 6 | using NeoModLoader.General.Event.Listeners; 7 | 8 | namespace Chinese_Name; 9 | 10 | public class KingdomNamePatch : IPatch 11 | { 12 | public void Initialize() 13 | { 14 | //KingdomSetupListener.RegisterHandler(new RenameKingdom()); 15 | new Harmony(nameof(set_kingdom_name)).Patch(AccessTools.Method(typeof(Kingdom), nameof(Kingdom.newCivKingdom)), 16 | postfix: new HarmonyMethod(AccessTools.Method(GetType(), nameof(set_kingdom_name)))); 17 | new Harmony(nameof(set_kingdom_motto)).Patch(AccessTools.Method(typeof(Kingdom), nameof(Kingdom.getMotto)), 18 | prefix: new HarmonyMethod(AccessTools.Method(GetType(), nameof(set_kingdom_motto)))); 19 | } 20 | [Hotfixable] 21 | private static void set_kingdom_name(Kingdom __instance, Actor pActor) 22 | { 23 | string template_id = pActor.GetNameTemplate(MetaType.Kingdom); 24 | template_id = "human_kingdom"; 25 | var generator = CN_NameGeneratorLibrary.Instance.get(template_id); 26 | if (generator == null) return; 27 | 28 | var para = new Dictionary(); 29 | 30 | ParameterGetters.GetKingdomParameterGetter(generator.parameter_getter)(__instance, para); 31 | 32 | __instance.data.name = generator.GenerateName(para); 33 | } 34 | private static bool set_kingdom_motto(Kingdom __instance) 35 | { 36 | if (!string.IsNullOrWhiteSpace(__instance.data.motto)) return true; 37 | var generator = CN_NameGeneratorLibrary.Instance.get("kingdom_mottos"); 38 | if (generator == null) return true; 39 | 40 | var para = new Dictionary(); 41 | 42 | ParameterGetters.GetKingdomParameterGetter(generator.parameter_getter)(__instance, para); 43 | 44 | __instance.data.motto = generator.GenerateName(para); 45 | return true; 46 | } 47 | /* 48 | class RenameKingdom : KingdomSetupHandler 49 | { 50 | public override void Handle(Kingdom pKingdom, bool pCiv) 51 | { 52 | if (!pCiv) return; 53 | if (!string.IsNullOrWhiteSpace(pKingdom.data.name)) return; 54 | 55 | string name_generator_id = "human_kingdom"; 56 | if (pKingdom.race == null) 57 | { 58 | ModClass.LogWarning( 59 | $"No found race for kingdom {pKingdom.id} at {pKingdom.location}, use default name generator(human)."); 60 | } 61 | else 62 | { 63 | name_generator_id = pKingdom.race.name_template_kingdom; 64 | } 65 | 66 | var asset = CN_NameGeneratorLibrary.Instance.get(name_generator_id); 67 | if (asset == null) return; 68 | 69 | var para = new Dictionary(); 70 | 71 | ParameterGetters.GetKingdomParameterGetter(asset.parameter_getter)(pKingdom, para); 72 | 73 | pKingdom.data.name = asset.GenerateName(para); 74 | } 75 | }*/ 76 | } -------------------------------------------------------------------------------- /word_libraries/default/真实国名.txt: -------------------------------------------------------------------------------- 1 | 夏国 2 | 商国 3 | 殷国 4 | 周国 5 | 齐国 6 | 楚国 7 | 秦国 8 | 燕国 9 | 赵国 10 | 魏国 11 | 滕国 12 | 汉国 13 | 蜀国 14 | 吴国 15 | 晋国 16 | 唐国 17 | 宋国 18 | 梁国 19 | 陈国 20 | 董国 21 | 梁国 22 | 杜国 23 | 阮国 24 | 蓝国 25 | 闵国 26 | 席国 27 | 季国 28 | 贾国 29 | 江国 30 | 童国 31 | 颜国 32 | 郭国 33 | 稷国 34 | 嵇国 35 | 瞿国 36 | 熹国 37 | 熙国 38 | 溪国 39 | 奚国 40 | 潜国 41 | 易国 42 | 奕国 43 | 蔚国 44 | 辰国 45 | 宿国 46 | 苍国 47 | 沧国 48 | 澜国 49 | 阳国 50 | 恙国 51 | 云国 52 | 腾国 53 | 常国 54 | 沏国 55 | 恭国 56 | 惟国 57 | 洁国 58 | 楠国 59 | 恒国 60 | 曌国 61 | 登国 62 | 睦国 63 | 蜀国 64 | 涯国 65 | 奉国 66 | 仪国 67 | 威国 68 | 辉国 69 | 煌国 70 | 陵国 71 | 荣国 72 | 容国 73 | 桦国 74 | 颉国 75 | 斌国 76 | 盛国 77 | 汤国 78 | 尚国 79 | 阕国 80 | 庚国 81 | 鑫国 82 | 辛国 83 | 林国 84 | 钟国 85 | 丘国 86 | 徐国 87 | 邱国 88 | 骆国 89 | 寒国 90 | 高国 91 | 夏国 92 | 蔡国 93 | 田国 94 | 樊国 95 | 胡国 96 | 凌国 97 | 霍国 98 | 虞国 99 | 柯国 100 | 卢国 101 | 莫国 102 | 炳国 103 | 禀国 104 | 泽国 105 | 赫国 106 | 澈国 107 | 钺国 108 | 羽国 109 | 睿国 110 | 邈国 111 | 丁国 112 | 毅国 113 | 熠国 114 | 芝国 115 | 宸国 116 | 枳国 117 | 轩国 118 | 赫国 119 | 栩国 120 | 黍国 121 | 岳国 122 | 茂国 123 | 宸国 124 | 擎国 125 | 烁国 126 | 朔国 127 | 启国 128 | 绮国 129 | 韬国 130 | 涛国 131 | 邓国 132 | 杭国 133 | 洪国 134 | 况国 135 | 石国 136 | 崔国 137 | 吉国 138 | 龚国 139 | 驹国 140 | 柒国 141 | 柏国 142 | 嵩国 143 | 淮国 144 | 岚国 145 | 风国 146 | 伍国 147 | 程国 148 | 裴国 149 | 陆国 150 | 翁国 151 | 甄国 152 | 曲国 153 | 梵国 154 | 煜国 155 | 永国 156 | 枭国 157 | 宵国 158 | 曜国 159 | 曦国 160 | 杞国 161 | 杰国 162 | 糜国 163 | 松国 164 | 段国 165 | 焦国 166 | 牧国 167 | 谷国 168 | 班国 169 | 秋国 170 | 伊国 171 | 宁国 172 | 栾国 173 | 甘国 174 | 厉国 175 | 武国 176 | 符国 177 | 刘国 178 | 景国 179 | 詹国 180 | 龙国 181 | 叶国 182 | 幸国 183 | 黎国 184 | 印国 185 | 白国 186 | 怀国 187 | 泉国 188 | 骁国 189 | 恺国 190 | 尘国 191 | 朴国 192 | 苇国 193 | 柳国 194 | 泛国 195 | 梧国 196 | 鸿国 197 | 虹国 198 | 鉴国 199 | 秉国 200 | 蒲国 201 | 鹏国 202 | 澎国 203 | 彭国 204 | 裕国 205 | 隅国 206 | 卓国 207 | 蔺国 208 | 蒙国 209 | 瑜国 210 | 枫国 211 | 乾国 212 | 康国 213 | 翠国 214 | 棠国 215 | 陇国 216 | 池国 217 | 麟国 218 | 乔国 219 | 郁国 220 | 翟国 221 | 谭国 222 | 申国 223 | 冉国 224 | 桂国 225 | 燕国 226 | 温国 227 | 庄国 228 | 晏国 229 | 柴国 230 | 慕国 231 | 连国 232 | 艾国 233 | 向国 234 | 佟国 235 | 廖国 236 | 步国 237 | 耿国 238 | 文国 239 | 聂国 240 | 晁国 241 | 敖国 242 | 冷国 243 | 曾国 244 | 岑国 245 | 倪国 246 | 郝国 247 | 涂国 248 | 毕国 249 | 卞国 250 | 丰国 251 | 关国 252 | 游国 253 | 齐国 254 | 楚国 255 | 韩国 256 | 赵国 257 | 魏国 258 | 秦国 259 | 唐国 260 | 晋国 261 | 汉国 262 | 周国 263 | 吴国 264 | 越国 265 | 闽国 266 | 鲁国 267 | 宋国 268 | 郑国 269 | 汐国 270 | 砻国 271 | 许国 272 | 莱国 273 | 萧国 274 | 舒国 275 | 纪国 276 | 郧国 277 | 蒋国 278 | 芮国 279 | 沈国 280 | 曹国 281 | 权国 282 | 谢国 283 | 巴国 284 | 息国 285 | 欲国 286 | 邢国 287 | 祝国 288 | 陈国 289 | 薛国 290 | 项国 291 | 滕国 292 | 葛国 293 | 戴国 294 | 遂国 295 | 炎国 296 | 罗国 297 | 绞国 298 | 黄国 299 | 蓼国 300 | 肥国 301 | 鼓国 302 | 姒国 303 | 苏国 304 | 冀国 305 | 杨国 306 | 皖国 307 | 弦国 308 | 凡国 309 | 茅国 310 | 雍国 311 | 顿国 312 | 费国 313 | 郇国 314 | 任国 315 | 邳国 316 | 轸国 317 | 荀国 318 | 桐国 319 | 毛国 320 | 绚国 321 | 道国 322 | 微国 323 | 瑕国 324 | 姜国 325 | 计国 326 | 成国 327 | 庞国 328 | 屈国 329 | 典国 330 | 尤国 331 | 凤国 332 | 裘国 333 | 融国 334 | 广国 335 | 娄国 336 | 路国 337 | 明国 338 | 全国 339 | 衡国 340 | 廉国 341 | 观国 342 | 骀国 343 | 岐国 344 | 箕国 345 | 莘国 346 | 载国 347 | 氐国 348 | 荆国 349 | 麇国 350 | 历国 351 | 潞国 352 | 吕国 353 | 郳国 354 | 趙国 355 | 随国 356 | 藤国 357 | 郤国 358 | 章国 359 | 邹国 360 | 安陵国 361 | 淳于国 362 | 丁零国 363 | 孤竹国 364 | 颛臾国 365 | 坚昆国 366 | 陆浑国 367 | 曲沃国 368 | 舒鸠国 369 | 舒廖国 370 | 舒庸国 371 | 乌桓国 372 | 乌孙国 373 | 须句国 374 | 中山国 375 | 祝其国 376 | 钟吾国 377 | 无终国 378 | 钟离国 379 | 青云国 380 | 傲寒国 381 | 元夕国 382 | 麟游国 383 | 傲来国 384 | 天溪国 -------------------------------------------------------------------------------- /Code/CN_NameGeneratorLibrary.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using Chinese_Name.utils; 5 | 6 | namespace Chinese_Name; 7 | 8 | public class CN_NameGeneratorLibrary : AssetLibrary 9 | { 10 | internal static CN_NameGeneratorLibrary Instance = new(); 11 | private static HashSet submitted_dir = new HashSet(); 12 | 13 | public override void init() 14 | { 15 | base.init(); 16 | id = "CN_NameGeneratorLibrary"; 17 | SubmitDirectoryToLoad(Path.Combine(ModClass.Instance.GetDeclaration().FolderPath, "name_generators/default")); 18 | } 19 | 20 | public static CN_NameGeneratorAsset Get(string pId) 21 | { 22 | return Instance.get(pId); 23 | } 24 | 25 | internal void Reload() 26 | { 27 | HashSet reload_dir = new HashSet(submitted_dir); 28 | submitted_dir.Clear(); 29 | foreach (var dir in reload_dir) 30 | { 31 | SubmitDirectoryToLoad(dir); 32 | } 33 | } 34 | 35 | public override CN_NameGeneratorAsset get(string pID) 36 | { 37 | if (string.IsNullOrEmpty(pID)) return null; 38 | return dict.TryGetValue(pID, out CN_NameGeneratorAsset asset) ? asset : null; 39 | } 40 | 41 | public static void SubmitDirectoryToLoad(string pDirectory) 42 | { 43 | if (submitted_dir.Contains(pDirectory)) return; 44 | List> name_generator_assets = 45 | GeneralUtils.DeserializeAllFromResource>(pDirectory); 46 | List name_generator_assets_flatten = new List(); 47 | foreach (List name_generator_asset in name_generator_assets) 48 | { 49 | name_generator_assets_flatten.AddRange(name_generator_asset); 50 | } 51 | 52 | foreach (CN_NameGeneratorAsset asset in name_generator_assets_flatten) 53 | { 54 | asset.default_template?.ReParse(); 55 | Submit(asset); 56 | } 57 | 58 | submitted_dir.Add(pDirectory); 59 | } 60 | 61 | public static void Submit(CN_NameGeneratorAsset pAsset) 62 | { 63 | for (int i = 0; i < pAsset.templates.Count; i++) 64 | { 65 | var name_template = pAsset.templates[i]; 66 | try 67 | { 68 | name_template.Parse(); 69 | } 70 | catch (Exception e) 71 | { 72 | ModClass.LogWarning($"Failed to parse name template '{name_template.raw_format}' in {pAsset.id}"); 73 | ModClass.LogWarning(e.Message); 74 | ModClass.LogInfo($"Just skip it now."); 75 | 76 | pAsset.templates.RemoveAt(i); 77 | i--; 78 | } 79 | } 80 | 81 | if (pAsset.templates.Count == 0) 82 | { 83 | ModClass.LogWarning($"No valid name template in {pAsset.id}"); 84 | ModClass.LogInfo($"Just skip it now."); 85 | 86 | return; 87 | } 88 | 89 | Instance.add(pAsset); 90 | 91 | if (!AssetManager.name_generator.dict.TryGetValue(pAsset.id, out NameGeneratorAsset vanilla_asset)) 92 | { 93 | vanilla_asset = AssetManager.name_generator.add(new NameGeneratorAsset() 94 | { 95 | id = pAsset.id 96 | }); 97 | } 98 | /* 99 | vanilla_asset.use_dictionary = false; 100 | vanilla_asset.templates = new List() 101 | { 102 | "space" 103 | }; 104 | vanilla_asset.vowels = new string[] { "" };*/ 105 | } 106 | } -------------------------------------------------------------------------------- /word_libraries/default/西方名字.txt: -------------------------------------------------------------------------------- 1 | 艾伦 2 | 艾布特 3 | 亚伯 4 | 艾布纳 5 | 亚岱尔 6 | 亚当 7 | 艾狄生 8 | 亚度尼斯 9 | 亚德里恩 10 | 亚恒 11 | 艾伯特 12 | 奥德里奇 13 | 亚历山大 14 | 亚尔弗列得 15 | 阿尔杰 16 | 阿尔杰农 17 | 奥斯顿 18 | 阿尔瓦 19 | 阿尔文 20 | 亚尔维斯 21 | 亚摩斯 22 | 安得烈 23 | 安德鲁 24 | 安迪 25 | 安其罗 26 | 安格斯 27 | 安斯艾尔 28 | 安东尼 29 | 安东莞 30 | 安东尼奥 31 | 阿奇尔 32 | 阿奇柏德 33 | 亚力士 34 | 亚尔林 35 | 亚尔曼 36 | 阿姆斯壮 37 | 阿诺德 38 | 亚瑟 39 | 艾文 40 | 亚撒 41 | 亚希伯恩 42 | 亚特伍德 43 | 奥布里 44 | 奥格斯格 45 | 奥古斯汀 46 | 艾富里 47 | 拜尔德 48 | 柏得温 49 | 班克罗福特 50 | 巴德 51 | 巴罗 52 | 巴奈特 53 | 巴伦 54 | 巴里特 55 | 巴里 56 | 巴萨罗穆 57 | 巴特 58 | 巴顿 59 | 巴特莱 60 | 巴泽尔 61 | 比其尔 62 | 贝克 63 | 班尼迪克 64 | 班杰明 65 | 班奈特 66 | 班森 67 | 柏格 68 | 格吉尔 69 | 格纳 70 | 伯尼 71 | 伯特 72 | 伯顿 73 | 柏特莱姆 74 | 毕维斯 75 | 比尔 76 | 布拉得里克 77 | 弗雷得力克 78 | 马克西米兰 79 | 阿纳斯塔西 80 | 比阿特丽斯 81 | 克里斯蒂 82 | 科瑞斯特尔 83 | 弗雷德里卡 84 | 毕夏普 85 | 布雷尔 86 | 布莱克 87 | 布莱兹 88 | 鲍伯 89 | 布兹 90 | 伯里斯 91 | 波文 92 | 柏宜斯 93 | 布德 94 | 布兰得利 95 | 布莱迪 96 | 布兰登 97 | 布莱恩 98 | 布鲁克 99 | 布鲁斯 100 | 布鲁诺 101 | 巴克 102 | 伯骑士 103 | 巴尔克 104 | 布尼尔 105 | 波顿 106 | 拜伦 107 | 富宾恩 108 | 菲力克斯 109 | 斐迪南 110 | 费奇 111 | 费兹捷勒 112 | 福特 113 | 法兰西斯 114 | 法兰克 115 | 法兰克林 116 | 加布力尔 117 | 加尔 118 | 盖理 119 | 盖文 120 | 吉恩 121 | 杰佛理 122 | 杰夫 123 | 乔治 124 | 吉罗德 125 | 吉伯特 126 | 贾艾斯 127 | 葛兰 128 | 哥达 129 | 高德佛里 130 | 戈登 131 | 葛列格 132 | 葛列格里 133 | 葛里菲兹 134 | 格罗佛 135 | 古斯塔夫 136 | 麦基 137 | 麦尔肯 138 | 曼德尔 139 | 马卡斯 140 | 马里奥 141 | 马克 142 | 马伦 143 | 玛希 144 | 马歇尔 145 | 马丁 146 | 马文 147 | 马特 148 | 马休 149 | 摩里斯 150 | 马克斯 151 | 麦斯威尔 152 | 马勒第兹 153 | 莫尔 154 | 莫林 155 | 麦克 156 | 米契尔 157 | 密克 158 | 麦尔斯 159 | 米路 160 | 门罗 161 | 曼特裘 162 | 摩尔根 163 | 摩帝马 164 | 摩顿 165 | 摩西 166 | 摩菲 167 | 莫雷 168 | 麦伦 169 | 蓝伯特 170 | 蓝斯 171 | 劳瑞 172 | 劳伦斯 173 | 列夫 174 | 伦恩 175 | 蓝侬 176 | 利奥 177 | 伦纳德 178 | 利奥波德 179 | 勒斯 180 | 里斯特 181 | 路易斯 182 | 赖昂内尔 183 | 路易士 184 | 陆斯恩 185 | 路德 186 | 赖尔 187 | 林顿 188 | 林恩 189 | 尤里西斯 190 | 阿普顿 191 | 尤莱亚 192 | 范伦铁恩 193 | 范伦丁 194 | 佛能 195 | 维克 196 | 维克多 197 | 文森 198 | 维吉尔 199 | 维托 200 | 卫维恩 201 | 维德 202 | 瓦尔克 203 | 瓦尔特 204 | 华德 205 | 华纳 206 | 韦恩 207 | 韦勃 208 | 韦伯斯特 209 | 温德尔 210 | 韦纳尔 211 | 韦尔伯 212 | 威尔 213 | 威廉 214 | 威利 215 | 威弗列德 216 | 温士顿 217 | 伍德洛 218 | 渥兹华斯 219 | 莱特 220 | 伟兹 221 | 赛维尔 222 | 耶鲁 223 | 耶呼弟 224 | 约克 225 | 依夫 226 | 扎克利 227 | 纪伯伦 228 | 日杰夫 229 | 艾丽莎 230 | 艾米 231 | 爱丽丝 232 | 艾琳娜 233 | 艾莉森 234 | 阿曼达 235 | 艾美 236 | 安伯 237 | 阿纳斯塔西 238 | 安德莉亚 239 | 安吉拉 240 | 安吉莉亚 241 | 安吉莉娜 242 | 安妮 243 | 安尼塔 244 | 艾莉尔 245 | 阿普里尔 246 | 艾许莉 247 | 阿维娃 248 | 笆笆拉 249 | 贝亚特 250 | 贝基 251 | 贝蒂 252 | 布兰奇 253 | 邦妮 254 | 布伦达 255 | 卡米尔 256 | 莰蒂丝 257 | 卡瑞纳 258 | 卡门 259 | 凯罗尔 260 | 卡罗琳 261 | 凯丽 262 | 凯莉 263 | 卡桑德拉 264 | 沙琳 265 | 夏洛特 266 | 切莉 267 | 雪莉尔 268 | 克莉丝 269 | 克里斯蒂 270 | 克里斯汀 271 | 辛迪 272 | 克劳迪娅 273 | 克莱门特 274 | 克劳瑞丝 275 | 康妮 276 | 康斯坦斯 277 | 科拉 278 | 科瑞恩 279 | 戴茜 280 | 达芙妮 281 | 达茜 282 | 黛比 283 | 戴博拉 284 | 戴布拉 285 | 安芬米 286 | 黛安娜 287 | 德洛丽丝 288 | 堂纳尔 289 | 桃瑞丝 290 | 伊迪丝 291 | 伊迪萨 292 | 伊莱恩 293 | 埃莉诺 294 | 伊丽莎白 295 | 埃拉 296 | 爱伦 297 | 艾莉 298 | 爱斯特尔 299 | 爱丝特 300 | 尤杜拉 301 | 伊娃 302 | 伊芙 303 | 芬妮 304 | 菲奥纳 305 | 弗郎西丝 306 | 弗里达 307 | 吉娜 308 | 吉莉安 309 | 格拉蒂丝 310 | 格罗瑞娅 311 | 格瑞丝 312 | 格瑞塔 313 | 格温多琳 314 | 汉娜 315 | 海伦娜 316 | 海伦 317 | 赫柏 318 | 海蒂 319 | 英格丽德 320 | 爱沙拉 321 | 艾琳 322 | 艾丽丝 323 | 艾维 324 | 杰奎琳 325 | 詹米 326 | 詹尼特 327 | 吉恩 328 | 杰西卡 329 | 杰西 330 | 詹尼弗 331 | 詹米佩 332 | 乔安纳 333 | 乔斯林 334 | 约瑟芬 335 | 乔茜 336 | 乔伊 337 | 乔伊斯 338 | 朱迪丝 339 | 朱蒂 340 | 朱恩 341 | 基蒂 342 | 莱瑞拉 343 | 劳拉 344 | 莉娜 345 | 莉迪娅 346 | 莉莲 347 | 琳达 348 | 丽莎 349 | 莉兹 350 | 温妮莎 351 | 维姬 352 | 维多利亚 353 | 薇薇安 354 | 旺达 355 | 温蒂 356 | 温妮 357 | 尤兰达 358 | 伊薇特 359 | 伊温妮 360 | 佐伊 361 | 弗朗西斯 362 | 约翰 363 | 汤姆 364 | 亨利 365 | 杰克 366 | 查理 367 | 爱德华 368 | 理查德 369 | 罗伯特 370 | 本杰明 371 | 詹姆斯 372 | 约瑟夫 373 | 亚历克斯 374 | 彼得 375 | 蒂姆 376 | 詹森 377 | 伊恩 378 | 戴维 379 | 格雷格 380 | 保罗 381 | 克里斯 382 | 弗雷德 383 | 瑞恩 384 | 卡尔 385 | 罗宾 386 | 亨特 387 | 萨姆 388 | 詹姆 389 | 埃里克 390 | 乔恩 391 | 肯尼斯 392 | 乔希 393 | 莱昂纳德 394 | 丹尼尔 395 | 哈利 396 | 尼克 397 | 拉尔夫 398 | 乔治亚 399 | 谢菲尔德 400 | 布莱德利 401 | 尤金 402 | 迪伦 403 | 卢克 404 | 格雷 405 | 奥斯卡 406 | 马库斯 407 | 西蒙 408 | 麦克斯 409 | 卡梅伦 410 | 莫里斯 411 | 汉克 412 | 阿尔弗雷德 413 | 拉里 414 | 汉密尔顿 415 | 乔纳森 416 | 卡特 417 | 格雷森 418 | 诺亚 419 | 奈杰尔 420 | 瑞吉 421 | 罗伊 422 | 里奇 423 | 卡洛斯 424 | 约瑟夫斯 425 | 费利克斯 426 | 休伯特 427 | 格雷戈里 428 | 贾斯汀 429 | 哈里森 430 | 兰斯洛特 431 | 阿瑟 432 | 贝拉米 433 | 戴伦 434 | 德里克 435 | 赛斯 436 | 弗雷泽 437 | 罗杰 438 | 纳撒尼尔 439 | 凯文 440 | 谢里登 441 | 阿尔伯特 442 | 汉斯 443 | 莫里茨 444 | 安德烈 445 | 蒂莫 446 | 弗里德里希 447 | 尼古拉斯 448 | 约阿希姆 449 | 费迪南德 450 | 伯纳德 451 | 迈克尔 452 | 罗兰 453 | 格奥尔格 454 | 克劳斯 455 | 比尔德 456 | 欧内斯特 457 | 布雷希特 458 | 贝尔特 459 | 雅各布 460 | 雷纳德 461 | 亨德里克 462 | 帕特里克 463 | 沃尔夫冈 464 | 弗朗茨 465 | 乌尔里希 466 | 维克托 467 | 比利 468 | 沃尔特 469 | 安德烈亚斯 470 | 格哈德 471 | 尼古拉 472 | 赫尔曼 473 | 马特乌斯 474 | 雷奥波德 475 | 奥古斯特 476 | 约尔格 477 | 亨利克 478 | 维尔纳 479 | 奥托 480 | 约翰内斯 481 | 马修 482 | 安德烈斯 483 | 米洛 484 | 泰德 485 | 约尔根 486 | 克里斯托夫 487 | 纽曼 488 | 约翰尼 489 | 卢卡斯 490 | 格奥尔克 491 | 路德维希 492 | 卡斯滕 493 | 斯特凡 494 | 费德里克 495 | 费德曼 496 | 恩斯特 497 | 蒂尔曼 498 | 卡洛 499 | 大卫 500 | 史蒂文 501 | 安德烈亚 502 | 博多夫 503 | 法布里斯 504 | 塞巴斯蒂安 505 | 约阿希姆斯 506 | 格雷戈尔 507 | 布里安马克 508 | 西米利安 509 | 塔迪乌斯 510 | 米歇尔 511 | 乔西亚 512 | 克里斯托弗 513 | 希尔德斯 514 | 卡尔斯鲁 515 | 康斯坦茨 516 | 柯斯马克 517 | 克雷尔德 518 | 库克 519 | 米勒 520 | 特纳 521 | 霍尔 522 | 肯特 523 | 米尔 -------------------------------------------------------------------------------- /word_libraries/default/真实城名.txt: -------------------------------------------------------------------------------- 1 | 广南 2 | 淮阴 3 | 昌平 4 | 太原 5 | 榆次 6 | 静乐 7 | 碎叶 8 | 玄池 9 | 长道 10 | 同谷 11 | 涵武 12 | 盘堤 13 | 渭南 14 | 蓝田 15 | 咸阳 16 | 醴泉 17 | 富平 18 | 泾阳 19 | 武功 20 | 许昌 21 | 汝南 22 | 荆北 23 | 新野 24 | 兴元 25 | 襄阳 26 | 周至 27 | 京兆 28 | 夏绥 29 | 朔方 30 | 玄菟 31 | 京畿 32 | 海西 33 | 海东 34 | 下邽 35 | 华阴 36 | 潼关 37 | 华山 38 | 冯翊 39 | 郃阳 40 | 白水 41 | 新平 42 | 永寿 43 | 安化 44 | 方渠 45 | 河阳 46 | 王屋 47 | 河内 48 | 武陟 49 | 鄢陵 50 | 汝阳 51 | 上蔡 52 | 新蔡 53 | 宛丘 54 | 太康 55 | 陈留 56 | 开封 57 | 蔚领 58 | 雍丘 59 | 尉氏 60 | 楚丘 61 | 萧关 62 | 阴盘 63 | 安定 64 | 临泾 65 | 襄平 66 | 建业 67 | 汉中 68 | 羲和 69 | 剑阁 70 | 永安 71 | 南中 72 | 建宁 73 | 函阳 74 | 上洛 75 | 扶风 76 | 汧阳 77 | 彭原 78 | 砀山 79 | 襄邑 80 | 永康 81 | 汝阴 82 | 下蔡 83 | 睢阳 84 | 依锦 85 | 颍上 86 | 下鄄 87 | 濮阳 88 | 新安 89 | 须昌 90 | 梁山 91 | 东阿 92 | 长清 93 | 济阴 94 | 离狐 95 | 彭阳 96 | 符离 97 | 临淮 98 | 下邳 99 | 夏丘 100 | 涟水 101 | 益丰 102 | 北海 103 | 临朐 104 | 淄川 105 | 邹平 106 | 临淄 107 | 临济 108 | 即墨 109 | 蓬莱 110 | 文登 111 | 高密 112 | 瑕丘 113 | 姑苏 114 | 方与 115 | 莱芜 116 | 朐山 117 | 郁洲 118 | 沭阳 119 | 雁荡 120 | 淮上 121 | 江涛 122 | 广陵 123 | 朝歌 124 | 陈仓 125 | 淮扬 126 | 琅琊 127 | 浔阳 128 | 奉天 129 | 长平 130 | 宣武 131 | 崇安 132 | 宝安 133 | 临安 134 | 松江 135 | 豫章 136 | 会稽 137 | 兰陵 138 | 晋陵 139 | 嘉应 140 | 临沂 141 | 金陵 142 | 樊荣 143 | 谷山 144 | 乐乡 145 | 武当 146 | 丰利 147 | 郧乡 148 | 上庸 149 | 房陵 150 | 内乡 151 | 南阳 152 | 泌阳 153 | 方阳 154 | 东莱 155 | 顺化 156 | 洛交 157 | 中部 158 | 咸宁 159 | 延安 160 | 灵武 161 | 会宁 162 | 五原 163 | 嵩山 164 | 阳翟 165 | 鲁山 166 | 弘农 167 | 朱阳 168 | 芮旦 169 | 崤谷 170 | 荥阳 171 | 新郑 172 | 阳武 173 | 中牟 174 | 白马 175 | 延津 176 | 银川 177 | 宁朔 178 | 怀德 179 | 榆林 180 | 新秦 181 | 九原 182 | 安康 183 | 汉南 184 | 保定 185 | 平凉 186 | 梓潼 187 | 南海 188 | 交趾 189 | 巴蜀 190 | 柴桑 191 | 建安 192 | 江夏 193 | 江陵 194 | 荆南 195 | 长沙 196 | 武陵 197 | 零陵 198 | 桂阳 199 | 吴越 200 | 麟游 201 | 岐山 202 | 鹑觚 203 | 良原 204 | 上邽 205 | 藩安 206 | 曲阜 207 | 海阴 208 | 东阳 209 | 秦岭 210 | 清水 211 | 汴宋 212 | 东林 213 | 上陇 214 | 街亭 215 | 成纪 216 | 伏羌 217 | 襄武 218 | 渭源 219 | 溢乐 220 | 祐川 221 | 河东 222 | 阳绛 223 | 平阳 224 | 文成 225 | 大宁 226 | 西河 227 | 昌化 228 | 楼烦 229 | 乐平 230 | 上党 231 | 高平 232 | 阳泉 233 | 雁门 234 | 马邑 235 | 云中 236 | 安边 237 | 兴唐 238 | 范阳 239 | 上魏 240 | 丰源 241 | 上谷 242 | 妫川 243 | 归德 244 | 密云 245 | 渔阳 246 | 广平 247 | 巨鹿 248 | 常山 249 | 博陵 250 | 文安 251 | 河间 252 | 饶阳 253 | 信川 254 | 景南 255 | 平原 256 | 清河 257 | 泉柳 258 | 北平 259 | 鲁豫 260 | 临汝 261 | 灵昌 262 | 博平 263 | 顿丘 264 | 东平 265 | 济南 266 | 东海 267 | 雎阳 268 | 颖川 269 | 济阳 270 | 历阳 271 | 永阳 272 | 寿春 273 | 钟离 274 | 庐江 275 | 蕲春 276 | 齐安 277 | 义阳 278 | 弋阳 279 | 安陆 280 | 汉阳 281 | 富水 282 | 汉东 283 | 同安 284 | 盛唐 285 | 丹阳 286 | 兴安 287 | 吴兴 288 | 余杭 289 | 新定 290 | 余姚 291 | 临海 292 | 缙云 293 | 永嘉 294 | 长乐 295 | 清源 296 | 临汀 297 | 临川 298 | 南康 299 | 庐陵 300 | 宜春 301 | 衡阳 302 | 连山 303 | 江华 304 | 邵阳 305 | 鄱阳 306 | 巴陵 307 | 黔中 308 | 宁夷 309 | 涪川 310 | 夜郎 311 | 溱溪 312 | 南川 313 | 涪陵 314 | 清化 315 | 卢溪 316 | 潭阳 317 | 龙溪 318 | 卢阳 319 | 灵溪 320 | 淮安 321 | 巴东 322 | 云安 323 | 南浦 324 | 南宾 325 | 夷陵 326 | 澧阳 327 | 云阳 328 | 临滨 329 | 丹桂 330 | 竟陵 331 | 洋川 332 | 顺政 333 | 河池 334 | 浦建 335 | 通川 336 | 盛山 337 | 南平 338 | 巴川 339 | 潾川 340 | 益昌 341 | 符阳 342 | 始宁 343 | 咸安 344 | 蓬山 345 | 阳安 346 | 仁寿 347 | 犍为 348 | 通义 349 | 临邛 350 | 唐安 351 | 濛阳 352 | 德阳 353 | 巴西 354 | 归诚 355 | 静川 356 | 恭化 357 | 昭德 358 | 江源 359 | 临翼 360 | 同昌 361 | 普安 362 | 遂宁 363 | 安岳 364 | 资阳 365 | 泸川 366 | 和义 367 | 南溪 368 | 越溪 369 | 栖霞 370 | 汉源 371 | 卢山 372 | 通化 373 | 阆中 374 | 南充 375 | 维川 376 | 天保 377 | 静戎 378 | 阴平 379 | 交川 380 | 崎阳 381 | 江油 382 | 灵应 383 | 始兴 384 | 海丰 385 | 潮阳 386 | 漳浦 387 | 义宁 388 | 高要 389 | 晋康 390 | 临封 391 | 开阳 392 | 云浮 393 | 恩平 394 | 南陵 395 | 高凉 396 | 南潘 397 | 海康 398 | 珠崖 399 | 琼山 400 | 延德 401 | 万安 402 | 万全 403 | 普宁 404 | 感义 405 | 连云 406 | 陵水 407 | 温水 408 | 南昌 409 | 合浦 410 | 安乐 411 | 定川 412 | 象山 413 | 宁仁 414 | 常林 415 | 郎宁 416 | 安阳 417 | 贺水 418 | 怀泽 419 | 宁浦 420 | 永定 421 | 宁越 422 | 龙池 423 | 招义 424 | 临潭 425 | 扶南 426 | 横山 427 | 平乐 428 | 临贺 429 | 苍梧 430 | 蒙山 431 | 开江 432 | 临江 433 | 浔江 434 | 龙江 435 | 江宁 436 | 宁川 437 | 龙水 438 | 正平 439 | 融水 440 | 乐兴 441 | 文阳 442 | 九真 443 | 日南 444 | 承化 445 | 汤泉 446 | 玉山 447 | 平琴 448 | 郁林 449 | 武郎 450 | 温泉 451 | 武曲 452 | 苏茂 453 | 武峨 454 | 修德 455 | 循德 456 | 始安 457 | 建陵 458 | 福禄 459 | 唐林 460 | 西平 461 | 狄道 462 | 安乡 463 | 宁塞 464 | 天水 465 | 陇西 466 | 临洮 467 | 和政 468 | 武安 469 | 怀道 470 | 合川 471 | 武威 472 | 张掖 473 | 酒泉 474 | 晋昌 475 | 敦煌 476 | 镇南 477 | 禾川 478 | 交河 479 | 伊吾 480 | 嘉裕 481 | 北庭 482 | 灵川 483 | 南亭 484 | 昌明 485 | 荆楚 486 | 赤水 487 | 淮南 488 | 南皮 489 | 司隶 490 | 陇南 491 | 奕下 492 | 陵川 493 | 常德 494 | 德鲁 495 | 晋阳 496 | 延福 497 | 承平 498 | 大斌 499 | 嘉兴 500 | 鸣沙 501 | 凤翔 502 | 汧源 503 | 华亭 504 | 平高 505 | 江恩 506 | 安淮 507 | 邬洲 508 | 颐江 509 | 钦阳 510 | 灵充 511 | 太汾 512 | 乌新 513 | 玉辉 514 | 安元 515 | 鹤泉 516 | 璀港 517 | 义鹿 518 | 新羯 519 | 华林 520 | 简竹 521 | 黄果 522 | 锡晟 523 | 如丰 524 | 兴约 525 | 大容 526 | 姜洲 527 | 瑞青 528 | 松傈 529 | 绍平 530 | 吉名 531 | 玖安 532 | 玉欣 533 | 宏尔 534 | 东远 535 | 连春 536 | 栗元 537 | 高壤 538 | 梅江 539 | 庆泓 540 | 沣山 541 | 瑞西 542 | 煊九 543 | 曲希 544 | 赤密 545 | 康明 546 | 抚意 547 | 诚德 548 | 北荃 549 | 东擂 550 | 余春 551 | 九林 552 | 盛化 553 | 诸洲 554 | 永纪 555 | 嘉平 556 | 沽丰 557 | 海容 558 | 滨月 559 | 黎云 560 | 温棠 561 | 长汀 562 | 澜和 563 | 晴烟 564 | 乐元 565 | 玉珑 566 | 临祈 567 | 骅琴 568 | 颖中 569 | 熙芳 570 | 洛平 571 | 云汐 572 | 天长 573 | 安庐 574 | 承和 575 | 慕非 576 | 瑞安 577 | 干乘 578 | 高菀 579 | 乐安 580 | 扶乐 581 | 沅南 582 | 成德 583 | 乌枝 584 | 桑乾 585 | 长岁 586 | 兰干 587 | 令居 588 | 封溪 589 | 朱吾 590 | 滦阳 591 | 真定 592 | 登昼 593 | 定陶 594 | 汶阳 595 | 淡仪 596 | 长垣 597 | 景宁 598 | 淳安 599 | 乐清 600 | 澄谭 601 | 永登 602 | 宁昌 603 | 益阳 -------------------------------------------------------------------------------- /word_libraries/default/西方姓氏.txt: -------------------------------------------------------------------------------- 1 | 拜拉席恩 2 | 坦格利亚 3 | 克莱门斯 4 | 马其顿 5 | 路易斯 6 | 查士丁尼 7 | 提利尔 8 | 兰尼斯特 9 | 史塔克 10 | 艾林 11 | 艾利昂 12 | 布莱蒙 13 | 戴恩 14 | 佛勒 15 | 达特 16 | 雷德温 17 | 埃绪福特 18 | 布尔威 19 | 切斯塔 20 | 佛罗伦 21 | 塔利 22 | 贝克 23 | 贝里席 24 | 塔贝克 25 | 马尔布兰 26 | 克雷赫 27 | 维斯特林 28 | 享特 29 | 卡特 30 | 史密斯 31 | 布鲁克 32 | 邱吉尔 33 | 希尔 34 | 雷克 35 | 菲尔德 36 | 格林 37 | 伍德 38 | 韦尔 39 | 布朗 40 | 怀特 41 | 朗曼 42 | 肖特 43 | 夏普 44 | 哈代 45 | 斯特林 46 | 伯德 47 | 布尔 48 | 福克斯 49 | 霍克 50 | 斯托克 51 | 里德 52 | 葛洛佛 53 | 波顿 54 | 菲林特 55 | 曼德勒 56 | 莫尔蒙 57 | 安柏 58 | 佛奥 59 | 约翰 60 | 布赖恩 61 | 彼得 62 | 亚当 63 | 詹姆斯 64 | 威廉 65 | 雅各布 66 | 约书亚 67 | 迈克尔 68 | 伊桑 69 | 约瑟夫 70 | 马修 71 | 安东尼 72 | 丹尼尔 73 | 瑞安 74 | 塞缪尔 75 | 凯文 76 | 大卫 77 | 洛根 78 | 本杰明 79 | 安德鲁 80 | 亨利 81 | 尼古拉斯 82 | 加文 83 | 欧文 84 | 杰克 85 | 怀亚特 86 | 韦恩 87 | 沃尔特 88 | 查尔斯 89 | 梅里特 90 | 厄尔 91 | 科波菲尔 92 | 爱德华 93 | 唐纳德 94 | 乔治 95 | 保罗 96 | 格雷格 97 | 托马斯 98 | 罗伯特 99 | 吉恩 100 | 格伦 101 | 罗纳德 102 | 弗朗西斯 103 | 斯蒂芬 104 | 乔恩 105 | 理查德 106 | 马克 107 | 马库斯 108 | 斯科特 109 | 邓肯 110 | 道格拉斯 111 | 基思 112 | 霍华德 113 | 罗素 114 | 克莱顿 115 | 李尔 116 | 史蒂夫 117 | 汤姆 118 | 克莱 119 | 奥利弗 120 | 肯尼思 121 | 拉尔夫 122 | 安迪 123 | 托尼 124 | 蒂龙 125 | 劳伦斯 126 | 帕特里克 127 | 哈里 128 | 艾伦 129 | 尤金 130 | 弗兰克 131 | 克雷格 132 | 杰森 133 | 马丁 134 | 乔纳森 135 | 哈里森 136 | 康纳 137 | 盖洛德 138 | 肖恩 139 | 库珀 140 | 斯坦利 141 | 卡尔霍恩 142 | 尼尔 143 | 杰弗里 144 | 哈罗德 145 | 雷蒙德 146 | 弗雷德 147 | 马歇尔 148 | 赛拉斯 149 | 罗伊 150 | 杰西 151 | 布鲁斯 152 | 诺里斯 153 | 霍拉肖 154 | 克拉伦斯 155 | 劳埃德 156 | 杜安 157 | 莫蒂默 158 | 欧内斯特 159 | 沃伦 160 | 格雷厄姆 161 | 马尔温 162 | 奥森 163 | 丹尼斯 164 | 杰克逊 165 | 德怀特 166 | 哈伦 167 | 阿瑟 168 | 珀西瓦尔 169 | 蒙哥马利 170 | 克莱德 171 | 罗德尼 172 | 杰拉尔德 173 | 富兰克林 174 | 霍勒斯 175 | 塞思 176 | 伦道夫 177 | 弗洛伊德 178 | 卡尔 179 | 布伦特 180 | 克利夫 181 | 马尔科姆 182 | 蒂莫西 183 | 华莱士 184 | 皮尔斯 185 | 埃德蒙 186 | 加里 187 | 纳森 188 | 埃里克 189 | 阿尔伯特 190 | 罗宾 191 | 拉里 192 | 伊恩 193 | 伦纳德 194 | 戈登 195 | 德里克 196 | 马克斯韦尔 197 | 亚历克 198 | 伯纳德 199 | 斯图尔特 200 | 鲁珀特 201 | 迪安 202 | 菲利普 203 | 罗斯 204 | 科林 205 | 达伦 206 | 梅尔文 207 | 贾斯廷 208 | 扎克 209 | 埃利奥特 210 | 西蒙 211 | 摩根 212 | 克拉克 213 | 泽维尔 214 | 贾里德 215 | 埃德加 216 | 克里斯平 217 | 纳尔逊 218 | 埃米特 219 | 特雷弗 220 | 特拉维斯 221 | 兰斯 222 | 阿德里安 223 | 德斯蒙德 224 | 布伦丹 225 | 布雷特 226 | 安布罗斯 227 | 巴兹尔 228 | 基兰 229 | 科南 230 | 德莫特 231 | 达德利 232 | 费利克斯 233 | 芬恩 234 | 奥斯卡 235 | 悉尼 236 | 亚伦 237 | 文森特 238 | 安格斯 239 | 格兰特 240 | 卢克 241 | 迈尔斯 242 | 莫顿 243 | 兰德尔 244 | 雷金纳德 245 | 赫伯特 246 | 韦斯利 247 | 奈杰尔 248 | 亚历山大 249 | 多米尼克 250 | 布拉德利 251 | 利亚姆 252 | 德克 253 | 万斯 254 | 凯尔 255 | 切斯特 256 | 奥利维娅 257 | 艾米莉 258 | 索菲 259 | 杰茜卡 260 | 爱丽丝 261 | 斯卡莉特 262 | 艾玛 263 | 黛西 264 | 伊芙 265 | 菲比 266 | 西恩娜 267 | 安娜 268 | 玛丽 269 | 梅甘 270 | 伊丽莎白 271 | 艾米 272 | 达西 273 | 玛蒂尔达 274 | 埃琳 275 | 露西 276 | 格蕾丝 277 | 伊芙琳 278 | 安珀 279 | 哈丽雅特 280 | 凯特琳 281 | 贾丝明 282 | 麦迪逊 283 | 凯特 284 | 埃莉诺 285 | 亚历山德拉 286 | 萨拉 287 | 玛莎 288 | 贝萨妮 289 | 丽贝卡 290 | 维多利亚 291 | 加布里埃拉 292 | 娜奥米 293 | 劳伦 294 | 克拉拉 295 | 劳拉 296 | 凯拉 297 | 妮科尔 298 | 斯凯 299 | 伊丽莎 300 | 帕特里夏 301 | 琳达 302 | 芭芭拉 303 | 珍妮弗 304 | 玛丽亚 305 | 苏珊 306 | 玛格丽特 307 | 多萝西 308 | 丽萨 309 | 南希 310 | 海伦 311 | 桑德拉 312 | 唐娜 313 | 卡萝尔 314 | 露丝 315 | 莎伦 316 | 米歇尔 317 | 金伯莉 318 | 德博拉 319 | 阿梅莉亚 320 | 夏洛特 321 | 伊莎贝拉 322 | 露比 323 | 艾迪生 324 | 阿莉莎 325 | 阿比盖尔 326 | 朱莉娅 327 | 萨曼莎 328 | 布鲁克琳 329 | 阿什莉 330 | 纳塔莉 331 | 布里安娜 332 | 克洛艾 333 | 黑莉 334 | 莉莲 335 | 朱迪丝 336 | 艾莉森 337 | 阿曼达 338 | 安杰拉 339 | 奥黛丽 340 | 比阿特丽斯 341 | 布伦达 342 | 布里奇特 343 | 卡罗琳 344 | 卡桑德拉 345 | 夏丽蒂 346 | 塞西莉娅 347 | 安妮 348 | 克拉丽莎 349 | 克丽塔布尔 350 | 谢里尔 351 | 辛西娅 352 | 卡当斯 353 | 科迪莉亚 354 | 达芙妮 355 | 迪安娜 356 | 丹尼丝 357 | 多洛蕾丝 358 | 多琳 359 | 德鲁西莉 360 | 伊迪丝 361 | 埃德娜 362 | 埃莉奥诺 363 | 艾琳 364 | 埃德温娜 365 | 埃丝特尔 366 | 埃塞尔 367 | 费莉西蒂 368 | 菲奥娜 369 | 吉纳维芙 370 | 格蒂 371 | 格温 372 | 格温德琳 373 | 亨丽埃塔 374 | 伊莫金 375 | 伊丽丝 376 | 伊梅尔达 377 | 杰奎琳 378 | 詹娜 379 | 乔安娜 380 | 约瑟芬 381 | 朱莉安娜 382 | 凯瑟琳 383 | 基拉 384 | 凯莉 385 | 莉娅 386 | 洛伊丝 387 | 洛蕾塔 388 | 洛娜 389 | 路易莎 390 | 琳内特 391 | 露辛达 392 | 玛贝尔 393 | 马西娅 394 | 玛丽莲 395 | 玛丽萨 396 | 玛乔丽 397 | 莫德 398 | 梅拉妮 399 | 米尔娜 400 | 梅维丝 401 | 娜丁 402 | 葆拉 403 | 佩内洛普 404 | 菲莉帕 405 | 普丽西拉 406 | 朗达 407 | 丽塔 408 | 罗伯塔 409 | 罗莎蒙德 410 | 罗斯玛丽 411 | 罗克珊 412 | 萨布丽娜 413 | 塞尔玛 414 | 塞莉娜 415 | 西比尔 416 | 苏珊娜 417 | 塔拉 418 | 塔比莎 419 | 特尔玛 420 | 特蕾莎 421 | 蒂法尼 422 | 瓦尼莎 423 | 梅利沙 424 | 伊韦特 425 | 韦拉 426 | 塞尔达 427 | 帕梅拉 428 | 阿里安娜 429 | 莫妮卡 430 | 伊雷妮 431 | 希瑟 432 | 林赛 433 | 吉莉恩 434 | 克丽丝滕 435 | 奥戴特 436 | 费利西亚 437 | 克里斯蒂 438 | 坎达丝 439 | 迪沙 440 | 弗兰 441 | 多莉丝 442 | 考特妮 443 | 弗朗西丝 444 | 曼迪 445 | 明迪 446 | 蕾切尔 447 | 米兰达 448 | 弗吉尼娅 449 | 维沃 450 | 琼斯 451 | 威廉姆斯 452 | 泰勒 453 | 戴维斯 454 | 威尔逊 455 | 埃文斯 456 | 约翰逊 457 | 罗宾逊 458 | 汤普森 459 | 莱特 460 | 沃克 461 | 菲利普斯 462 | 米切尔 463 | 爱德华兹 464 | 莫里斯 465 | 瓦德 466 | 格雷 467 | 贝利 468 | 帕克 469 | 科林斯 470 | 罗杰斯 471 | 休斯 472 | 普莱斯 473 | 沃森 474 | 福斯特 475 | 艾利斯 476 | 布鲁克斯 477 | 科赫 478 | 鲍尔 479 | 费舍尔 480 | 施耐德 481 | 施密特 482 | 沃尔夫 483 | 翰恩 484 | 福格尔 485 | 鲍姆 486 | 布鲁莫 487 | 阿普费尔 488 | 波尔 489 | 伯姆 490 | 法兰克 491 | 贝格 492 | 巴赫 493 | 布施 494 | 索玛 495 | 弗赖塔格 496 | 朗格 497 | 容 498 | 魏斯 499 | 舍恩 500 | 舒 501 | 巴尔 502 | 哈默尔 503 | 科普夫 504 | 察恩 505 | 勒伯尔 506 | 佩蒂 507 | 杜布瓦 508 | 杜兰 509 | 拉文 510 | 拉马尔 511 | 拉维尔 512 | 莫雷尔 513 | 卡莱 514 | 德维 515 | 拉克鲁瓦 516 | 波特 517 | 塞皮 518 | 奥兰多 519 | 布莱斯 520 | 佩雷斯 521 | 雷诺 522 | 马西 523 | 拉沃尔 524 | 德班 525 | 马里昂 526 | 伯利兹 527 | 瓦兹 528 | 莫莱 529 | 拉普莱斯 530 | 布雷 531 | 杜米 532 | 贝鲁 533 | 卡维尔 534 | 阿德勒 535 | 波拉克 536 | 科伯特 537 | 弗莱彻 538 | 杜梅 539 | 费利西安 540 | 艾略特 541 | 埃弗雷特 542 | 卡尔维 543 | 马赛尔 544 | 艾黎克斯 545 | 克莱门特 546 | 阿尔瓦 547 | 艾丝特 548 | 布兰登 549 | 格雷戈里 550 | 拉伯特 551 | 皮埃尔 552 | 克劳德 553 | 安德烈 554 | 弗朗索瓦 555 | 雅克 556 | 路易 557 | 马克西姆 558 | 拉斐尔 559 | 萨缪尔 560 | 罗曼 561 | 艾德里安 562 | 布鲁诺 563 | 巴斯蒂安 564 | 埃米尔 565 | 伊万 566 | 哈维尔 567 | 朱利安 568 | 尼古拉 569 | 莫塞 570 | 盖尔 571 | 帕斯卡尔 572 | 阿尔贝 573 | 阿兰 574 | 亨利克 575 | 朱尔 576 | 埃弗拉德 577 | 马蒂厄 578 | 阿马多 579 | 阿尔曼 580 | 奥利维尔 581 | 雷诺阿 582 | 加斯东 583 | 雅克利特 584 | 康沃尔 585 | 德文 586 | 多塞特 587 | 萨克斯 588 | 萨里 589 | 汉普 590 | 维尔特 591 | 博克 592 | 白金汉 593 | 福克 594 | 贝福德 595 | 安敦 596 | 格罗斯特 597 | 诺丁汉 598 | 德比 599 | 雷斯特 600 | 斯塔福德 601 | 兰卡 602 | 科克 603 | 约克 604 | 洛克 605 | 贝里 606 | 贝里克 607 | 阿伯丁 608 | 金卡丁 609 | 埃尔金 610 | 莱特林 611 | 戈尔韦 612 | 劳斯 613 | 密斯 614 | 卡法恩 615 | 梅奥 616 | 爱丁 617 | 洛锡安 618 | 丹巴顿 619 | 阿恩贝格 620 | 巴伐利亚 621 | 萨克森 622 | 波希米亚 623 | 布伦瑞克 624 | 科隆 625 | 达豪伊 626 | 法兰克福 627 | 汉诺威 628 | 卡塞尔 629 | 达施塔特 630 | 辛伯格 631 | 不伦瑞克 632 | 普法尔茨 633 | 施瓦本 634 | 斯图加特 635 | 圣沃尔夫 636 | 乌尔姆 637 | 弗赖堡 638 | 威斯巴登 639 | 维滕贝格 640 | 维也纳 641 | 波莫瑞亚 642 | 维滕贝登 643 | 巴登 644 | 波西米亚 645 | 赫尔岑 646 | 莱尔登 647 | 莱哈德 648 | 莱茵兰 649 | 爱森纳赫 650 | 魏尔斯 651 | 兹尔滕 652 | 罗特伯格 653 | 维森塔尔 654 | 沃尔姆斯 -------------------------------------------------------------------------------- /Chinese_Name.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net48 5 | disable 6 | disable 7 | Library 8 | 11 9 | 10 | 11 | 12 | true 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | ..\..\worldbox_Data\StreamingAssets\mods\NML\Assemblies\0Harmony.dll 22 | 23 | 24 | ..\..\worldbox_Data\StreamingAssets\mods\NML\Assembly-CSharp-Publicized.dll 25 | 26 | 27 | ..\..\worldbox_Data\Managed\DOTween.dll 28 | 29 | 30 | ..\..\worldbox_Data\Managed\Ionic.Zlib.CF.dll 31 | 32 | 33 | ..\..\worldbox_Data\StreamingAssets\mods\NeoModLoader.dll 34 | 35 | 36 | ..\..\worldbox_Data\Managed\Newtonsoft.Json.dll 37 | 38 | 39 | ..\..\worldbox_Data\Managed\Purchasing.Common.dll 40 | 41 | 42 | ..\..\worldbox_Data\Managed\UnityEngine.dll 43 | 44 | 45 | ..\..\worldbox_Data\Managed\UnityEngine.AssetBundleModule.dll 46 | 47 | 48 | ..\..\worldbox_Data\Managed\UnityEngine.AudioModule.dll 49 | 50 | 51 | ..\..\worldbox_Data\Managed\UnityEngine.ClothModule.dll 52 | 53 | 54 | ..\..\worldbox_Data\Managed\UnityEngine.CoreModule.dll 55 | 56 | 57 | ..\..\worldbox_Data\Managed\UnityEngine.GridModule.dll 58 | 59 | 60 | ..\..\worldbox_Data\Managed\UnityEngine.JSONSerializeModule.dll 61 | 62 | 63 | ..\..\worldbox_Data\Managed\UnityEngine.LocalizationModule.dll 64 | 65 | 66 | ..\..\worldbox_Data\Managed\UnityEngine.Physics2DModule.dll 67 | 68 | 69 | ..\..\worldbox_Data\Managed\UnityEngine.Purchasing.dll 70 | 71 | 72 | ..\..\worldbox_Data\Managed\UnityEngine.Purchasing.AppleCore.dll 73 | 74 | 75 | ..\..\worldbox_Data\Managed\UnityEngine.Purchasing.AppleMacosStub.dll 76 | 77 | 78 | ..\..\worldbox_Data\Managed\UnityEngine.Purchasing.AppleStub.dll 79 | 80 | 81 | ..\..\worldbox_Data\Managed\UnityEngine.Purchasing.Codeless.dll 82 | 83 | 84 | ..\..\worldbox_Data\Managed\UnityEngine.Purchasing.SecurityCore.dll 85 | 86 | 87 | ..\..\worldbox_Data\Managed\UnityEngine.Purchasing.SecurityStub.dll 88 | 89 | 90 | ..\..\worldbox_Data\Managed\UnityEngine.Purchasing.Stores.dll 91 | 92 | 93 | ..\..\worldbox_Data\Managed\UnityEngine.Purchasing.WinRTCore.dll 94 | 95 | 96 | ..\..\worldbox_Data\Managed\UnityEngine.Purchasing.WinRTStub.dll 97 | 98 | 99 | ..\..\worldbox_Data\Managed\UnityEngine.SpriteMaskModule.dll 100 | 101 | 102 | ..\..\worldbox_Data\Managed\UnityEngine.StreamingModule.dll 103 | 104 | 105 | ..\..\worldbox_Data\Managed\UnityEngine.TextCoreModule.dll 106 | 107 | 108 | ..\..\worldbox_Data\Managed\UnityEngine.TextRenderingModule.dll 109 | 110 | 111 | ..\..\worldbox_Data\Managed\UnityEngine.TilemapModule.dll 112 | 113 | 114 | ..\..\worldbox_Data\Managed\UnityEngine.UI.dll 115 | 116 | 117 | ..\..\worldbox_Data\Managed\UnityEngine.UIElementsModule.dll 118 | 119 | 120 | ..\..\worldbox_Data\Managed\UnityEngine.UIElementsNativeModule.dll 121 | 122 | 123 | ..\..\worldbox_Data\Managed\UnityEngine.UIModule.dll 124 | 125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /name_generators/default/weapons.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "weapon_name_city", 4 | "default_template": { 5 | "format": "$locale$" 6 | }, 7 | "templates": [ 8 | { 9 | "format": "$city$#之魂#" 10 | }, 11 | { 12 | "format": "$city$#守护者#" 13 | }, 14 | { 15 | "format": "$city$#之子#" 16 | }, 17 | { 18 | "format": "$locale$" 19 | } 20 | ] 21 | }, 22 | { 23 | "id": "weapon_name_kingdom", 24 | "default_template": { 25 | "format": "$locale$" 26 | }, 27 | "templates": [ 28 | { 29 | "format": "$kingdom$#之魂#" 30 | }, 31 | { 32 | "format": "$kingdom$#守护者#" 33 | }, 34 | { 35 | "format": "$kingdom$#之子#" 36 | }, 37 | { 38 | "format": "$locale$" 39 | } 40 | ] 41 | }, 42 | { 43 | "id": "weapon_name_culture", 44 | "default_template": { 45 | "format": "$locale$" 46 | }, 47 | "templates": [ 48 | { 49 | "format": "$culture$#之魂#" 50 | }, 51 | { 52 | "format": "$culture$#守护者#" 53 | }, 54 | { 55 | "format": "$culture$#之子#" 56 | }, 57 | { 58 | "format": "$locale$" 59 | } 60 | ] 61 | }, 62 | { 63 | "id": "weapon_name_enemy_kingdom", 64 | "default_template": { 65 | "format": "$locale$" 66 | }, 67 | "templates": [ 68 | { 69 | "format": "$enemy_kingdom$#之泪#" 70 | }, 71 | { 72 | "format": "$enemy_kingdom$#终结者#" 73 | }, 74 | { 75 | "format": "$locale$" 76 | } 77 | ] 78 | }, 79 | { 80 | "id": "weapon_name_enemy_king", 81 | "default_template": { 82 | "format": "$locale$" 83 | }, 84 | "templates": [ 85 | { 86 | "format": "$enemy_king$#之泪#" 87 | }, 88 | { 89 | "format": "$enemy_king$#终结者#" 90 | }, 91 | { 92 | "format": "$locale$" 93 | } 94 | ] 95 | }, 96 | { 97 | "id": "sword_name_king", 98 | "default_template": { 99 | "format": "$locale$" 100 | }, 101 | "templates": [ 102 | { 103 | "format": "<天子$type$名>" 104 | }, 105 | { 106 | "format": "$king$#之#<$type$后缀>" 107 | }, 108 | { 109 | "format": "$locale$" 110 | } 111 | ] 112 | }, 113 | { 114 | "id": "axe_name_king", 115 | "default_template": { 116 | "format": "$locale$" 117 | }, 118 | "templates": [ 119 | { 120 | "format": "<天子$type$名>" 121 | }, 122 | { 123 | "format": "$king$#之#<$type$后缀>" 124 | }, 125 | { 126 | "format": "$locale$" 127 | } 128 | ] 129 | }, 130 | { 131 | "id": "stick_name", 132 | "templates": [ 133 | { 134 | "format": "#木棍#" 135 | }, 136 | { 137 | "format": "#树枝#" 138 | } 139 | ] 140 | }, 141 | { 142 | "id": "flame_sword_name", 143 | "templates": [ 144 | { 145 | "format": "{烈焰之剑}" 146 | } 147 | ] 148 | }, 149 | { 150 | "id": "plague_doctor_staff_name", 151 | "templates": [ 152 | { 153 | "format": "{疫医杖}" 154 | } 155 | ] 156 | }, 157 | { 158 | "id": "necromancer_staff_name", 159 | "templates": [ 160 | { 161 | "format": "{死灵法杖}" 162 | } 163 | ] 164 | }, 165 | { 166 | "id": "evil_staff_name", 167 | "templates": [ 168 | { 169 | "format": "{邪恶法杖}" 170 | } 171 | ] 172 | }, 173 | { 174 | "id": "white_staff_name", 175 | "templates": [ 176 | { 177 | "format": "{白色法杖}" 178 | } 179 | ] 180 | }, 181 | { 182 | "id": "druid_staff_name", 183 | "templates": [ 184 | { 185 | "format": "{德鲁伊法杖}" 186 | } 187 | ] 188 | }, 189 | { 190 | "id": "shotgun_name", 191 | "templates": [ 192 | { 193 | "format": "{霰弹枪}{数字}{数字}{数字}" 194 | } 195 | ] 196 | }, 197 | { 198 | "id": "blaster_name", 199 | "templates": [ 200 | { 201 | "format": "{异形冲击波}{数字}{数字}{数字}" 202 | } 203 | ] 204 | }, 205 | { 206 | "id": "bow_name", 207 | "default_template": { 208 | "format": "$locale$" 209 | }, 210 | "templates": [ 211 | { 212 | "format": "<$material$的$type$前缀><$type$后缀>", 213 | "weight": 50 214 | }, 215 | { 216 | "format": "<$material$><$type$后缀>" 217 | }, 218 | { 219 | "format": "$locale$" 220 | } 221 | ] 222 | }, 223 | { 224 | "id": "sword_name", 225 | "default_template": { 226 | "format": "$locale$" 227 | }, 228 | "templates": [ 229 | { 230 | "format": "<$material$的$type$前缀><$type$后缀>", 231 | "weight": 50 232 | }, 233 | { 234 | "format": "<$type$名>" 235 | }, 236 | { 237 | "format": "<$material$><$type$后缀>" 238 | }, 239 | { 240 | "format": "$locale$" 241 | } 242 | ] 243 | }, 244 | { 245 | "id": "hammer_name", 246 | "default_template": { 247 | "format": "$locale$" 248 | }, 249 | "templates": [ 250 | { 251 | "format": "<$material$的$type$前缀><$type$后缀>", 252 | "weight": 50 253 | }, 254 | { 255 | "format": "<$material$><$type$后缀>" 256 | }, 257 | { 258 | "format": "$locale$" 259 | } 260 | ] 261 | }, 262 | { 263 | "id": "axe_name", 264 | "default_template": { 265 | "format": "$locale$" 266 | }, 267 | "templates": [ 268 | { 269 | "format": "<$material$的$type$前缀><$type$后缀>", 270 | "weight": 50 271 | }, 272 | { 273 | "format": "<$material$><$type$后缀>" 274 | }, 275 | { 276 | "format": "$locale$" 277 | } 278 | ] 279 | }, 280 | { 281 | "id": "spear_name", 282 | "default_template": { 283 | "format": "$locale$" 284 | }, 285 | "templates": [ 286 | { 287 | "format": "<$material$的$type$前缀><$type$后缀>", 288 | "weight": 50 289 | }, 290 | { 291 | "format": "<$type$名>" 292 | }, 293 | { 294 | "format": "<$material$><$type$后缀>" 295 | }, 296 | { 297 | "format": "$locale$" 298 | } 299 | ] 300 | } 301 | ] -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Ww][Ii][Nn]32/ 27 | [Aa][Rr][Mm]/ 28 | [Aa][Rr][Mm]64/ 29 | bld/ 30 | [Bb]in/ 31 | [Oo]bj/ 32 | [Oo]ut/ 33 | [Ll]og/ 34 | [Ll]ogs/ 35 | 36 | # Visual Studio 2015/2017 cache/options directory 37 | .vs/ 38 | # Uncomment if you have tasks that create the project's static files in wwwroot 39 | #wwwroot/ 40 | 41 | # Visual Studio 2017 auto generated files 42 | Generated\ Files/ 43 | 44 | # MSTest test Results 45 | [Tt]est[Rr]esult*/ 46 | [Bb]uild[Ll]og.* 47 | 48 | # NUnit 49 | *.VisualState.xml 50 | TestResult.xml 51 | nunit-*.xml 52 | 53 | # Build Results of an ATL Project 54 | [Dd]ebugPS/ 55 | [Rr]eleasePS/ 56 | dlldata.c 57 | 58 | # Benchmark Results 59 | BenchmarkDotNet.Artifacts/ 60 | 61 | # .NET Core 62 | project.lock.json 63 | project.fragment.lock.json 64 | artifacts/ 65 | 66 | # ASP.NET Scaffolding 67 | ScaffoldingReadMe.txt 68 | 69 | # StyleCop 70 | StyleCopReport.xml 71 | 72 | # Files built by Visual Studio 73 | *_i.c 74 | *_p.c 75 | *_h.h 76 | *.ilk 77 | *.meta 78 | *.obj 79 | *.iobj 80 | *.pch 81 | *.pdb 82 | *.ipdb 83 | *.pgc 84 | *.pgd 85 | *.rsp 86 | *.sbr 87 | *.tlb 88 | *.tli 89 | *.tlh 90 | *.tmp 91 | *.tmp_proj 92 | *_wpftmp.csproj 93 | *.log 94 | *.vspscc 95 | *.vssscc 96 | .builds 97 | *.pidb 98 | *.svclog 99 | *.scc 100 | 101 | # Chutzpah Test files 102 | _Chutzpah* 103 | 104 | # Visual C++ cache files 105 | ipch/ 106 | *.aps 107 | *.ncb 108 | *.opendb 109 | *.opensdf 110 | *.sdf 111 | *.cachefile 112 | *.VC.db 113 | *.VC.VC.opendb 114 | 115 | # Visual Studio profiler 116 | *.psess 117 | *.vsp 118 | *.vspx 119 | *.sap 120 | 121 | # Visual Studio Trace Files 122 | *.e2e 123 | 124 | # TFS 2012 Local Workspace 125 | $tf/ 126 | 127 | # Guidance Automation Toolkit 128 | *.gpState 129 | 130 | # ReSharper is a .NET coding add-in 131 | _ReSharper*/ 132 | *.[Rr]e[Ss]harper 133 | *.DotSettings.user 134 | 135 | # TeamCity is a build add-in 136 | _TeamCity* 137 | 138 | # DotCover is a Code Coverage Tool 139 | *.dotCover 140 | 141 | # AxoCover is a Code Coverage Tool 142 | .axoCover/* 143 | !.axoCover/settings.json 144 | 145 | # Coverlet is a free, cross platform Code Coverage Tool 146 | coverage*.json 147 | coverage*.xml 148 | coverage*.info 149 | 150 | # Visual Studio code coverage results 151 | *.coverage 152 | *.coveragexml 153 | 154 | # NCrunch 155 | _NCrunch_* 156 | .*crunch*.local.xml 157 | nCrunchTemp_* 158 | 159 | # MightyMoose 160 | *.mm.* 161 | AutoTest.Net/ 162 | 163 | # Web workbench (sass) 164 | .sass-cache/ 165 | 166 | # Installshield output folder 167 | [Ee]xpress/ 168 | 169 | # DocProject is a documentation generator add-in 170 | DocProject/buildhelp/ 171 | DocProject/Help/*.HxT 172 | DocProject/Help/*.HxC 173 | DocProject/Help/*.hhc 174 | DocProject/Help/*.hhk 175 | DocProject/Help/*.hhp 176 | DocProject/Help/Html2 177 | DocProject/Help/html 178 | 179 | # Click-Once directory 180 | publish/ 181 | 182 | # Publish Web Output 183 | *.[Pp]ublish.xml 184 | *.azurePubxml 185 | # Note: Comment the next line if you want to checkin your web deploy settings, 186 | # but database connection strings (with potential passwords) will be unencrypted 187 | *.pubxml 188 | *.publishproj 189 | 190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 191 | # checkin your Azure Web App publish settings, but sensitive information contained 192 | # in these scripts will be unencrypted 193 | PublishScripts/ 194 | 195 | # NuGet Packages 196 | *.nupkg 197 | # NuGet Symbol Packages 198 | *.snupkg 199 | # The packages folder can be ignored because of Package Restore 200 | **/[Pp]ackages/* 201 | # except build/, which is used as an MSBuild target. 202 | !**/[Pp]ackages/build/ 203 | # Uncomment if necessary however generally it will be regenerated when needed 204 | #!**/[Pp]ackages/repositories.config 205 | # NuGet v3's project.json files produces more ignorable files 206 | *.nuget.props 207 | *.nuget.targets 208 | 209 | # Microsoft Azure Build Output 210 | csx/ 211 | *.build.csdef 212 | 213 | # Microsoft Azure Emulator 214 | ecf/ 215 | rcf/ 216 | 217 | # Windows Store app package directories and files 218 | AppPackages/ 219 | BundleArtifacts/ 220 | Package.StoreAssociation.xml 221 | _pkginfo.txt 222 | *.appx 223 | *.appxbundle 224 | *.appxupload 225 | 226 | # Visual Studio cache files 227 | # files ending in .cache can be ignored 228 | *.[Cc]ache 229 | # but keep track of directories ending in .cache 230 | !?*.[Cc]ache/ 231 | 232 | # Others 233 | ClientBin/ 234 | ~$* 235 | *~ 236 | *.dbmdl 237 | *.dbproj.schemaview 238 | *.jfm 239 | *.pfx 240 | *.publishsettings 241 | orleans.codegen.cs 242 | 243 | # Including strong name files can present a security risk 244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 245 | #*.snk 246 | 247 | # Since there are multiple workflows, uncomment next line to ignore bower_components 248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 249 | #bower_components/ 250 | 251 | # RIA/Silverlight projects 252 | Generated_Code/ 253 | 254 | # Backup & report files from converting an old project file 255 | # to a newer Visual Studio version. Backup files are not needed, 256 | # because we have git ;-) 257 | _UpgradeReport_Files/ 258 | Backup*/ 259 | UpgradeLog*.XML 260 | UpgradeLog*.htm 261 | ServiceFabricBackup/ 262 | *.rptproj.bak 263 | 264 | # SQL Server files 265 | *.mdf 266 | *.ldf 267 | *.ndf 268 | 269 | # Business Intelligence projects 270 | *.rdl.data 271 | *.bim.layout 272 | *.bim_*.settings 273 | *.rptproj.rsuser 274 | *- [Bb]ackup.rdl 275 | *- [Bb]ackup ([0-9]).rdl 276 | *- [Bb]ackup ([0-9][0-9]).rdl 277 | 278 | # Microsoft Fakes 279 | FakesAssemblies/ 280 | 281 | # GhostDoc plugin setting file 282 | *.GhostDoc.xml 283 | 284 | # Node.js Tools for Visual Studio 285 | .ntvs_analysis.dat 286 | node_modules/ 287 | 288 | # Visual Studio 6 build log 289 | *.plg 290 | 291 | # Visual Studio 6 workspace options file 292 | *.opt 293 | 294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 295 | *.vbw 296 | 297 | # Visual Studio LightSwitch build output 298 | **/*.HTMLClient/GeneratedArtifacts 299 | **/*.DesktopClient/GeneratedArtifacts 300 | **/*.DesktopClient/ModelManifest.xml 301 | **/*.Server/GeneratedArtifacts 302 | **/*.Server/ModelManifest.xml 303 | _Pvt_Extensions 304 | 305 | # Paket dependency manager 306 | .paket/paket.exe 307 | paket-files/ 308 | 309 | # FAKE - F# Make 310 | .fake/ 311 | 312 | # CodeRush personal settings 313 | .cr/personal 314 | 315 | # Python Tools for Visual Studio (PTVS) 316 | __pycache__/ 317 | *.pyc 318 | 319 | # Cake - Uncomment if you are using it 320 | # tools/** 321 | # !tools/packages.config 322 | 323 | # Tabs Studio 324 | *.tss 325 | 326 | # Telerik's JustMock configuration file 327 | *.jmconfig 328 | 329 | # BizTalk build output 330 | *.btp.cs 331 | *.btm.cs 332 | *.odx.cs 333 | *.xsd.cs 334 | 335 | # OpenCover UI analysis results 336 | OpenCover/ 337 | 338 | # Azure Stream Analytics local run output 339 | ASALocalRun/ 340 | 341 | # MSBuild Binary and Structured Log 342 | *.binlog 343 | 344 | # NVidia Nsight GPU debugger configuration file 345 | *.nvuser 346 | 347 | # MFractors (Xamarin productivity tool) working folder 348 | .mfractor/ 349 | 350 | # Local History for Visual Studio 351 | .localhistory/ 352 | 353 | # BeatPulse healthcheck temp database 354 | healthchecksdb 355 | 356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 357 | MigrationBackup/ 358 | 359 | # Ionide (cross platform F# VS Code tools) working folder 360 | .ionide/ 361 | 362 | # Fody - auto-generated XML schema 363 | FodyWeavers.xsd 364 | /中文名-v*.zip 365 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 中文名 2 | 3 | 提供了简单的方法来扩展原版的命名方式, 使得命名更加灵活. 4 | 5 | 不要再直接修改该mod的代码来添加命名/词库了, 使用扩展方式. 6 | 7 | ## 1. 概览 8 | 9 | 这个版本的中文名提供了非常灵活的命名方式. 主要由四个部分组成: 命名器, 词库, 参数获取器, 模板选择器(未实现, 10 | 不远的未来会实现). 11 | 12 | ### 1.1 模组如何工作 13 | 14 | 1. 接收命名器, 添加/替换原版同id的命名器为一个固定的命名器 `A`(用于识别该命名器是否被替换) 15 | 2. 等待命名事件, 当目标名字为 `A`的结果时, 继续, 否则跳过 16 | 3. 以请求的 `name_template_id`来查找该模组中的命名器 `B`, 如果找到, 则使用该命名器 `B`, 否则跳过 17 | 4. 根据 `B`的参数获取器获取参数 `P`, 并使用 `B`的模板选择器选择模板 `T`(目前仅有按权重随机获取) 18 | 5. 使用 `T`和 `P`来生成名字, 如果生成失败(比如模板中某个部分生成空字符串), 则重新随机选择模板 `T`并重试, 直到成功或到达最大重试次数 19 | 6. 如果到达最大重试次数, 则使用 `B`的默认模板 $T_d $来生成名字 20 | 21 | ## 2. 词库 22 | 23 | 每一个词库都是一个纯文本文件, 一行表示一个词, 不提供注释等功能. 24 | 25 | 词库文件的无后缀名部分即为词库的id, 词库id不可重复(区分大小写, 要保证与其他模组也不重复, 如果重复, 26 | 则后提交的词库会覆盖之前提交的词库). 27 | 28 | ## 2.1 提交词库文件 29 | 30 | ### 2.1.1 一般提交方法 31 | 32 | 在初始化的地方添加 33 | 34 | ```csharp 35 | WordLibraryManager.SubmitDirectoryToLoad("path/to/your/word/library/directory"); 36 | ``` 37 | 38 | 即可. 39 | 40 | 如果你的词库文件夹的路径相对于自己模组的根目录为"additional_resources/word_libraries", 41 | 并且你的模组主类实现了`IMod`接口或继承了`BasicMod`, 则可以使用 42 | 43 | ```csharp 44 | WordLibraryManager.SubmitDirectoryToLoad(Path.Combine(ModClass.Instance.GetDeclaration().FolderPath, "additional_resources/word_libraries")); 45 | ``` 46 | 47 | 其中`ModClass`替换成你的模组主类的类名. 48 | 49 | 注意!!! 添加`using Chinese_Name;`. 50 | 51 | 注意!!! 如果你的模组直接依赖于中文名, 则可以直接使用上面代码; 否则, 需要使用块 52 | 53 | ```csharp 54 | #if 一米_中文名 55 | //代码... 56 | #endif 57 | ``` 58 | 59 | 来包裹`using Chinese_Name;`和上述代码. 60 | 61 | ### 2.1.2 单个提交(覆盖) 62 | 63 | 当你使用这个功能时, 你应该知道你在做什么. 64 | 65 | 你可以使用函数`WordLibraryManager.Submit(string pId, List pWords)`. 66 | 67 | 注意点见[2.1.1](#211-一般提交方法) 68 | 69 | ### 2.1.3 单个提交(追加) 70 | 71 | 当你使用这个功能时, 你应该知道你在做什么. 72 | 73 | 你可以使用函数`WordLibraryManager.SubmitForPatch(string pId, List pWords)`. 74 | 75 | 这个函数在提交时会检查是否已经存在该id的词库, 如果存在, 则会将新的词库追加到原词库的末尾. 76 | 77 | 注意点见[2.1.1](#211-一般提交方法) 78 | 79 | ### 2.1.4 已有的词库 80 | 81 | | 词库id | 说明 | 82 | |:------:|:------:| 83 | | 千字文 | - | 84 | | 百家姓 | - | 85 | | 常用格言 | - | 86 | | 真实国名 | 中国古代国名 | 87 | | 真实城名 | 中国古代城名 | 88 | | 西方名字 | - | 89 | | 西方姓氏 | - | 90 | | 西方国名后缀 | - | 91 | | 西方名字中缀 | - | 92 | 93 | ## 3. 命名器 94 | 95 | 每个用来描述命名器的文件都是一个JSON文件, 单个文件可以描述多个命名器, 文件名仅用作标识. 96 | 97 | ### 3.1 文件格式 98 | 99 | 每个文件会被解析成一个`List`实例, 具体的 100 | 101 | ```csharp 102 | public class CN_NameGeneratorAsset{ 103 | public string id; 104 | public List templates; 105 | public string parameter_getter = "default"; // 局部参数获取器的id 106 | public CN_NameTemplate default_template = CN_NameTemplate.Create("#NO_NAME#", 1); // 默认的命名模板 107 | } 108 | 109 | public class CN_NameTemplate{ 110 | public string format; // 模板的格式 111 | public float weight = 1; // 权重 112 | } 113 | ``` 114 | 115 | 其中无默认值的字段为必填字段. 116 | 117 | `CN_NameGeneratorAsset`的id不可重复, 且应当为你要使用的`name_template_id`. 比如你要为冥族(修仙模组中的一个种族)的城市提供命名器, 118 | 那么`CN_NameGeneratorAsset`的id则应当是冥族的`Race::name_template_city`的值. 119 | 120 | ### 3.2 命名模板 121 | 122 | 在命名模板中有几种关键字符, 用于解析模板: 123 | 124 | 1. "{"和"}", 它们用于构造一般词库原子 125 | 2. "<"和">", 它们用于构造必填词库原子 126 | 3. "$", 用于构造引用(参数或者标签)原子 127 | 4. "#", 用于构造纯文本原子 128 | 5. ":", 仅用于在词库原子中划分"标签"和"格式" 129 | 130 | 未来会添加转义字符来解决这几种字符占用的问题 131 | 132 | 所有原子都存在一个值, 这个值永远是字符串类型的, 用于拼接得到结果. 133 | 134 | 原子的"内容"即由它们的关键字符所包裹的字符串. 135 | 136 | 下面介绍各个原子的求值方式 137 | 138 | #### 3.2.1 纯文本原子 139 | 140 | 纯文本原子的值即为其内容 141 | 142 | #### 3.2.2 引用原子 143 | 144 | 引用原子的求值有两种情况: 145 | 146 | 1. 取参, 以其内容为id尝试从[全局参数]和[传入参数]中获取值 147 | 2. 引用标签, 该原子的取值会晚于其引用标签的原子, 值为其引用标签的原子的值 148 | 149 | 当该原子的值为空时, 将会直接判定其所在模板生成失败 150 | 151 | 注意, 避免循环引用 152 | 153 | #### 3.2.3 一般词库原子 154 | 155 | 其内容被":"左右分割为"格式"和"标签"两个部分. 格式用来确定将会使用哪一个词库, 标签用于存储该原子的值(可以用于引用原子, 156 | 同时也可以用于自定义命名获取各个部分的值). 157 | 158 | 当该原子的值为空时, 将会直接判定其所在模板生成失败 159 | 160 | ##### 3.2.3.1 标签 161 | 162 | 标签应当是纯文本, 不应包含前面任一关键字符 163 | 164 | ##### 3.2.3.2 格式 165 | 166 | 格式与标签类似, 但格式中可以嵌套一层的引用原子(可以多个, 但只能嵌套一层). 167 | 168 | 下面是一个示例 169 | 170 | "{通用月份词库之$month$:example_tag}" 171 | 172 | 这个会在游戏一月时访问词库"通用月份词库之january" 173 | 174 | #### 3.2.4 必填词库原子 175 | 176 | 与一般词库原子基本一致 177 | 178 | 当该原子的值为空或其格式所需的参数/标签不存在(允许存在但为空的情况)时, 将会直接判定其所在模板生成失败. 179 | 180 | ### 3.3 提交命名器 181 | 182 | ### 2.1.1 一般提交方法 183 | 184 | 在初始化的地方添加 185 | 186 | ```csharp 187 | CN_NameGeneratorLibrary.SubmitDirectoryToLoad("path/to/your/name/generators/directory"); 188 | ``` 189 | 190 | 即可. 191 | 192 | 如果你的词库文件夹的路径相对于自己模组的根目录为"additional_resources/name_generators", 193 | 并且你的模组主类实现了`IMod`接口或继承了`BasicMod`, 则可以使用 194 | 195 | ```csharp 196 | WordLibraryManager.SubmitDirectoryToLoad(Path.Combine(ModClass.Instance.GetDeclaration().FolderPath, "additional_resources/name_generators")); 197 | ``` 198 | 199 | 其中`ModClass`替换成你的模组主类的类名. 200 | 201 | ### 2.1.2 单个提交(覆盖) 202 | 203 | 当你使用这个功能时, 你应该知道你在做什么. 204 | 205 | 你需要手动创建一个`CN_NameGeneratorAsset`实例, 206 | 207 | 设置其`parameter_getter`为你要使用的局部参数获取器的id, 208 | 209 | 设置其`default_template`为你要使用的默认模板, 210 | 211 | 设置其`templates`为你要使用的模板列表, 212 | 213 | 设置其`id`为你要使用的`name_template_id`. 214 | 215 | 你可以用`CN_NameTemplate.Create(string pFormat, float pWeight)`来创建模板. 216 | 217 | 然后你可以使用函数`CN_NameGeneratorLibrary.Submit(CN_NameGeneratorAsset pAsset)`来提交. 218 | 219 | 注意点见[2.1.1](#211-一般提交方法) 220 | 221 | ## 4. 参数获取器 222 | 223 | 在3.2.3.2中出现了"$month$"参数, 这是中文名提供的全局参数. 224 | 225 | 参数获取器总体分为两类: 全局参数获取器, 局部参数获取器. 226 | 227 | 如果要表示参数确实, 需要保证参数的key不存在于参数表中, 而不是将其值设为空字符串. 228 | 229 | ### 4.1 全局参数获取器 230 | 231 | 全局参数获取器生成的参数可以在所有的命名器中使用, 即使它指定使用了其他的局部参数获取器. 232 | 233 | 全局参数由一个`MonoBehaviour`实例的`Update`进行实时维护, 并储存在一个字典中. 234 | 235 | 具体的, 你需要提供一个类型为`Action>`委托, 其参数即为存储全局参数的字典. 236 | 237 | #### 4.1.1 示例 238 | 239 | ```csharp 240 | private static void example_global_parameter_getter(Dictionary pParameters) 241 | { 242 | pParameters["world_type"] = GetWorldType(); 243 | } 244 | ``` 245 | 246 | 其中`GetWorldType`返回了这个世界的类型, 这只是一个示例, 原版游戏并没有世界类型相关的定义. 247 | 248 | #### 4.1.2 提交 249 | 250 | 在初始化的地方添加 251 | 252 | ```csharp 253 | ParameterGetters.PutGlobalParameterGetter(example_global_parameter_getter); 254 | ``` 255 | 256 | 即可. 257 | 258 | 注意点见[2.1.1](#211-一般提交方法) 259 | 260 | #### 4.1.3 已有的全局参数 261 | 262 | | 参数名 | 说明 | 可能值 | 263 | |:------:|:----:|:-----------------------------------------:| 264 | | year | 年份 | 1~N | 265 | | month | 月份 | january~december
月份asset的english_name | 266 | | era | 纪年 | 纪年asset的id | 267 | | 天干地支纪年 | 天干地支 | 甲子~癸亥 | 268 | 269 | ### 4.2 局部参数获取器 270 | 271 | 局部参数获取器仅在命名器指定其参数获取器时被使用. 与全局参数类型获取器类似, 参数填写于传入的字典参数. 272 | 273 | 不同的是, 局部参数获取器具有各自的id, 并且有不同的类型, 相同类型的id不可重复, 不同类型的id可以重复. 274 | 275 | #### 4.2.1 生物 276 | 277 | ##### 4.2.1.1 参数获取器委托类型 278 | 279 | `Action>` 280 | 281 | ##### 4.2.1.2 参数获取器委托参数说明 282 | 283 | | 参数名 | 参数类型 | 说明 | 备注 | 284 | |-------------|----------------------------|-----------|---------| 285 | | pActor | Actor | 需要命名的生物 | | 286 | | pParameters | Dictionary | 用于存储参数的字典 | 参数名不可重复 | 287 | 288 | ##### 4.2.1.3 示例 289 | 290 | ```csharp 291 | private static void example_actor_parameter_getter(Actor pActor, Dictionary pParameters){ 292 | if (pActor.kingdom != null && pActor.kingdom.isCiv()) 293 | { 294 | pParameters["kingdom"] = pActor.kingdom.data.name; 295 | } 296 | } 297 | ``` 298 | 299 | 当生物的国家不为空且为文明时, 将会将其国家的名字存储在参数"kingdom"中. 300 | 301 | ##### 4.2.1.4 提交 302 | 303 | 与[4.1.2](#412-提交)基本一致, 304 | 但是使用的是`ParameterGetters.PutActorParameterGetter(string, Action>)`, 305 | 其中第一个参数为局部参数获取器的id. 306 | 307 | 注意点见[2.1.1](#211-一般提交方法) 308 | 309 | ##### 4.2.1.5 默认参数获取器 310 | 311 | 默认参数获取器的id为"default", 用于当命名器未指定参数获取器时使用. 312 | 313 | | 参数名 | 说明 | 可能值 | 314 | |:-----------:|:---------------------:|:---:| 315 | | family_name | 姓氏, 会自动从生物的data中读出/写入 | - | 316 | 317 | #### 4.2.2 城市 318 | 319 | #### 4.2.3 国家 320 | 321 | #### 4.2.4 文化 322 | 323 | #### 4.2.5 氏族 324 | 325 | #### 4.2.6 联盟 326 | 327 | #### 4.2.7 战争 328 | 329 | #### 4.2.8 装备 330 | 331 | #### 4.2.9 自定义 -------------------------------------------------------------------------------- /word_libraries/default/千字文.txt: -------------------------------------------------------------------------------- 1 | 天 2 | 地 3 | 玄 4 | 黄 5 | 宇 6 | 洪 7 | 荒 8 | 日 9 | 月 10 | 甁 11 | 盈 12 | 辰 13 | 宿 14 | 苍 15 | 江 16 | 沧 17 | 澜 18 | 列 19 | 彰 20 | 寒 21 | 来 22 | 暑 23 | 往 24 | 秋 25 | 收 26 | 冬 27 | 栋 28 | 藏 29 | 闰 30 | 成 31 | 岁 32 | 律 33 | 戊 34 | 调 35 | 阳 36 | 洋 37 | 恙 38 | 云 39 | 腾 40 | 致 41 | 雨 42 | 露 43 | 结 44 | 为 45 | 未 46 | 霜 47 | 生 48 | 昇 49 | 卜 50 | 卡 51 | 丽 52 | 哀 53 | 叹 54 | 水 55 | 玉 56 | 出 57 | 昆 58 | 冈 59 | 剑 60 | 渔 61 | 岚 62 | 巨 63 | 浪 64 | 阙 65 | 珠 66 | 雪 67 | 称 68 | 夜 69 | 光 70 | 果 71 | 珍 72 | 璃 73 | 鲤 74 | 财 75 | 重 76 | 骜 77 | 熬 78 | 傲 79 | 战 80 | 翱 81 | 雯 82 | 际 83 | 海 84 | 咸 85 | 悉 86 | 河 87 | 淡 88 | 霖 89 | 科 90 | 瓷 91 | 潜 92 | 羽 93 | 翔 94 | 砻 95 | 识 96 | 火 97 | 豪 98 | 贯 99 | 韧 100 | 放 101 | 涵 102 | 撼 103 | 瀚 104 | 客 105 | 翰 106 | 晗 107 | 汉 108 | 函 109 | 煌 110 | 晃 111 | 始 112 | 制 113 | 文 114 | 字 115 | 乃 116 | 服 117 | 衣 118 | 淳 119 | 纯 120 | 裳 121 | 顾 122 | 位 123 | 让 124 | 悠 125 | 佑 126 | 国 127 | 有 128 | 遇 129 | 钰 130 | 雕 131 | 民 132 | 伐 133 | 诏 134 | 舟 135 | 发 136 | 殷 137 | 棠 138 | 汤 139 | 坐 140 | 梨 141 | 祖 142 | 煊 143 | 炫 144 | 绚 145 | 朝 146 | 问 147 | 道 148 | 垂 149 | 平 150 | 诀 151 | 鼎 152 | 育 153 | 韵 154 | 耘 155 | 趣 156 | 黎 157 | 首 158 | 臣 159 | 伏 160 | 戎 161 | 舆 162 | 羌 163 | 遐 164 | 一 165 | 体 166 | 率 167 | 宾 168 | 归 169 | 鸣 170 | 凤 171 | 在 172 | 竹 173 | 白 174 | 驹 175 | 进 176 | 郃 177 | 珥 178 | 化 179 | 木 180 | 莱 181 | 及 182 | 扬 183 | 瑜 184 | 万 185 | 顽 186 | 旺 187 | 宛 188 | 怡 189 | 方 190 | 芥 191 | 此 192 | 四 193 | 大 194 | 伍 195 | 棋 196 | 常 197 | 沏 198 | 恭 199 | 惟 200 | 养 201 | 岂 202 | 敢 203 | 慕 204 | 贞 205 | 钊 206 | 洁 207 | 楠 208 | 醉 209 | 效 210 | 才 211 | 晾 212 | 良 213 | 知 214 | 荧 215 | 应 216 | 影 217 | 瑛 218 | 萤 219 | 颖 220 | 过 221 | 必 222 | 改 223 | 得 224 | 能 225 | 莫 226 | 忘 227 | 罔 228 | 亚 229 | 谈 230 | 彼 231 | 叙 232 | 短 233 | 靡 234 | 恃 235 | 备 236 | 贝 237 | 己 238 | 长 239 | 信 240 | 使 241 | 可 242 | 涧 243 | 器 244 | 欲 245 | 凛 246 | 难 247 | 量 248 | 陌 249 | 悲 250 | 宓 251 | 丝 252 | 染 253 | 诗 254 | 赞 255 | 恒 256 | 痕 257 | 羔 258 | 漾 259 | 彦 260 | 景 261 | 行 262 | 维 263 | 漪 264 | 涟 265 | 贤 266 | 克 267 | 凝 268 | 念 269 | 作 270 | 圣 271 | 演 272 | 沿 273 | 衍 274 | 谚 275 | 雲 276 | 德 277 | 旅 278 | 建 279 | 名 280 | 茗 281 | 闵 282 | 觅 283 | 弥 284 | 幂 285 | 柔 286 | 立 287 | 咪 288 | 形 289 | 端 290 | 表 291 | 正 292 | 顺 293 | 空 294 | 谷 295 | 传 296 | 曌 297 | 虚 298 | 堂 299 | 栖 300 | 听 301 | 祸 302 | 因 303 | 晤 304 | 积 305 | 悸 306 | 福 307 | 缘 308 | 善 309 | 庆 310 | 沽 311 | 固 312 | 尺 313 | 鸪 314 | 柏 315 | 璧 316 | 非 317 | 宝 318 | 寸 319 | 阴 320 | 竞 321 | 磐 322 | 资 323 | 格 324 | 戬 325 | 拂 326 | 事 327 | 君 328 | 曰 329 | 与 330 | 奇 331 | 敬 332 | 孝 333 | 当 334 | 竭 335 | 源 336 | 原 337 | 鸢 338 | 忠 339 | 则 340 | 尽 341 | 命 342 | 临 343 | 深 344 | 滤 345 | 薄 346 | 夙 347 | 兴 348 | 温 349 | 鹧 350 | 清 351 | 衷 352 | 众 353 | 晰 354 | 似 355 | 兰 356 | 斯 357 | 浅 358 | 乾 359 | 骞 360 | 逊 361 | 巡 362 | 勋 363 | 讯 364 | 巽 365 | 旭 366 | 胥 367 | 须 368 | 戌 369 | 序 370 | 太 371 | 馨 372 | 如 373 | 松 374 | 之 375 | 盛 376 | 胜 377 | 川 378 | 晴 379 | 流 380 | 不 381 | 息 382 | 允 383 | 吁 384 | 渊 385 | 韫 386 | 澄 387 | 取 388 | 映 389 | 容 390 | 榕 391 | 融 392 | 茸 393 | 嵘 394 | 止 395 | 若 396 | 思 397 | 言 398 | 辞 399 | 赐 400 | 安 401 | 定 402 | 韦 403 | 零 404 | 笃 405 | 初 406 | 诚 407 | 慎 408 | 终 409 | 宜 410 | 令 411 | 荣 412 | 业 413 | 基 414 | 籍 415 | 甚 416 | 兼 417 | 无 418 | 竟 419 | 学 420 | 优 421 | 登 422 | 仕 423 | 摄 424 | 职 425 | 从 426 | 政 427 | 争 428 | 峥 429 | 蒸 430 | 征 431 | 存 432 | 以 433 | 去 434 | 而 435 | 益 436 | 咏 437 | 乐 438 | 殊 439 | 贵 440 | 健 441 | 休 442 | 秀 443 | 礼 444 | 别 445 | 尊 446 | 卑 447 | 上 448 | 和 449 | 下 450 | 睦 451 | 蜀 452 | 迈 453 | 唱 454 | 庚 455 | 随 456 | 燧 457 | 誓 458 | 外 459 | 寿 460 | 枯 461 | 桃 462 | 颂 463 | 训 464 | 崖 465 | 涯 466 | 奉 467 | 丰 468 | 锋 469 | 烽 470 | 奋 471 | 逢 472 | 尧 473 | 仪 474 | 壹 475 | 诸 476 | 翼 477 | 嵩 478 | 淞 479 | 绛 480 | 强 481 | 穆 482 | 癸 483 | 霂 484 | 帛 485 | 渤 486 | 博 487 | 波 488 | 枢 489 | 曙 490 | 述 491 | 犹 492 | 梓 493 | 沭 494 | 怀 495 | 淮 496 | 忆 497 | 翊 498 | 雄 499 | 怿 500 | 佚 501 | 谪 502 | 同 503 | 气 504 | 酷 505 | 诺 506 | 连 507 | 恋 508 | 枝 509 | 交 510 | 友 511 | 宥 512 | 柚 513 | 釉 514 | 幽 515 | 分 516 | 切 517 | 喆 518 | 箴 519 | 规 520 | 仁 521 | 龄 522 | 舜 523 | 隐 524 | 恻 525 | 造 526 | 凿 527 | 早 528 | 次 529 | 泽 530 | 弗 531 | 螭 532 | 离 533 | 节 534 | 义 535 | 廉 536 | 润 537 | 徽 538 | 山 539 | 退 540 | 芸 541 | 萃 542 | 滇 543 | 淀 544 | 沛 545 | 斐 546 | 暃 547 | 性 548 | 静 549 | 情 550 | 逸 551 | 心 552 | 动 553 | 疲 554 | 守 555 | 真 556 | 稹 557 | 臻 558 | 靛 559 | 笛 560 | 志 561 | 迪 562 | 满 563 | 逐 564 | 物 565 | 意 566 | 移 567 | 词 568 | 坚 569 | 懿 570 | 毅 571 | 熠 572 | 译 573 | 雅 574 | 好 575 | 觉 576 | 自 577 | 都 578 | 至 579 | 芝 580 | 智 581 | 旨 582 | 栀 583 | 挚 584 | 宸 585 | 枳 586 | 斋 587 | 晨 588 | 华 589 | 划 590 | 拓 591 | 夏 592 | 东 593 | 西 594 | 二 595 | 京 596 | 背 597 | 邙 598 | 面 599 | 洛 600 | 浮 601 | 复 602 | 渭 603 | 泾 604 | 惬 605 | 盘 606 | 郁 607 | 楼 608 | 观 609 | 飞 610 | 惊 611 | 图 612 | 写 613 | 擎 614 | 烁 615 | 朔 616 | 硕 617 | 画 618 | 彩 619 | 仙 620 | 灵 621 | 丙 622 | 舍 623 | 旁 624 | 启 625 | 甲 626 | 帐 627 | 对 628 | 肆 629 | 筵 630 | 设 631 | 席 632 | 鼓 633 | 瑟 634 | 菱 635 | 吹 636 | 笙 637 | 升 638 | 阶 639 | 纳 640 | 碧 641 | 鎏 642 | 转 643 | 疑 644 | 星 645 | 右 646 | 通 647 | 广 648 | 内 649 | 达 650 | 承 651 | 丞 652 | 明 653 | 既 654 | 集 655 | 芬 656 | 典 657 | 扉 658 | 延 659 | 亦 660 | 屹 661 | 羿 662 | 聚 663 | 群 664 | 黯 665 | 英 666 | 杜 667 | 稿 668 | 震 669 | 捷 670 | 界 671 | 隶 672 | 漆 673 | 祁 674 | 书 675 | 酥 676 | 壁 677 | 经 678 | 府 679 | 将 680 | 相 681 | 路 682 | 侠 683 | 槐 684 | 卿 685 | 户 686 | 封 687 | 八 688 | 家 689 | 给 690 | 千 691 | 兵 692 | 冠 693 | 陪 694 | 辇 695 | 驱 696 | 振 697 | 缨 698 | 世 699 | 禄 700 | 富 701 | 车 702 | 驾 703 | 霏 704 | 轻 705 | 涂 706 | 突 707 | 策 708 | 功 709 | 茂 710 | 实 711 | 勒 712 | 刻 713 | 箓 714 | 庐 715 | 逯 716 | 铭 717 | 保 718 | 溪 719 | 伊 720 | 尹 721 | 佐 722 | 时 723 | 阿 724 | 衡 725 | 曲 726 | 微 727 | 旦 728 | 孰 729 | 营 730 | 桓 731 | 玺 732 | 匡 733 | 合 734 | 济 735 | 熙 736 | 隅 737 | 佰 738 | 倾 739 | 绮 740 | 辉 741 | 回 742 | 昔 743 | 惠 744 | 说 745 | 感 746 | 武 747 | 吾 748 | 俊 749 | 俏 750 | 桦 751 | 伤 752 | 杉 753 | 闪 754 | 辑 755 | 密 756 | 尚 757 | 商 758 | 昙 759 | 棉 760 | 檀 761 | 潭 762 | 绘 763 | 米 764 | 倩 765 | 穹 766 | 勿 767 | 磊 768 | 多 769 | 士 770 | 宁 771 | 迟 772 | 更 773 | 权 774 | 忌 775 | 聃 776 | 困 777 | 横 778 | 途 779 | 慧 780 | 遵 781 | 约 782 | 玥 783 | 法 784 | 杏 785 | 醒 786 | 追 787 | 起 788 | 沐 789 | 翦 790 | 颇 791 | 牧 792 | 用 793 | 军 794 | 韬 795 | 精 796 | 涛 797 | 宣 798 | 鹤 799 | 威 800 | 飒 801 | 夭 802 | 爻 803 | 漠 804 | 驰 805 | 誉 806 | 丹 807 | 青 808 | 九 809 | 州 810 | 禹 811 | 迹 812 | 遨 813 | 百 814 | 榆 815 | 钦 816 | 并 817 | 岳 818 | 宗 819 | 纵 820 | 踪 821 | 棕 822 | 脉 823 | 恰 824 | 茉 825 | 秣 826 | 沫 827 | 泰 828 | 岱 829 | 禅 830 | 亭 831 | 雁 832 | 孜 833 | 赤 834 | 池 835 | 碣 836 | 惇 837 | 野 838 | 洞 839 | 庭 840 | 旷 841 | 远 842 | 绵 843 | 邈 844 | 岩 845 | 冥 846 | 治 847 | 本 848 | 于 849 | 农 850 | 务 851 | 稼 852 | 载 853 | 南 854 | 北 855 | 亩 856 | 卫 857 | 伟 858 | 艺 859 | 黍 860 | 恕 861 | 稷 862 | 恢 863 | 贡 864 | 新 865 | 劝 866 | 赏 867 | 黜 868 | 陟 869 | 梦 870 | 奕 871 | 轲 872 | 柯 873 | 敦 874 | 素 875 | 溯 876 | 肃 877 | 柿 878 | 秉 879 | 禀 880 | 斌 881 | 直 882 | 庶 883 | 几 884 | 中 885 | 庸 886 | 劳 887 | 谦 888 | 谨 889 | 敕 890 | 聆 891 | 音 892 | 察 893 | 元 894 | 理 895 | 鉴 896 | 貌 897 | 辨 898 | 亮 899 | 昂 900 | 贻 901 | 嘉 902 | 勉 903 | 其 904 | 淼 905 | 植 906 | 舒 907 | 栩 908 | 翎 909 | 疾 910 | 诫 911 | 宠 912 | 增 913 | 瞰 914 | 侃 915 | 戡 916 | 极 917 | 逮 918 | 濡 919 | 近 920 | 弛 921 | 陵 922 | 幸 923 | 怜 924 | 峰 925 | 潋 926 | 涉 927 | 霓 928 | 疏 929 | 见 930 | 机 931 | 宏 932 | 鸿 933 | 弘 934 | 泓 935 | 虹 936 | 昊 937 | 澔 938 | 钗 939 | 弃 940 | 酌 941 | 琢 942 | 斟 943 | 灼 944 | 赫 945 | 索 946 | 居 947 | 橘 948 | 闲 949 | 献 950 | 宪 951 | 显 952 | 处 953 | 羡 954 | 沉 955 | 涎 956 | 漩 957 | 泫 958 | 轩 959 | 默 960 | 寂 961 | 寥 962 | 霆 963 | 汀 964 | 求 965 | 古 966 | 寻 967 | 论 968 | 散 969 | 虑 970 | 奎 971 | 葵 972 | 逍 973 | 遥 974 | 欣 975 | 奏 976 | 枫 977 | 遣 978 | 戚 979 | 湃 980 | 欢 981 | 幻 982 | 桓 983 | 焕 984 | 唤 985 | 缓 986 | 召 987 | 渠 988 | 荷 989 | 禾 990 | 颌 991 | 历 992 | 沃 993 | 恩 994 | 园 995 | 抽 996 | 晚 997 | 翠 998 | 梧 999 | 桐 1000 | 澎 1001 | 凋 1002 | 净 1003 | 晶 1004 | 靖 1005 | 锦 1006 | 瑾 1007 | 䎅 1008 | 落 1009 | 叶 1010 | 飘 1011 | 瑶 1012 | 游 1013 | 昱 1014 | 鹍 1015 | 独 1016 | 运 1017 | 凌 1018 | 摩 1019 | 霄 1020 | 耽 1021 | 读 1022 | 玩 1023 | 苓 1024 | 寓 1025 | 目 1026 | 凯 1027 | 勇 1028 | 涌 1029 | 湘 1030 | 祥 1031 | 享 1032 | 易 1033 | 钺 1034 | 攸 1035 | 畏 1036 | 属 1037 | 耳 1038 | 垣 1039 | 具 1040 | 参 1041 | 绅 1042 | 泛 1043 | 凡 1044 | 帆 1045 | 赋 1046 | 甫 1047 | 釜 1048 | 适 1049 | 充 1050 | 畅 1051 | 昌 1052 | 崇 1053 | 潮 1054 | 仓 1055 | 潼 1056 | 统 1057 | 烔 1058 | 怅 1059 | 摘 1060 | 继 1061 | 砚 1062 | 枣 1063 | 糠 1064 | 亲 1065 | 麟 1066 | 故 1067 | 柳 1068 | 崂 1069 | 韶 1070 | 异 1071 | 靓 1072 | 莲 1073 | 契 1074 | 御 1075 | 绩 1076 | 纺 1077 | 侍 1078 | 巾 1079 | 帷 1080 | 谋 1081 | 纨 1082 | 扇 1083 | 圆 1084 | 银 1085 | 烛 1086 | 炜 1087 | 苇 1088 | 录 1089 | 篁 1090 | 昼 1091 | 眠 1092 | 夕 1093 | 寐 1094 | 笋 1095 | 象 1096 | 鹊 1097 | 缺 1098 | 确 1099 | 弦 1100 | 歌 1101 | 酒 1102 | 宴 1103 | 杯 1104 | 彪 1105 | 举 1106 | 裕 1107 | 矫 1108 | 狩 1109 | 渺 1110 | 顿 1111 | 足 1112 | 悦 1113 | 豫 1114 | 浦 1115 | 朴 1116 | 璞 1117 | 康 1118 | 嫡 1119 | 后 1120 | 嗣 1121 | 司 1122 | 续 1123 | 凭 1124 | 普 1125 | 尘 1126 | 贲 1127 | 琛 1128 | 祭 1129 | 祀 1130 | 翌 1131 | 略 1132 | 楷 1133 | 恺 1134 | 开 1135 | 濛 1136 | 鑫 1137 | 惑 1138 | 尝 1139 | 稽 1140 | 謇 1141 | 拜 1142 | 恐 1143 | 惶 1144 | 笺 1145 | 诩 1146 | 瑞 1147 | 睿 1148 | 简 1149 | 幺 1150 | 答 1151 | 审 1152 | 详 1153 | 亥 1154 | 垢 1155 | 想 1156 | 浴 1157 | 执 1158 | 热 1159 | 愿 1160 | 凉 1161 | 榈 1162 | 缄 1163 | 珞 1164 | 犊 1165 | 骁 1166 | 特 1167 | 泉 1168 | 骇 1169 | 跃 1170 | 越 1171 | 超 1172 | 柠 1173 | 诛 1174 | 渡 1175 | 斩 1176 | 泊 1177 | 雾 1178 | 悟 1179 | 稻 1180 | 捕 1181 | 获 1182 | 盼 1183 | 枉 1184 | 望 1185 | 茫 1186 | 布 1187 | 僚 1188 | 阅 1189 | 丸 1190 | 霁 1191 | 琴 1192 | 杰 1193 | 篌 1194 | 迦 1195 | 榉 1196 | 炬 1197 | 桔 1198 | 斜 1199 | 瑕 1200 | 暇 1201 | 互 1202 | 邂 1203 | 瑀 1204 | 佩 1205 | 粒 1206 | 棣 1207 | 栗 1208 | 啸 1209 | 恬 1210 | 笔 1211 | 伦 1212 | 纸 1213 | 钧 1214 | 巧 1215 | 任 1216 | 乏 1217 | 释 1218 | 纷 1219 | 利 1220 | 俗 1221 | 皆 1222 | 佳 1223 | 妙 1224 | 卯 1225 | 淑 1226 | 籽 1227 | 工 1228 | 萍 1229 | 淹 1230 | 笑 1231 | 年 1232 | 轼 1233 | 澈 1234 | 洵 1235 | 循 1236 | 汛 1237 | 迅 1238 | 炁 1239 | 杞 1240 | 泣 1241 | 乞 1242 | 曦 1243 | 晖 1244 | 朗 1245 | 览 1246 | 蓝 1247 | 骄 1248 | 皎 1249 | 曜 1250 | 璇 1251 | 玑 1252 | 究 1253 | 悬 1254 | 斗 1255 | 晦 1256 | 琅 1257 | 琊 1258 | 魄 1259 | 环 1260 | 照 1261 | 薪 1262 | 修 1263 | 奚 1264 | 熹 1265 | 希 1266 | 汐 1267 | 兮 1268 | 晓 1269 | 潇 1270 | 筱 1271 | 永 1272 | 枭 1273 | 宵 1274 | 氿 1275 | 玖 1276 | 鹫 1277 | 翩 1278 | 吉 1279 | 煜 1280 | 劭 1281 | 矩 1282 | 斑 1283 | 引 1284 | 领 1285 | 俯 1286 | 仰 1287 | 束 1288 | 带 1289 | 矜 1290 | 庄 1291 | 壮 1292 | 颉 1293 | 介 1294 | 瞻 1295 | 眺 1296 | 梵 1297 | 孤 1298 | 炳 1299 | 桀 1300 | 秸 1301 | 乙 1302 | 森 1303 | 闻 1304 | 稳 1305 | 愚 1306 | 蒙 1307 | 麦 1308 | 语 1309 | 助 1310 | 焉 1311 | 哉 1312 | 乎 1313 | 也 1314 | 然 -------------------------------------------------------------------------------- /Code/ParameterGetters.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using Chinese_Name.constants; 5 | using NeoModLoader.api.attributes; 6 | using NeoModLoader.General; 7 | 8 | namespace Chinese_Name; 9 | 10 | public static class ParameterGetters 11 | { 12 | private static readonly Dictionary>> actor_parameter_getters = 13 | new() 14 | { 15 | { 16 | "default", default_actor_parameter_getter 17 | } 18 | }; 19 | 20 | private static readonly Dictionary>> book_parameter_getters = new() 21 | { 22 | { 23 | "default", default_book_parameter_getter 24 | } 25 | }; 26 | 27 | private static void default_book_parameter_getter(Book pBook, Dictionary pParameters) 28 | { 29 | } 30 | 31 | private static readonly Dictionary>> city_parameter_getters = new() 32 | { 33 | { 34 | "default", default_city_parameter_getter 35 | } 36 | }; 37 | 38 | private static readonly Dictionary>> kingdom_parameter_getters = 39 | new() 40 | { 41 | { 42 | "default", default_kingdom_parameter_getter 43 | } 44 | }; 45 | 46 | private static readonly Dictionary>> culture_parameter_getters = 47 | new() 48 | { 49 | { 50 | "default", default_culture_parameter_getter 51 | } 52 | }; 53 | 54 | private static readonly Dictionary>> language_parameter_getters = new() 55 | { 56 | { 57 | "default", default_language_parameter_getter 58 | } 59 | }; 60 | private static readonly Dictionary>> subspecies_parameter_getters = new() 61 | { 62 | { 63 | "default", default_subspecies_parameter_getter 64 | } 65 | }; 66 | 67 | private static readonly Dictionary>> 68 | religion_parameter_getters = new() 69 | { 70 | { 71 | "default", default_religion_parameter_getter 72 | } 73 | }; 74 | 75 | private static readonly Dictionary>> clan_parameter_getters = 76 | new() 77 | { 78 | { 79 | "default", default_clan_parameter_getter 80 | } 81 | }; 82 | 83 | private static readonly Dictionary>> 84 | alliance_parameter_getters = new() 85 | { 86 | { 87 | "default", default_alliance_parameter_getter 88 | } 89 | }; 90 | 91 | private static readonly Dictionary>> war_parameter_getters = new() 92 | { 93 | { 94 | "default", default_war_parameter_getter 95 | } 96 | }; 97 | 98 | private static readonly Dictionary>> 99 | item_parameter_getters = new() 100 | { 101 | { 102 | "default", default_item_parameter_getter 103 | } 104 | }; 105 | 106 | internal static readonly List>> global_parameter_getters = new() 107 | { 108 | default_global_parameter_getter 109 | }; 110 | 111 | private static readonly Dictionary> custom_parameter_getters = new(); 112 | 113 | [Hotfixable] 114 | private static void default_actor_parameter_getter(Actor pActor, Dictionary pParameters) 115 | { 116 | pParameters["id"] = pActor.asset.id; 117 | if (!string.IsNullOrEmpty(pActor.asset.name_locale)) 118 | pParameters["locale"] = LocalizedTextManager.stringExists(pActor.asset.name_locale) 119 | ? LM.Get(pActor.asset.name_locale) 120 | : pActor.asset.name_locale; 121 | } 122 | [Hotfixable] 123 | private static void default_subspecies_parameter_getter(Subspecies pSubspecies, Dictionary pParameters) 124 | { 125 | pParameters["id"] = pSubspecies.species_id; 126 | pParameters["locale"] = AssetManager.actor_library.get(pSubspecies.species_id).getTranslatedName(); 127 | } 128 | 129 | private static void default_religion_parameter_getter(Religion pReligion, Dictionary pParameters) 130 | { 131 | 132 | } 133 | 134 | [Hotfixable] 135 | private static void default_city_parameter_getter(City pCity, Dictionary pParameters) 136 | { 137 | } 138 | 139 | [Hotfixable] 140 | private static void default_kingdom_parameter_getter(Kingdom pKingdom, Dictionary pParameters) 141 | { 142 | pParameters["race"] = pKingdom.data.original_actor_asset; 143 | } 144 | 145 | [Hotfixable] 146 | private static void default_culture_parameter_getter(Culture pCulture, Dictionary pParameters) 147 | { 148 | pParameters["race"] = pCulture.data.original_actor_asset; 149 | } 150 | 151 | private static void default_language_parameter_getter(Language pLang, Dictionary pParameters) 152 | { 153 | 154 | } 155 | 156 | [Hotfixable] 157 | private static void default_clan_parameter_getter(Clan pClan, Actor pActor, Dictionary pParameters) 158 | { 159 | pParameters["race"] = pClan.data.original_actor_asset; 160 | pParameters["founder_home"] = string.IsNullOrEmpty(pClan.data.founder_city_name) 161 | ? pClan.data.founder_kingdom_name 162 | : pClan.data.founder_city_name; 163 | 164 | if (pActor == null) 165 | { 166 | foreach (var unit in pClan.units) 167 | { 168 | unit.data.get(DataS.family_name, out var family_name, ""); 169 | if (!string.IsNullOrEmpty(family_name)) 170 | { 171 | pParameters["founder_family_name"] = family_name; 172 | return; 173 | } 174 | } 175 | } 176 | else 177 | { 178 | pActor.data.get(DataS.family_name, out var family_name, "无名"); 179 | pParameters["founder_family_name"] = family_name; 180 | } 181 | } 182 | 183 | [Hotfixable] 184 | private static void default_alliance_parameter_getter(Alliance pAlliance, Dictionary pParameters) 185 | { 186 | var list = new List(pAlliance.kingdoms_hashset); 187 | pParameters["k1_short"] = list[0].data.name; 188 | pParameters["k2_short"] = list[1].data.name; 189 | pParameters["k1_capital"] = list[0].capital?.name; 190 | if (list[0].cities?.Count > 0) 191 | if (string.IsNullOrEmpty(pParameters["k1_capital"])) 192 | pParameters["k1_capital"] = list[0].cities[0].name; 193 | pParameters["k2_capital"] = list[1].capital?.name; 194 | if (list[1].cities?.Count > 0) 195 | if (string.IsNullOrEmpty(pParameters["k2_capital"])) 196 | pParameters["k2_capital"] = list[1].cities[0].name; 197 | } 198 | 199 | [Hotfixable] 200 | private static void default_war_parameter_getter(War pWar, Dictionary pParameters) 201 | { 202 | pParameters["attacker"] = pWar.main_attacker.data.name; 203 | pParameters["defender"] = pWar.main_defender?.data.name; 204 | pParameters["attacker_leader"] = pWar.data.started_by_actor_name; 205 | pParameters["defender_leader"] = pWar.main_defender?.capital?.leader?.getName(); 206 | pParameters["attacker_short"] = pWar.main_attacker.data.name[0].ToString(); 207 | pParameters["defender_short"] = pWar.main_defender?.data.name[0].ToString(); 208 | pParameters["defender_capital"] = pWar.main_defender?.capital?.data.name; 209 | if (pWar.main_defender?.cities?.Count > 0) 210 | { 211 | if (string.IsNullOrEmpty(pParameters["defender_capital"])) 212 | { 213 | pParameters["defender_capital"] = pWar.main_defender.cities[0].name; 214 | } 215 | 216 | if (string.IsNullOrEmpty(pParameters["defender_leader"])) 217 | { 218 | pParameters["defender_leader"] = pWar.main_defender.cities[0].leader?.getName(); 219 | } 220 | } 221 | } 222 | 223 | [Hotfixable] 224 | private static void default_item_parameter_getter(ItemData pItemData, ItemAsset pItemAsset, Actor pActor, 225 | Dictionary pParameters) 226 | { 227 | // 材质 228 | pParameters["material"] = pItemData.material; 229 | // 类型/对于weapon_name_city这些玩意来说可能会有用 230 | pParameters["type"] = pItemData.asset_id; 231 | // 本地名 232 | var locale = pItemAsset.getLocaleID(); 233 | if (LocalizedTextManager.stringExists(locale)) locale = LM.Get(locale); 234 | pParameters["locale"] = locale; 235 | // 装备类别 236 | locale = pItemAsset.name_class; 237 | if (LocalizedTextManager.stringExists(locale)) locale = LM.Get(locale); 238 | pParameters["class"] = locale; 239 | if (pActor == null) return; 240 | // 制作者的城市名 241 | pParameters["city"] = pActor.city?.name; 242 | // 制作者的文化名 243 | pParameters["culture"] = pActor.culture?.data.name; 244 | 245 | if (pActor.kingdom == null) return; 246 | // 制作者的国家名 247 | pParameters["kingdom"] = pActor.kingdom.data.name; 248 | if (pActor.kingdom.king != null) 249 | { 250 | // 制作者的君主名 251 | pParameters["king"] = pActor.kingdom.king.getName(); 252 | } 253 | 254 | if (!pActor.kingdom.hasEnemies()) return; 255 | 256 | foreach (Kingdom kingdom in pActor.kingdom.getEnemiesKingdoms().Where(kingdom => kingdom.king != null)) 257 | { 258 | // 敌国名 259 | pParameters["enemy_kingdom"] = kingdom.data.name; 260 | // 敌国君主名 261 | pParameters["enemy_king"] = kingdom.king.getName(); 262 | } 263 | } 264 | 265 | [Hotfixable] 266 | private static void default_global_parameter_getter(Dictionary pParameters) 267 | { 268 | pParameters["month"] = AssetManager.months.getMonth(Date.getCurrentMonth()).english_name; 269 | pParameters["year"] = Date.getCurrentYear().ToString(); 270 | World.world.era_manager.prepare(); 271 | pParameters["era"] = World.world.era_manager.getCurrentAge().id; 272 | pParameters["天干地支纪年"] = LM.Get($"天干地支-{Date.getCurrentYear() % 60}"); 273 | } 274 | 275 | public static Action> GetActorParameterGetter(string pName) 276 | { 277 | if (actor_parameter_getters.TryGetValue(pName, out var getter)) return getter; 278 | return actor_parameter_getters["default"]; 279 | } 280 | 281 | public static Action> GetSubspeciesParameterGetter(string pName) 282 | { 283 | if (subspecies_parameter_getters.TryGetValue(pName, out var getter)) return getter; 284 | return subspecies_parameter_getters["default"]; 285 | } 286 | 287 | public static Action> GetCityParameterGetter(string pName) 288 | { 289 | if (city_parameter_getters.TryGetValue(pName, out var getter)) return getter; 290 | return city_parameter_getters["default"]; 291 | } 292 | 293 | public static Action> GetKingdomParameterGetter(string pName) 294 | { 295 | if (kingdom_parameter_getters.TryGetValue(pName, out var getter)) return getter; 296 | return kingdom_parameter_getters["default"]; 297 | } 298 | 299 | public static Action> GetCultureParameterGetter(string pName) 300 | { 301 | if (culture_parameter_getters.TryGetValue(pName, out var getter)) return getter; 302 | return culture_parameter_getters["default"]; 303 | } 304 | 305 | public static Action> GetLanguageParameterGetter(string pName) 306 | { 307 | if (language_parameter_getters.TryGetValue(pName, out var getter)) return getter; 308 | return language_parameter_getters["default"]; 309 | } 310 | public static Action> GetReligionParameterGetter(string pName) 311 | { 312 | if (religion_parameter_getters.TryGetValue(pName, out var getter)) return getter; 313 | return religion_parameter_getters["default"]; 314 | } 315 | public static Action> GetClanParameterGetter(string pName) 316 | { 317 | if (clan_parameter_getters.TryGetValue(pName, out var getter)) return getter; 318 | return clan_parameter_getters["default"]; 319 | } 320 | 321 | public static Action> GetAllianceParameterGetter(string pName) 322 | { 323 | if (alliance_parameter_getters.TryGetValue(pName, out var getter)) return getter; 324 | return alliance_parameter_getters["default"]; 325 | } 326 | 327 | public static Action> GetBookParameterGetter(string pName) 328 | { 329 | if (book_parameter_getters.TryGetValue(pName, out var getter)) return getter; 330 | return book_parameter_getters["default"]; 331 | } 332 | 333 | public static Action> GetWarParameterGetter(string pName) 334 | { 335 | if (war_parameter_getters.TryGetValue(pName, out var getter)) return getter; 336 | return war_parameter_getters["default"]; 337 | } 338 | 339 | public static Action> GetItemParameterGetter(string pName) 340 | { 341 | if (item_parameter_getters.TryGetValue(pName, out var getter)) return getter; 342 | return item_parameter_getters["default"]; 343 | } 344 | 345 | public static T GetCustomParameterGetter(string pName) where T : Delegate 346 | { 347 | if (custom_parameter_getters.TryGetValue(typeof(T), out var getters)) 348 | { 349 | if (getters.TryGetValue(pName, out var getter)) return (T)getter; 350 | return getters["default"] as T; 351 | } 352 | 353 | return null; 354 | } 355 | 356 | public static void PutActorParameterGetter(string pName, Action> pGetter) 357 | { 358 | actor_parameter_getters[pName] = pGetter; 359 | } 360 | 361 | public static void PutCityParameterGetter(string pName, Action> pGetter) 362 | { 363 | city_parameter_getters[pName] = pGetter; 364 | } 365 | 366 | public static void PutKingdomParameterGetter(string pName, Action> pGetter) 367 | { 368 | kingdom_parameter_getters[pName] = pGetter; 369 | } 370 | 371 | public static void PutCultureParameterGetter(string pName, Action> pGetter) 372 | { 373 | culture_parameter_getters[pName] = pGetter; 374 | } 375 | 376 | public static void PutClanParameterGetter(string pName, Action> pGetter) 377 | { 378 | clan_parameter_getters[pName] = pGetter; 379 | } 380 | 381 | public static void PutAllianceParameterGetter(string pName, Action> pGetter) 382 | { 383 | alliance_parameter_getters[pName] = pGetter; 384 | } 385 | 386 | public static void PutWarParameterGetter(string pName, Action> pGetter) 387 | { 388 | war_parameter_getters[pName] = pGetter; 389 | } 390 | 391 | public static void PutItemParameterGetter(string pName, 392 | Action> pGetter) 393 | { 394 | item_parameter_getters[pName] = pGetter; 395 | } 396 | 397 | public static void PutCustomParameterGetter(string pName, T pGetter) where T : Delegate 398 | { 399 | if (!custom_parameter_getters.TryGetValue(typeof(T), out var getters)) 400 | { 401 | getters = new Dictionary(); 402 | custom_parameter_getters[typeof(T)] = getters; 403 | } 404 | 405 | getters[pName] = pGetter; 406 | } 407 | 408 | public static void PutGlobalParameterGetter(Action> pGetter) 409 | { 410 | global_parameter_getters.Add(pGetter); 411 | } 412 | } -------------------------------------------------------------------------------- /Code/CN_NameTemplate.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using Chinese_Name.exceptions; 6 | using NeoModLoader.api.attributes; 7 | using Newtonsoft.Json; 8 | 9 | namespace Chinese_Name; 10 | 11 | /// 12 | /// 单个的命名模板 13 | /// 14 | [Serializable] 15 | public class CN_NameTemplate 16 | { 17 | private readonly List atoms = new(); 18 | 19 | private readonly HashSet required_parameters = new(); 20 | private List atoms_before_generate = new(); 21 | private bool has_parsed = false; 22 | 23 | CN_NameTemplate(string pFormat, float pWeight) 24 | { 25 | raw_format = pFormat; 26 | weight = pWeight; 27 | Parse(); 28 | } 29 | 30 | CN_NameTemplate() 31 | { 32 | } 33 | 34 | [JsonProperty("format")] public string raw_format { get; private set; } 35 | 36 | [JsonProperty("weight")] public float weight { get; private set; } = 1; 37 | 38 | /// 39 | /// 创建器 40 | /// 41 | /// format文本 42 | /// 权重 43 | /// 44 | public static CN_NameTemplate Create(string pFormat, float pWeight) 45 | { 46 | return new CN_NameTemplate(pFormat, pWeight); 47 | } 48 | 49 | /// 50 | /// 获取需要填充的参数 51 | /// 52 | public Dictionary GetParametersToFill() 53 | { 54 | return required_parameters.ToDictionary(required_parameter => required_parameter, _ => ""); 55 | } 56 | 57 | /// 58 | /// 通过参数生成名字 59 | /// 60 | /// 填充后的通过获取的参数表 61 | [Hotfixable] 62 | public string GenerateName(Dictionary pParameters) 63 | { 64 | StringBuilder builder = new(); 65 | 66 | foreach (var atom in atoms_before_generate) 67 | { 68 | if (pParameters.TryGetValue(atom.Tag, out string para) && !string.IsNullOrEmpty(para)) continue; 69 | pParameters[atom.Tag] = WordLibraryManager.GetRandomWord(atom.GetFilledTemplate(pParameters)); 70 | } 71 | 72 | foreach (var atom in atoms) 73 | { 74 | if (!string.IsNullOrEmpty(atom.Tag)) 75 | { 76 | builder.Append(pParameters[atom.Tag]); 77 | continue; 78 | } 79 | 80 | switch (atom.Type) 81 | { 82 | case AtomType.Parameter: 83 | string para = atom.GetFilledTemplate(pParameters); 84 | if (string.IsNullOrEmpty(para)) 85 | { 86 | return string.Empty; 87 | } 88 | 89 | builder.Append(atom.GetFilledTemplate(pParameters)); 90 | continue; 91 | case AtomType.RawText: 92 | builder.Append(atom.Format); 93 | continue; 94 | case AtomType.WordLibrary: 95 | string word = WordLibraryManager.GetRandomWord(atom.GetFilledTemplate(pParameters)); 96 | if (string.IsNullOrEmpty(word) && atom.AllParametersRequired) 97 | { 98 | return string.Empty; 99 | } 100 | 101 | builder.Append(word); 102 | continue; 103 | } 104 | } 105 | 106 | return builder.ToString(); 107 | } 108 | 109 | internal void ReParse() 110 | { 111 | has_parsed = false; 112 | atoms.Clear(); 113 | atoms_before_generate.Clear(); 114 | required_parameters.Clear(); 115 | Parse(); 116 | } 117 | 118 | internal void Parse() 119 | { 120 | if (has_parsed) return; 121 | has_parsed = true; 122 | 123 | bool requiring_right_bracket = false; 124 | 125 | char[] format_key = new char[] { '{', '}', '<', '>' }; 126 | int format_key_index = 0; 127 | 128 | bool char_valid(char ch) 129 | { 130 | if (!requiring_right_bracket) return true; 131 | for (int i = 0; i < format_key.Length; i++) 132 | { 133 | if (i == format_key_index) continue; 134 | if (ch == format_key[i]) return false; 135 | } 136 | 137 | return true; 138 | } 139 | 140 | bool reading_parameters = false; 141 | bool reading_tag = false; 142 | bool reading_raw_text = false; 143 | int parameter_index = 0; 144 | StringBuilder para_builder = new(); 145 | StringBuilder tag_builder = new(); 146 | StringBuilder format_builder = new(); 147 | 148 | CN_NameTemplateAtom atom_in_recog = new(); 149 | for (int i = 0; i < raw_format.Length; i++) 150 | { 151 | char ch = raw_format[i]; 152 | if (!char_valid(ch)) 153 | throw new Exception( 154 | $"Invalid character '{ch}' at {i} in format '{raw_format}', need to be right bracket('>' or '}}')."); 155 | 156 | if (requiring_right_bracket && ch is '}' or '>') 157 | { 158 | atom_in_recog.Tag = tag_builder.ToString(); 159 | 160 | var para_list = para_builder.ToString().TrimEnd(';').Split(';').ToList(); 161 | if (para_list.Count == 1 && string.IsNullOrEmpty(para_list[0])) 162 | { 163 | para_list.Clear(); 164 | } 165 | else if (para_list.Any(string.IsNullOrEmpty)) 166 | { 167 | throw new Exception($"Invalid parameters in format '{raw_format}', parameter cannot be empty."); 168 | } 169 | 170 | atom_in_recog.ParametersKey = para_list.ToArray(); 171 | atom_in_recog.ParametersValue = new string[atom_in_recog.ParametersKey.Length]; 172 | atom_in_recog.Format = format_builder.ToString(); 173 | 174 | required_parameters.UnionWith(atom_in_recog.ParametersKey); 175 | 176 | tag_builder.Clear(); 177 | para_builder.Clear(); 178 | format_builder.Clear(); 179 | requiring_right_bracket = false; 180 | reading_parameters = false; 181 | reading_tag = false; 182 | atom_in_recog.Type = AtomType.WordLibrary; 183 | 184 | atoms.Add(atom_in_recog); 185 | atom_in_recog = new(); 186 | parameter_index = 0; 187 | continue; 188 | } 189 | 190 | switch (ch) 191 | { 192 | case '{': 193 | if (reading_tag) 194 | { 195 | throw new InvalidKeyCharException(ch, i, raw_format, "Tag Block"); 196 | } 197 | 198 | if (reading_raw_text) 199 | { 200 | throw new InvalidKeyCharException(ch, i, raw_format, "Raw Text Block"); 201 | } 202 | 203 | if (reading_parameters) 204 | { 205 | throw new InvalidKeyCharException(ch, i, raw_format, "Parameter Block"); 206 | } 207 | 208 | atom_in_recog.AllParametersRequired = false; 209 | requiring_right_bracket = true; 210 | format_key_index = 1; 211 | continue; 212 | case '<': 213 | if (reading_tag) 214 | { 215 | throw new InvalidKeyCharException(ch, i, raw_format, "Tag Block"); 216 | } 217 | 218 | if (reading_raw_text) 219 | { 220 | throw new InvalidKeyCharException(ch, i, raw_format, "Raw Text Block"); 221 | } 222 | 223 | if (reading_parameters) 224 | { 225 | throw new InvalidKeyCharException(ch, i, raw_format, "Parameter Block"); 226 | } 227 | 228 | atom_in_recog.AllParametersRequired = true; 229 | requiring_right_bracket = true; 230 | format_key_index = 3; 231 | continue; 232 | case '$': 233 | if (reading_tag) 234 | { 235 | throw new InvalidKeyCharException(ch, i, raw_format, "Tag Block"); 236 | } 237 | 238 | if (reading_raw_text) 239 | { 240 | throw new InvalidKeyCharException(ch, i, raw_format, "Raw Text Block"); 241 | } 242 | 243 | if (reading_parameters) 244 | { 245 | if (!requiring_right_bracket) 246 | { 247 | atom_in_recog.Format = format_builder.ToString(); 248 | atom_in_recog.Tag = tag_builder.ToString(); 249 | atom_in_recog.AllParametersRequired = true; 250 | atom_in_recog.ParametersKey = new string[1] { para_builder.ToString() }; 251 | atom_in_recog.ParametersValue = new string[atom_in_recog.ParametersKey.Length]; 252 | atom_in_recog.Type = AtomType.Parameter; 253 | atoms.Add(atom_in_recog); 254 | tag_builder.Clear(); 255 | para_builder.Clear(); 256 | format_builder.Clear(); 257 | reading_parameters = false; 258 | atom_in_recog = new(); 259 | parameter_index = 0; 260 | continue; 261 | } 262 | 263 | para_builder.Append(';'); 264 | } 265 | else 266 | { 267 | format_builder.Append($"{{{parameter_index++}}}"); 268 | } 269 | 270 | reading_parameters = !reading_parameters; 271 | continue; 272 | case '#': 273 | if (reading_tag) 274 | { 275 | throw new InvalidKeyCharException(ch, i, raw_format, "Tag Block"); 276 | } 277 | 278 | if (reading_parameters) 279 | { 280 | throw new InvalidKeyCharException(ch, i, raw_format, "Parameter Block"); 281 | } 282 | 283 | if (reading_raw_text) 284 | { 285 | atom_in_recog.Format = format_builder.ToString(); 286 | atom_in_recog.Tag = tag_builder.ToString(); 287 | atom_in_recog.AllParametersRequired = false; 288 | atom_in_recog.ParametersKey = Array.Empty(); 289 | atom_in_recog.ParametersValue = Array.Empty(); 290 | atom_in_recog.Type = AtomType.RawText; 291 | atoms.Add(atom_in_recog); 292 | tag_builder.Clear(); 293 | para_builder.Clear(); 294 | format_builder.Clear(); 295 | reading_raw_text = false; 296 | atom_in_recog = new(); 297 | } 298 | else 299 | { 300 | reading_raw_text = true; 301 | } 302 | 303 | continue; 304 | case ':': 305 | if (reading_tag) 306 | { 307 | throw new InvalidKeyCharException(ch, i, raw_format, "Tag Block"); 308 | } 309 | 310 | if (reading_raw_text) 311 | { 312 | throw new InvalidKeyCharException(ch, i, raw_format, "Raw Text Block"); 313 | } 314 | 315 | if (reading_parameters) 316 | { 317 | throw new InvalidKeyCharException(ch, i, raw_format, "Parameter Block"); 318 | } 319 | 320 | reading_tag = true; 321 | continue; 322 | case '}': 323 | case '>': 324 | if (reading_tag) 325 | { 326 | throw new InvalidKeyCharException(ch, i, raw_format, "Tag Block"); 327 | } 328 | 329 | if (reading_raw_text) 330 | { 331 | throw new InvalidKeyCharException(ch, i, raw_format, "Raw Text Block"); 332 | } 333 | 334 | if (reading_parameters) 335 | { 336 | throw new InvalidKeyCharException(ch, i, raw_format, "Parameter Block"); 337 | } 338 | 339 | throw new InvalidKeyCharException(ch, i, raw_format, "Missing Left Bracket"); 340 | default: 341 | if (reading_parameters) 342 | { 343 | para_builder.Append(ch); 344 | } 345 | else if (reading_tag) 346 | { 347 | tag_builder.Append(ch); 348 | } 349 | else 350 | { 351 | format_builder.Append(ch); 352 | } 353 | 354 | continue; 355 | } 356 | } 357 | 358 | if (requiring_right_bracket) 359 | { 360 | throw new Exception( 361 | $"Missing right bracket('>' or '}}') in format '{raw_format}'. (Maybe you forget to close a atom block?)"); 362 | } 363 | 364 | Dictionary atom_nodes = new(); 365 | foreach (CN_NameTemplateAtom atom in atoms.Where(atom => !string.IsNullOrEmpty(atom.Tag))) 366 | { 367 | atoms_before_generate.Add(atom); 368 | if (atom_nodes.ContainsKey(atom.Tag)) 369 | { 370 | throw new Exception($"Duplicate tag '{atom.Tag}' in format '{raw_format}'."); 371 | } 372 | 373 | required_parameters.Remove(atom.Tag); 374 | atom_nodes[atom.Tag] = new AtomNode(atom); 375 | } 376 | 377 | foreach (var atom in atoms_before_generate) 378 | { 379 | foreach (var depend_on_tag in atom.ParametersKey) 380 | { 381 | if (!atom_nodes.ContainsKey(depend_on_tag)) 382 | { 383 | continue; 384 | } 385 | 386 | var depend_on_node = atom_nodes[depend_on_tag]; 387 | var depend_by_node = atom_nodes[atom.Tag]; 388 | depend_on_node.depend_by.Add(depend_by_node); 389 | depend_by_node.depend_on.Add(depend_on_node); 390 | } 391 | } 392 | 393 | List sorted_atoms = new(); 394 | Queue queue = new(); 395 | foreach (AtomNode node in atom_nodes.Values.Where(node => node.depend_on.Count == 0)) 396 | { 397 | queue.Enqueue(node); 398 | } 399 | 400 | while (queue.Count > 0) 401 | { 402 | var node = queue.Dequeue(); 403 | sorted_atoms.Add(node.atom); 404 | foreach (var depend_by_node in node.depend_by) 405 | { 406 | depend_by_node.depend_on.Remove(node); 407 | if (depend_by_node.depend_on.Count == 0) 408 | { 409 | queue.Enqueue(depend_by_node); 410 | } 411 | } 412 | } 413 | 414 | atoms_before_generate = sorted_atoms; 415 | } 416 | 417 | private enum AtomType 418 | { 419 | WordLibrary, 420 | RawText, 421 | Parameter 422 | } 423 | 424 | private class CN_NameTemplateAtom 425 | { 426 | public bool AllParametersRequired; 427 | public string Format; 428 | public string[] ParametersKey; 429 | public string[] ParametersValue; 430 | public string Tag; 431 | public AtomType Type = AtomType.WordLibrary; 432 | 433 | [Hotfixable] 434 | public string GetFilledTemplate(Dictionary pParameters) 435 | { 436 | for (int i = 0; i < ParametersKey.Length; i++) 437 | { 438 | if (!pParameters.TryGetValue(ParametersKey[i], out ParametersValue[i]) && 439 | !ModClass.Instance.GlobalParameters.TryGetValue(ParametersKey[i], out ParametersValue[i]) && 440 | AllParametersRequired) 441 | { 442 | return string.Empty; 443 | } 444 | } 445 | 446 | try 447 | { 448 | return string.Format(Format, ParametersValue); 449 | } 450 | catch (Exception) 451 | { 452 | ModClass.LogError( 453 | $"Failed to format '{Format}' with parameters '{string.Join(", ", ParametersValue)}'."); 454 | return string.Empty; 455 | } 456 | } 457 | } 458 | 459 | private class AtomNode 460 | { 461 | public CN_NameTemplateAtom atom; 462 | public HashSet depend_by = new(); 463 | public HashSet depend_on = new(); 464 | 465 | public AtomNode(CN_NameTemplateAtom atom) 466 | { 467 | this.atom = atom; 468 | } 469 | } 470 | } -------------------------------------------------------------------------------- /name_generators/default/other_creatures.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "sheep_name", 4 | "templates": [ 5 | { 6 | "format": "$天干地支纪年$#羊#" 7 | }, 8 | { 9 | "format": "$天干地支纪年$#绵羊#" 10 | }, 11 | { 12 | "format": "{天干地支}#羊#" 13 | }, 14 | { 15 | "format": "{天干地支}#绵羊#" 16 | } 17 | ] 18 | }, 19 | { 20 | "id": "penguin_name", 21 | "templates": [ 22 | { 23 | "format": "$天干地支纪年$#企鹅#" 24 | } 25 | ] 26 | }, 27 | { 28 | "id": "turtle_name", 29 | "templates": [ 30 | { 31 | "format": "$天干地支纪年$#龟#" 32 | }, 33 | { 34 | "format": "$天干地支纪年$#海龟#" 35 | }, 36 | { 37 | "format": "{天干地支}#龟#" 38 | }, 39 | { 40 | "format": "{天干地支}#海龟#" 41 | } 42 | ] 43 | }, 44 | { 45 | "id": "wolf_name", 46 | "templates": [ 47 | { 48 | "format": "$天干地支纪年$#狼#" 49 | }, 50 | { 51 | "format": "{天干地支}#狼#" 52 | } 53 | ] 54 | }, 55 | { 56 | "id": "greg_name", 57 | "templates": [ 58 | { 59 | "format": "$天干地支纪年$#格雷#" 60 | }, 61 | { 62 | "format": "{天干地支}#格雷#" 63 | } 64 | ] 65 | }, 66 | { 67 | "id": "chicken_name", 68 | "templates": [ 69 | { 70 | "format": "$天干地支纪年$#鸡#", 71 | "weight": 20 72 | }, 73 | { 74 | "format": "$天干地支纪年$#只因#" 75 | }, 76 | { 77 | "format": "$天干地支纪年$#坤#" 78 | }, 79 | { 80 | "format": "{天干地支}#鸡#", 81 | "weight": 20 82 | }, 83 | { 84 | "format": "{天干地支}#只因#" 85 | }, 86 | { 87 | "format": "{天干地支}#坤#" 88 | } 89 | ] 90 | }, 91 | { 92 | "id": "alien_name", 93 | "templates": [ 94 | { 95 | "format": "$天干地支纪年$#星人#" 96 | }, 97 | { 98 | "format": "{天干地支}#星人#" 99 | } 100 | ] 101 | }, 102 | { 103 | "id": "ufo_name", 104 | "templates": [ 105 | { 106 | "format": "$天干地支纪年$#飞碟#" 107 | }, 108 | { 109 | "format": "{天干地支}#飞碟#" 110 | } 111 | ] 112 | }, 113 | { 114 | "id": "cold_one_name", 115 | "templates": [ 116 | { 117 | "format": "$天干地支纪年$#冰魔#" 118 | }, 119 | { 120 | "format": "$天干地支纪年$#寒冰行者#" 121 | }, 122 | { 123 | "format": "$天干地支纪年$#寒冰恶魔#" 124 | }, 125 | { 126 | "format": "{天干地支}#冰魔#" 127 | }, 128 | { 129 | "format": "{天干地支}#寒冰行者#" 130 | }, 131 | { 132 | "format": "{天干地支}#寒冰恶魔#" 133 | } 134 | ] 135 | }, 136 | { 137 | "id": "bug_name", 138 | "templates": [ 139 | { 140 | "format": "$天干地支纪年$#虫#" 141 | }, 142 | { 143 | "format": "$天干地支纪年$#蟲#" 144 | }, 145 | { 146 | "format": "$天干地支纪年$#漏洞#", 147 | "weight": 0.1 148 | }, 149 | { 150 | "format": "{天干地支}#虫#" 151 | }, 152 | { 153 | "format": "{天干地支}#蟲#" 154 | } 155 | ] 156 | }, 157 | { 158 | "id": "ant_name", 159 | "templates": [ 160 | { 161 | "format": "$天干地支纪年$#蚂蚁#" 162 | }, 163 | { 164 | "format": "$天干地支纪年$#蚁#" 165 | }, 166 | { 167 | "format": "{天干地支}#蚂蚁#" 168 | }, 169 | { 170 | "format": "{天干地支}#蚁#" 171 | } 172 | ] 173 | }, 174 | { 175 | "id": "demon_name", 176 | "templates": [ 177 | { 178 | "format": "$天干地支纪年$#炎魔#" 179 | }, 180 | { 181 | "format": "$天干地支纪年$#恶魔#" 182 | }, 183 | { 184 | "format": "{天干地支}#炎魔#" 185 | }, 186 | { 187 | "format": "{天干地支}#恶魔#" 188 | } 189 | ] 190 | }, 191 | { 192 | "id": "fairy_name", 193 | "templates": [ 194 | { 195 | "format": "$天干地支纪年$#天使#" 196 | }, 197 | { 198 | "format": "{天干地支}#天使#" 199 | } 200 | ] 201 | }, 202 | { 203 | "id": "crab_name", 204 | "templates": [ 205 | { 206 | "format": "$天干地支纪年$#蟹#" 207 | }, 208 | { 209 | "format": "$天干地支纪年$#螃蟹#" 210 | }, 211 | { 212 | "format": "{天干地支}#蟹#" 213 | }, 214 | { 215 | "format": "{天干地支}#螃蟹#" 216 | } 217 | ] 218 | }, 219 | { 220 | "id": "cow_name", 221 | "templates": [ 222 | { 223 | "format": "$天干地支纪年$#牛#" 224 | }, 225 | { 226 | "format": "{天干地支}#牛#" 227 | } 228 | ] 229 | }, 230 | { 231 | "id": "evil_mage_name", 232 | "templates": [ 233 | { 234 | "format": "$天干地支纪年$#法师#" 235 | }, 236 | { 237 | "format": "{天干地支}#法师#" 238 | } 239 | ] 240 | }, 241 | { 242 | "id": "rhino_name", 243 | "templates": [ 244 | { 245 | "format": "$天干地支纪年$#犀#" 246 | }, 247 | { 248 | "format": "$天干地支纪年$#犀牛#" 249 | }, 250 | { 251 | "format": "{天干地支}#犀#" 252 | }, 253 | { 254 | "format": "{天干地支}#犀牛#" 255 | } 256 | ] 257 | }, 258 | { 259 | "id": "monkey_name", 260 | "templates": [ 261 | { 262 | "format": "$天干地支纪年$#猴#" 263 | }, 264 | { 265 | "format": "{天干地支}#猴#" 266 | }, 267 | { 268 | "format": "{天干地支}#灵猴#" 269 | } 270 | ] 271 | }, 272 | { 273 | "id": "buffalo_name", 274 | "templates": [ 275 | { 276 | "format": "$天干地支纪年$#水牛#" 277 | }, 278 | { 279 | "format": "{天干地支}#水牛#" 280 | } 281 | ] 282 | }, 283 | { 284 | "id": "fox_name", 285 | "templates": [ 286 | { 287 | "format": "$天干地支纪年$#狐#" 288 | }, 289 | { 290 | "format": "$天干地支纪年$#狐狸#" 291 | }, 292 | { 293 | "format": "{天干地支}#狐#" 294 | }, 295 | { 296 | "format": "{天干地支}#狐狸#" 297 | } 298 | ] 299 | }, 300 | { 301 | "id": "hyena_name", 302 | "templates": [ 303 | { 304 | "format": "$天干地支纪年$#鬣狗#" 305 | }, 306 | { 307 | "format": "{天干地支}#鬣狗#" 308 | } 309 | ] 310 | }, 311 | { 312 | "id": "crocodile_name", 313 | "templates": [ 314 | { 315 | "format": "$天干地支纪年$#鳄#" 316 | }, 317 | { 318 | "format": "{天干地支}#鳄#" 319 | } 320 | ] 321 | }, 322 | { 323 | "id": "snake_name", 324 | "templates": [ 325 | { 326 | "format": "$天干地支纪年$#蛇#" 327 | }, 328 | { 329 | "format": "{天干地支}#蛇#" 330 | } 331 | ] 332 | }, 333 | { 334 | "id": "frog_name", 335 | "templates": [ 336 | { 337 | "format": "$天干地支纪年$#蛙#" 338 | }, 339 | { 340 | "format": "{天干地支}#蛙#" 341 | } 342 | ] 343 | }, 344 | { 345 | "id": "bioblob_name", 346 | "templates": [ 347 | { 348 | "format": "$天干地支纪年$#生物质#" 349 | }, 350 | { 351 | "format": "{天干地支}#生物质#" 352 | } 353 | ] 354 | }, 355 | { 356 | "id": "assimilator_name", 357 | "templates": [ 358 | { 359 | "format": "$天干地支纪年$#核心#" 360 | }, 361 | { 362 | "format": "$天干地支纪年$#机器#" 363 | }, 364 | { 365 | "format": "$天干地支纪年$#科技#" 366 | }, 367 | { 368 | "format": "{天干地支}#核心#" 369 | }, 370 | { 371 | "format": "{天干地支}#机器#" 372 | }, 373 | { 374 | "format": "{天干地支}#科技#" 375 | } 376 | ] 377 | }, 378 | { 379 | "id": "lemon_name", 380 | "templates": [ 381 | { 382 | "format": "$天干地支纪年$#柠檬#" 383 | }, 384 | { 385 | "format": "$天干地支纪年$#柠檬怪#" 386 | }, 387 | { 388 | "format": "{天干地支}#柠檬#" 389 | }, 390 | { 391 | "format": "{天干地支}#柠檬怪#" 392 | } 393 | ] 394 | }, 395 | { 396 | "id": "candy_name", 397 | "templates": [ 398 | { 399 | "format": "$天干地支纪年$#糖果#" 400 | }, 401 | { 402 | "format": "$天干地支纪年$#甜品#" 403 | }, 404 | { 405 | "format": "$天干地支纪年${$id$后缀}", 406 | "weight": 10 407 | }, 408 | { 409 | "format": "{天干地支}#糖果#" 410 | }, 411 | { 412 | "format": "{天干地支}#甜品#" 413 | }, 414 | { 415 | "format": "{天干地支}{$id$后缀}", 416 | "weight": 10 417 | } 418 | ] 419 | }, 420 | { 421 | "id": "crystal_name", 422 | "templates": [ 423 | { 424 | "format": "$天干地支纪年$#水晶戈仑#" 425 | }, 426 | { 427 | "format": "$天干地支纪年$#水晶傀儡#" 428 | }, 429 | { 430 | "format": "$天干地支纪年$#水晶怪#" 431 | }, 432 | { 433 | "format": "{天干地支}#水晶戈仑#" 434 | }, 435 | { 436 | "format": "{天干地支}#水晶傀儡#" 437 | }, 438 | { 439 | "format": "{天干地支}#水晶怪#" 440 | } 441 | ] 442 | }, 443 | { 444 | "id": "crystal_sword_name", 445 | "templates": [ 446 | { 447 | "format": "$天干地支纪年$#水晶灵剑#" 448 | }, 449 | { 450 | "format": "$天干地支纪年$#水晶剑灵#" 451 | }, 452 | { 453 | "format": "$天干地支纪年$#水晶剑魂#" 454 | }, 455 | { 456 | "format": "{天干地支}#水晶灵剑#" 457 | }, 458 | { 459 | "format": "{天干地支}#水晶剑灵#" 460 | }, 461 | { 462 | "format": "{天干地支}#水晶剑魂#" 463 | } 464 | ] 465 | }, 466 | { 467 | "id": "fire_skull_name", 468 | "templates": [ 469 | { 470 | "format": "$天干地支纪年$#火骷髅#" 471 | }, 472 | { 473 | "format": "$天干地支纪年$#火恶灵#" 474 | }, 475 | { 476 | "format": "$天干地支纪年$#邪火#" 477 | }, 478 | { 479 | "format": "{天干地支}#邪火#" 480 | }, 481 | { 482 | "format": "{天干地支}#火恶灵#" 483 | }, 484 | { 485 | "format": "{天干地支}#邪火#" 486 | } 487 | ] 488 | }, 489 | { 490 | "id": "fire_elemental_name", 491 | "templates": [ 492 | { 493 | "format": "$天干地支纪年$#炽火#" 494 | }, 495 | { 496 | "format": "$天干地支纪年$#烈炎#" 497 | }, 498 | { 499 | "format": "{天干地支}#炽火#" 500 | }, 501 | { 502 | "format": "{天干地支}#烈炎#" 503 | } 504 | ] 505 | }, 506 | { 507 | "id": "acid_blob_name", 508 | "templates": [ 509 | { 510 | "format": "$天干地支纪年$#史莱姆#" 511 | }, 512 | { 513 | "format": "$天干地支纪年$#酸液#" 514 | }, 515 | { 516 | "format": "{天干地支}#史莱姆#" 517 | }, 518 | { 519 | "format": "{天干地支}#酸液#" 520 | } 521 | ] 522 | }, 523 | { 524 | "id": "jumpy_skull_name", 525 | "templates": [ 526 | { 527 | "format": "$天干地支纪年$#恶灵#" 528 | }, 529 | { 530 | "format": "$天干地支纪年$#骷髅头#" 531 | }, 532 | { 533 | "format": "$天干地支纪年$#头骨#" 534 | }, 535 | { 536 | "format": "{天干地支}#恶灵#" 537 | }, 538 | { 539 | "format": "{天干地支}#骷髅头#" 540 | }, 541 | { 542 | "format": "{天干地支}#头骨#" 543 | } 544 | ] 545 | }, 546 | { 547 | "id": "lil_pumpkin_name", 548 | "templates": [ 549 | { 550 | "format": "$天干地支纪年$#南瓜#" 551 | }, 552 | { 553 | "format": "$天干地支纪年$#南瓜怪#" 554 | }, 555 | { 556 | "format": "{天干地支}#南瓜#" 557 | }, 558 | { 559 | "format": "{天干地支}#南瓜怪#" 560 | } 561 | ] 562 | }, 563 | { 564 | "id": "rat_name", 565 | "templates": [ 566 | { 567 | "format": "$天干地支纪年$#鼠#" 568 | }, 569 | { 570 | "format": "{天干地支}#鼠#" 571 | } 572 | ] 573 | }, 574 | { 575 | "id": "cat_name", 576 | "templates": [ 577 | { 578 | "format": "$天干地支纪年$#猫#" 579 | }, 580 | { 581 | "format": "$天干地支纪年$#喵#" 582 | }, 583 | { 584 | "format": "$天干地支纪年$#猫咪#" 585 | }, 586 | { 587 | "format": "{天干地支}#猫#" 588 | }, 589 | { 590 | "format": "{天干地支}#喵#" 591 | }, 592 | { 593 | "format": "{天干地支}#猫咪#" 594 | } 595 | ] 596 | }, 597 | { 598 | "id": "rabbit_name", 599 | "templates": [ 600 | { 601 | "format": "$天干地支纪年$#兔#" 602 | }, 603 | { 604 | "format": "$天干地支纪年$#兔叽#" 605 | }, 606 | { 607 | "format": "{天干地支}#兔#" 608 | }, 609 | { 610 | "format": "{天干地支}#兔叽#" 611 | } 612 | ] 613 | }, 614 | { 615 | "id": "piranha_name", 616 | "templates": [ 617 | { 618 | "format": "$天干地支纪年$#饕餮鱼#" 619 | }, 620 | { 621 | "format": "$天干地支纪年$#食人鱼#" 622 | }, 623 | { 624 | "format": "$天干地支纪年$#恶鱼#" 625 | }, 626 | { 627 | "format": "{天干地支}#饕餮鱼#" 628 | }, 629 | { 630 | "format": "{天干地支}#食人鱼#" 631 | }, 632 | { 633 | "format": "{天干地支}#恶鱼#" 634 | } 635 | ] 636 | }, 637 | { 638 | "id": "snowman_name", 639 | "templates": [ 640 | { 641 | "format": "$天干地支纪年$#雪傀儡#" 642 | }, 643 | { 644 | "format": "$天干地支纪年$#雪人#" 645 | }, 646 | { 647 | "format": "{天干地支}#雪傀儡#" 648 | }, 649 | { 650 | "format": "{天干地支}#雪人#" 651 | } 652 | ] 653 | }, 654 | { 655 | "id": "bear_name", 656 | "templates": [ 657 | { 658 | "format": "$天干地支纪年$#熊#" 659 | }, 660 | { 661 | "format": "$天干地支纪年$#狗熊#" 662 | }, 663 | { 664 | "format": "$天干地支纪年$#大熊#" 665 | }, 666 | { 667 | "format": "{天干地支}#熊#" 668 | }, 669 | { 670 | "format": "{天干地支}#狗熊#" 671 | }, 672 | { 673 | "format": "{天干地支}#大熊#" 674 | } 675 | ] 676 | }, 677 | { 678 | "id": "homie_name", 679 | "templates": [ 680 | { 681 | "format": "$天干地支纪年$#房屋#" 682 | }, 683 | { 684 | "format": "$天干地支纪年$#建筑#" 685 | }, 686 | { 687 | "format": "{天干地支}#房屋#" 688 | }, 689 | { 690 | "format": "{天干地支}#建筑#" 691 | } 692 | ] 693 | }, 694 | { 695 | "id": "skeleton_name", 696 | "templates": [ 697 | { 698 | "format": "$天干地支纪年$#骷髅#" 699 | }, 700 | { 701 | "format": "$天干地支纪年$#死灵#" 702 | }, 703 | { 704 | "format": "{天干地支}#骷髅#" 705 | }, 706 | { 707 | "format": "{天干地支}#死灵#" 708 | } 709 | ] 710 | }, 711 | { 712 | "id": "living_plant_name", 713 | "templates": [ 714 | { 715 | "format": "$天干地支纪年$#树妖#" 716 | }, 717 | { 718 | "format": "$天干地支纪年$#活树#" 719 | }, 720 | { 721 | "format": "$天干地支纪年$#树怪#" 722 | }, 723 | { 724 | "format": "{天干地支}#树妖#" 725 | }, 726 | { 727 | "format": "{天干地支}#活树#" 728 | }, 729 | { 730 | "format": "{天干地支}#树怪#" 731 | } 732 | ] 733 | }, 734 | { 735 | "id": "ghost_name", 736 | "templates": [ 737 | { 738 | "format": "$天干地支纪年$#幽灵#" 739 | }, 740 | { 741 | "format": "$天干地支纪年$#幽魂#" 742 | }, 743 | { 744 | "format": "$天干地支纪年$#游魂#" 745 | }, 746 | { 747 | "format": "{天干地支}#幽灵#" 748 | }, 749 | { 750 | "format": "{天干地支}#幽魂#" 751 | }, 752 | { 753 | "format": "{天干地支}#游魂#" 754 | } 755 | ] 756 | }, 757 | { 758 | "id": "default_name", 759 | "default_template": { 760 | "format": "$天干地支纪年$$locale$" 761 | }, 762 | "templates": [ 763 | { 764 | "format": "$locale$" 765 | }, 766 | { 767 | "format": "$天干地支纪年$$locale$" 768 | }, 769 | { 770 | "format": "$天干地支纪年${$id$$locale$后缀}" 771 | }, 772 | { 773 | "format": "{天干地支}$locale$", 774 | "weight": 10 775 | }, 776 | { 777 | "format": "{天干地支}{$id$$locale$后缀}", 778 | "weight": 10 779 | }, 780 | { 781 | "format": "{$locale$名}{$id$$locale$后缀}", 782 | "weight": 200 783 | } 784 | ] 785 | } 786 | ] --------------------------------------------------------------------------------