全面战争模组中文站全面战争模组中文站
搜索/

搜索教程

输入标题,直接打开已发布教程。

输入教程标题开始搜索。

教程目录

特性详解

创建时间:2026年9月4日最后更新:2026年9月6日

人物特性由“特性身份—特性等级—等级效果”三层组成。人物在游戏中获得的是特性点数;点数达到character_trait_levels_tables的阈值后,才显示对应等级并应用该等级连接的 Effect。

完整数据链

character_traits_tables
    ├─ character_trait_levels_tables
    │      └─ trait_level_effects_tables
    ├─ trait_info_tables
    ├─ trait_to_antitraits_tables
    └─ 获得或移除来源
           ├─ 战役脚本
           ├─ 事件、任务、战后结果
           └─ 其他系统表

新建完三张核心表,只代表“这个特性可以存在”。它不会自动告诉游戏何时给人物加点。获得条件可能来自脚本或其他系统,必须另外追踪模板的授予来源。

核心表单

表单 负责什么
character_traits_tables 特性 Key、隐藏状态、不可回退等级、图标和优先级。
character_trait_levels_tables 每个显示等级的名称、说明、阈值和所属特性。
trait_level_effects_tables 每个特性等级实际提供的 Effect。
trait_info_tables 特性标识记录。当前 Schema 中只有trait列,character_traits.key引用它;不能在此填写不存在的人物权限列。
trait_categories_tables 特性分类和分类图标。只在目标界面系统使用时添加。
trait_to_antitraits_tables 定义相反或互斥特性。

不要把trait_triggers_tables、trait_to_included_agents_tables等旧教程表名直接当成通用授予方法。应从依赖项 → 游戏文件搜索目标特性 Key,并追踪当前原版脚本或实际使用的系统连接。Assembly Kit 仅可交叉参考,不是导入来源;本文也不使用start_pos编辑初始人物。

character_traits_tables

人物特性表的 Key、等级控制、图标和界面字段

①是特性 Key,②是回退与隐藏字段,③是图标分类,④是界面倾向等设置。这里筛选原版wh2_main_trait_attacking_victory,它的三个阶段在官方简中显示为“自傲的攻击者”“攻势思维”“突袭专家”。这个案例适合解释多阶段特性;击败特定领主的一次性特性、隐藏计数特性和人物初始特性,需要另查对应模板与授予条件,不要求全部照此设置。

字段 含义
key 特性唯一 Key。
no_going_back_level 达到指定等级后,特性点数不能再退回更低阶段的入口。按原版同类特性验证。
hidden 是否隐藏特性。隐藏特性可用于内部计数或脚本状态。
precedence 特性竞争或显示时的优先级入口。不是效果强度。
icon 引用trait_categories_tables.category的图标分类入口;不是随意填 PNG 路径。本例是trait_good。
ui_priority 当前 Schema 对此字段注明:-1按负面红色、0按中性黄色、1按正面绿色显示。不能仅按“优先级”字面理解为列表序号;它也不改变 Effect 的计算正负。
pre_battle_speech_parameter 战前语音参数。
remove_on_skill_reset 重置技能时是否移除。只对相关人物系统有意义。

当前截图对应的游戏表没有author、comment列。参考资料中的编辑备注不能当作游戏 DB 必填项;玩家名称与说明放在特性等级的.loc文本中。

图标分类的全部 Key

当前trait_categories_tables共有 55 项。普通正面特性可从trait_good入手,负面从trait_bad入手;人物类别或特殊系统图标只改变对应图像,不会自动增加获得条件。下表列出实际引用路径,中文用途不靠英文 Key 猜成游戏名称。

icon应填的分类 Key 定义表中的icon_path
agent ui/campaign ui/skills/trait_agent.png
beastmen ui/campaign ui/skills/trait_beastmen.png
bretonnia ui/campaign ui/skills/trait_bretonnia.png
cathay ui/campaign ui/skills/trait_cathay.png
chaos ui/campaign ui/skills/trait_chaos.png
chaos_dwarfs ui/campaign ui/skills/trait_chaos_dwarfs.png
chivalry_negative ui/campaign ui/skills/virtue_negative.png
chivalry_positive ui/campaign ui/skills/virtue_positive.png
daemons ui/campaign ui/skills/trait_daemons.png
dark_elves ui/campaign ui/skills/trait_dark_elves.png
dlc25_chieftain_scaling_trait ui/campaign ui/effect_bundles/trait_deference_1.png
dlc25_tamurkhan_scaling_trait ui/campaign ui/effect_bundles/trait_deference_4.png
dwarf ui/campaign ui/skills/trait_dwarf.png
greenskin ui/campaign ui/skills/trait_greenskins.png
harkon_fractured ui/campaign ui/effect_bundles/fractured_mind.png
harkon_restored ui/campaign ui/effect_bundles/restored_mind.png
hertwig_legendary_physician ui/campaign ui/skills/trait_dlc13_hertwig_legendary_physician.png
hertwig_van_hal_bloodline ui/campaign ui/skills/trait_dlc13_hertwig_van_hal_bloodline.png
high_elves ui/campaign ui/skills/trait_high_elves.png
human ui/campaign ui/skills/trait_human.png
imrik_black_dragon ui/campaign ui/skills/trait_dlc15_imrik_black_dragon.png
imrik_forest_dragon ui/campaign ui/skills/trait_dlc15_imrik_forest_dragon.png
imrik_moon_dragon ui/campaign ui/skills/trait_dlc15_imrik_moon_dragon.png
imrik_star_dragon ui/campaign ui/skills/trait_dlc15_imrik_star_dragon.png
imrik_sun_dragon ui/campaign ui/skills/trait_dlc15_imrik_sun_dragon.png
jorek_magnificent_engineer ui/campaign ui/skills/trait_dlc13_jorek_magnificent_engineer.png
kalara_ishas_blessing ui/campaign ui/skills/trait_dlc13_kalara_ishas_blessing.png
khorne ui/campaign ui/skills/trait_khorne.png
kislev ui/campaign ui/skills/trait_kislev.png
kislev_ataman ui/campaign ui/skills/trait_ataman.png
kislev_ice_court ui/campaign ui/skills/trait_ice_court.png
lizardmen ui/campaign ui/skills/trait_lizardmen.png
loyalty ui/campaign ui/effect_bundles/loyalty.png
military ui/campaign ui/skills/trait_military.png
mortal_torment ui/campaign ui/effect_bundles/dlc10_mortal_torment.png
navy ui/campaign ui/skills/trait_navy.png
norsca ui/campaign ui/skills/trait_norsca.png
nurgle ui/campaign ui/skills/trait_nurgle.png
ogre_kingdoms ui/campaign ui/skills/trait_ogre_kingdoms.png
personality ui/campaign ui/skills/trait_personality.png
physical ui/campaign ui/skills/trait_physical.png
rodrik_wolf_hearted ui/campaign ui/skills/trait_dlc13_rodrik_wolfhearted.png
skaven ui/campaign ui/skills/trait_skaven.png
slaanesh ui/campaign ui/skills/trait_slaanesh.png
sword_of_khaine ui/campaign ui/effect_bundles/dlc10_sword_of_khaine.png
tomb_kings ui/campaign ui/skills/trait_tomb_kings.png
trait_bad ui/campaign ui/skills/trait_battle_negative.png
trait_good ui/campaign ui/skills/trait_campaign_positive.png
tzeentch ui/campaign ui/skills/trait_tzeentch.png
vampire_coast ui/campaign ui/skills/trait_vampire_coast.png
vampire_counts ui/campaign ui/skills/trait_vampire_counts.png
vow_grail ui/campaign ui/effect_bundles/vow_grail_positive.png
vow_knights ui/campaign ui/effect_bundles/vow_knights_positive.png
vow_questing ui/campaign ui/effect_bundles/vow_questing_positive.png
wood_elf ui/campaign ui/skills/trait_wood_elves.png

在character_traits_tables.icon填左列 Key;右列用于定位或复用资源。若创建独立图标分类,还要新建分类记录并提供实际图像,不能把右列路径直接塞进特性的icon列。

character_trait_levels_tables

一项特性可以只有一级,也可以包含多个正向或负向阶段。

字段 含义
key 当前特性等级的唯一 Key。
trait 所属character_traits.key。
level 显示等级序号。
threshold_points 达到该等级所需特性点数。
onscreen_name(本地化字段) 当前等级显示名称。不同等级可以不同。
explanation_text(本地化字段) 获取等补充说明;本例原版写“获取方式:打赢多场进攻战”,但文字本身不执行授予条件。
removal_text(本地化字段) 移除相关的说明文本;写入文本不会自动实现移除逻辑。
colour_text(本地化字段) 描写人物行为或特性背景的文字,不是颜色开关。

这四项都保存于.loc,不是普通 DB 列。Loc Key 写成character_trait_levels_字段名_等级Key,例如character_trait_levels_onscreen_name_wh2_main_trait_attacking_victory_2对应“攻势思维”。注意最后拼接的是等级 Key,不是三个阶段共同引用的特性 Key。

特性等级的Key、等级、所属特性和阈值

图中编号①是当前等级记录 Key,②是level,③是所属trait,④是threshold_points。同一特性的多个等级通过③归组,再由④决定达到哪个阶段。

本例三个等级依次需要8、12、18点。它们的等级序号是1、2、3,两组数不能混写。截图没有显示每场战斗增加多少点,所以不能据此直接告诉读者“打赢 8 场必定获得一级”;还要继续追踪原版的加点条件、计数方法和例外限制。

阈值不必固定为1、2、3。有的特性每次行为加若干点,有的正负行为会互相抵消。复制时必须追踪授予脚本或事件怎样增减点数。

trait_level_effects_tables

字段 含义
trait_level 哪一个显示等级。
effect 提供哪个 Effect。
value 传给 Bonus Value 的数值。
effect_scope 影响人物、所属军队、派系或其他对象。

同一等级可以有多条 Effect。不同等级是“完整替换”还是“逐级叠加”,应通过原版数据和游戏行为确认,不能仅从level推断。

同一特性的三个等级连接到不同效果数值

在trait_level_effects_tables筛选同一段 Key,可以看到七条连接:①中的一级、二级各两条,三级三条;②是各自的 Effect;③是每行的 Scope;④是数值。三级还多了一条近战攻击效果。这些行按具体等级 Key连接,不是把特性总 Key 填七遍。不同 Scope 可能分别影响人物自身和所属军队,不能把一整组统一改成同一个范围。

三个等级的效果不必再靠截图抄

trait_level effect effect_scope value
wh2_main_trait_attacking_victory_1 wh_main_effect_character_stat_leadership_aura_size_attacking character_to_character_own 10
wh2_main_trait_attacking_victory_1 wh_main_effect_force_stat_leadership_attacking general_to_force_own 2
wh2_main_trait_attacking_victory_2 wh_main_effect_character_stat_leadership_aura_size_attacking character_to_character_own 20
wh2_main_trait_attacking_victory_2 wh_main_effect_force_stat_leadership_attacking general_to_force_own 3
wh2_main_trait_attacking_victory_3 wh_main_effect_character_stat_leadership_aura_size_attacking character_to_character_own 30
wh2_main_trait_attacking_victory_3 wh_main_effect_character_stat_melee_attack character_to_character_own 4
wh2_main_trait_attacking_victory_3 wh_main_effect_force_stat_leadership_attacking general_to_force_own 4

对应名称依次为“自傲的攻击者”“攻势思维”“突袭专家”,阈值为8、12、18,已对照官方三种 Loc。自建三阶段特性时,把共同特性改为yourmod_trait,等级分别改为yourmod_trait_1至_3,并替换本表每行的等级引用;不改原版 Effect 行即可继续复用原版计算逻辑。

若只做一次获得、没有升级的特性,可以只建level=1、threshold_points=1的一条等级记录及其效果。1点方案是自定义设计,不要反过来把原版三阶段阈值都改成1。

相反特性与互斥

trait_to_antitraits_tables使用trait和antitrait建立相反关系。常见用途是让两种行为朝相反方向积累或互相移除,但实际点数变化仍由授予系统决定。

不要为了名字相反就建立关系。先找同类原版特性,确认脚本或系统是否读取该反特性关系。

特性适用对象

当前trait_info_tables的 Schema 只有trait标识列,没有applicable_to。参考资料中出现的编辑器元数据或其他结构,不能当成当前游戏可编辑的人物权限列。

应全局搜索目标特性 Key,查看实际授予脚本或系统连接怎样筛选人物大类、人物类型、派系、战斗参与者以及领主或英雄身份。创建一行特性定义,不代表所有人物都会自动获得;只更改描述也不会改变适用对象。

怎样找到特性的获得方式

  1. 用游戏简体中文名称定位character_trait_levels或本地化 Key。
  2. 从等级记录找到character_traits.key。
  3. 全局搜索特性 Key,记录所有 DB 和脚本引用。
  4. 如果只在脚本中出现,查看脚本在什么事件、人物类型和条件下增加点数。
  5. 如果出现在事件或任务数据中,沿对应载荷继续追踪;想让已有的目标人物在新战役开始时获得特性,应检查战役初始化脚本的授予条件,不新建同名初始化表来替代。
  6. 检查是否存在 antitrait、隐藏阶段或不可回退等级。

击败传奇领主、频繁伏击、长期征战等都只是可能的授予案例,不是特性系统的固定入口。

原版脚本的准确查找位置

在依赖项 → 游戏文件中按路径定位script/campaign/wh2_campaign_traits.lua,当前文件来自游戏data_script.pack。搜索campaign_traits:give_trait,可以看到这个函数检查人物接口、check_exclusion和随机概率,再调用cm:force_add_trait。

这个包装函数的参数顺序是character, trait, _points, _chance;后两项不传时,源码默认1点和100的概率。这里的trait填共同特性 Key,例如wh2_main_trait_attacking_victory,不填_1等级 Key。函数定义本身不是触发器,仍要找到谁在什么事件里调用它。

同一文件开头的trait_exclusions.subculture中,进攻胜利特性列有wh_main_sc_brt_bretonnia。这是排除表,不能把命中该 Key 误看成巴托尼亚的授予入口。本次在这个文件中找到的是排除项与通用授予函数,没有找到进攻胜利计数的完整触发链,因此不能把阈值8解释成固定八场胜利。

定位自己的目标时,先清空 DB 文件类型与data__$路径过滤,改为 Lua 内容搜索;依次搜完整特性 Key、give_trait调用和触发事件。命中定义、排除表、移除函数、授予调用时分别判断职责,只有最后的事件条件与加点调用才说明为什么获得。自己的新特性需要独立触发逻辑;不要复制或覆盖整份原版脚本来改一个 Key。

新建特性的推荐顺序

  1. 从依赖项 → 游戏文件的原版记录选择同类模板,将必要子表导入自己的 Pack;把自己 Pack 中的data__改成唯一文件名,再仅保留需要的记录。创建唯一的character_traits.key,并按实际引用检查标识记录。
  2. 创建至少一个特性等级,设置等级与点数阈值,在.loc填写对应等级的名称和说明。
  3. 为每个等级连接实际需要的 Effect。
  4. 设置适用对象和必要的反特性关系。
  5. 选择真实授予入口:脚本、事件、任务或同类原版已经使用的系统;需要开局授予时单独处理脚本初始化与读档防重复。
  6. 为获得、升级、下降和移除分别设计可验证条件。
  7. 运行 RPFM 诊断并检查脚本 Key。
  8. 在游戏中重复触发条件,验证点数、阶段和存档。

常见错误

  • 特性永远不出现:只做了定义,没有授予来源。
  • 特性出现但没有效果:缺少trait_level_effects或 Effect 链错误。
  • 一次触发直接跳到高等级:授予的点数超过多个阈值。
  • 负向行为不能降级:检查no_going_back_level和授予逻辑。
  • 错误人物获得:检查授予入口对人物大类、人物类型、派系和参与条件的筛选,不在trait_info中寻找不存在的applicable_to列。
  • 名称随等级不变化:每个等级需要自己的显示文本。

游戏内验收

  • 正确人物在正确条件下获得特性点数。
  • 每个阈值只在预期时升级或降级。
  • 名称、说明、图标和颜色正确。
  • 每一级 Effect、Scope 和数值正确。
  • 相反行为和 antitrait 按预期工作。
  • 保存并读取后点数与当前等级保持一致。

RPFM 诊断无法执行授予脚本,也不能证明点数阈值的运行时变化。特性必须通过重复触发和存档读取验收。

图片查看
100%

滚轮或按钮缩放 · 拖动或滑动查看 · Esc 关闭