特性详解
角色特性由“特性身份—特性等级—等级效果”三层组成。角色在游戏中获得的是特性点数;点数达到character_trait_levels_tables的阈值后,才显示对应等级并应用该等级连接的 Effect。
完整数据链
character_traits_tables
├─ character_trait_levels_tables
│ └─ trait_level_effects_tables
├─ trait_info_tables
├─ trait_to_antitraits_tables
└─ 获得或移除来源
├─ 战役脚本
├─ 事件、任务、战后结果
├─ start_pos_character_traits_tables
└─ 其他系统表
新建完三张核心表,只代表“这个特性可以存在”。它不会自动告诉游戏何时给角色加点。获得条件可能来自脚本或其他系统,必须另外追踪模板的授予来源。
核心表单
| 表单 | 负责什么 |
|---|---|
character_traits_tables |
特性 Key、隐藏状态、不可回退等级、图标和优先级。 |
character_trait_levels_tables |
每个显示等级的名称、说明、阈值和所属特性。 |
trait_level_effects_tables |
每个特性等级实际提供的 Effect。 |
trait_info_tables |
说明特性适用于什么对象。 |
trait_categories_tables |
特性分类和分类图标。只在目标界面系统使用时添加。 |
trait_to_antitraits_tables |
定义相反或互斥特性。 |
start_pos_character_traits_tables |
在起始数据中给指定角色添加特性。普通动态获得不应依赖它。 |
当前 Assembly Kit 原始数据中的trait_triggers_tables和trait_to_included_agents_tables没有正式记录,不应把这些旧表名当成当前通用授予方法。
character_traits_tables
橙色框从左到右标出特性 Key、回退与隐藏控制、图标与优先级,以及其他界面行为字段。
| 字段 | 含义 |
|---|---|
key |
特性唯一 Key。 |
no_going_back_level |
达到指定等级后,特性点数不能再退回更低阶段的入口。按原版同类特性验证。 |
hidden |
是否隐藏特性。隐藏特性可用于内部计数或脚本状态。 |
precedence |
特性竞争或显示时的优先级入口。不是效果强度。 |
icon |
特性图标。 |
ui_priority |
特性在界面中的排序。 |
pre_battle_speech_parameter |
战前语音参数。 |
remove_on_skill_reset |
重置技能时是否移除。只对相关角色系统有意义。 |
author、comment |
开发备注,不是玩家文本。 |
character_trait_levels_tables
一项特性可以只有一级,也可以包含多个正向或负向阶段。
| 字段 | 含义 |
|---|---|
key |
当前特性等级的唯一 Key。 |
trait |
所属character_traits.key。 |
level |
显示等级序号。 |
threshold_points |
达到该等级所需特性点数。 |
onscreen_name |
当前等级显示名称。不同等级可以不同。 |
explanation_text |
当前等级说明。 |
removal_text |
点数下降或特性移除时的提示。 |
colour_text |
文本颜色或界面样式入口。 |
阈值不必固定为1、2、3。有的特性每次行为加若干点,有的正负行为会互相抵消。复制时必须追踪授予脚本或事件怎样增减点数。
trait_level_effects_tables
| 字段 | 含义 |
|---|---|
trait_level |
哪一个显示等级。 |
effect |
提供哪个 Effect。 |
value |
传给 Bonus Value 的数值。 |
effect_scope |
影响角色、所属军队、派系或其他对象。 |
同一等级可以有多条 Effect。不同等级是“完整替换”还是“逐级叠加”,应通过原版数据和游戏行为确认,不能仅从level推断。
相反特性与互斥
trait_to_antitraits_tables使用trait和antitrait建立相反关系。常见用途是让两种行为朝相反方向积累或互相移除,但实际点数变化仍由授予系统决定。
不要为了名字相反就建立关系。先找同类原版特性,确认脚本或系统是否读取该反特性关系。
特性适用对象
trait_info_tables包含:
trait:特性 Key。applicable_to:适用对象类型。
此外,授予脚本、起始角色、派系和角色类型条件仍可能继续限制。applicable_to不是唯一权限表。
怎样找到特性的获得方式
- 用游戏简体中文名称定位
character_trait_levels或本地化 Key。 - 从等级记录找到
character_traits.key。 - 全局搜索特性 Key,记录所有 DB 和脚本引用。
- 如果只在脚本中出现,查看脚本在什么事件、角色类型和条件下增加点数。
- 如果出现在起始数据、事件或任务表中,沿对应载荷继续追踪。
- 检查是否存在 antitrait、隐藏阶段或不可回退等级。
击败传奇领主、频繁伏击、长期征战等都只是可能的授予案例,不是特性系统的固定入口。
新建特性的推荐顺序
- 创建唯一的
character_traits.key。 - 创建至少一个特性等级,填写名称、说明和阈值。
- 为每个等级连接实际需要的 Effect。
- 设置适用对象和必要的反特性关系。
- 选择真实授予入口:脚本、事件、任务、起始角色或其他系统。
- 为获得、升级、下降和移除分别设计可验证条件。
- 运行 RPFM 诊断并检查脚本 Key。
- 在游戏中重复触发条件,验证点数、阶段和存档。
常见错误
- 特性永远不出现:只做了定义,没有授予来源。
- 特性出现但没有效果:缺少
trait_level_effects或 Effect 链错误。 - 一次触发直接跳到高等级:授予的点数超过多个阈值。
- 负向行为不能降级:检查
no_going_back_level和授予逻辑。 - 错误角色获得:检查
applicable_to以及脚本中的角色类型条件。 - 名称随等级不变化:每个等级需要自己的显示文本。
游戏内验收
- 正确角色在正确条件下获得特性点数。
- 每个阈值只在预期时升级或降级。
- 名称、说明、图标和颜色正确。
- 每一级 Effect、Scope 和数值正确。
- 相反行为和 antitrait 按预期工作。
- 保存并读取后点数与当前等级保持一致。
RPFM 诊断无法执行授予脚本,也不能证明点数阈值的运行时变化。特性必须通过重复触发和存档读取验收。

