表概述

faction表是声望系统的核心数据表,数据来源于Faction.dbc文件。该表定义了所有阵营的声望基准值种族/职业声望修正阵营等级关系以及多语言名称/描述

主键为 ID,支持16种语言的名称和描述字段。通过ReputationRaceMask和ReputationClassMask提供精细化的声望控制。

表结构

字段名数据类型默认值说明
IDINT0阵营唯一ID(主键)
ReputationIndexINT0声望界面显示索引,-1表示不显示
ReputationRaceMask_1-4INT04组种族声望掩码
ReputationClassMask_1-4INT04组职业声望掩码
ReputationBase_1-4INT04组基础声望值
ReputationFlags_1-4INT04组声望标志位
ParentFactionIDINT0父阵营ID
ParentFactionMod_1-2FLOAT0父阵营声望修正系数(溢出比例)
ParentFactionCap_1-2INT0父阵营声望溢出上限
Name_Lang_enUSVARCHAR(100)NULL英文(美)名称
Name_Lang_enGBVARCHAR(100)NULL英文(英)名称
Name_Lang_koKRVARCHAR(100)NULL韩文名称
Name_Lang_frFRVARCHAR(100)NULL法文名称
Name_Lang_deDEVARCHAR(100)NULL德文名称
Name_Lang_enCNVARCHAR(100)NULL英文(中)名称
Name_Lang_zhCNVARCHAR(100)NULL简体中文名称
Name_Lang_enTWVARCHAR(100)NULL英文(台)名称
Name_Lang_zhTWVARCHAR(100)NULL繁体中文名称
Name_Lang_esESVARCHAR(100)NULL西班牙文(西)名称
Name_Lang_esMXVARCHAR(100)NULL西班牙文(墨)名称
Name_Lang_ruRUVARCHAR(100)NULL俄文名称
Name_Lang_ptPTVARCHAR(100)NULL葡萄牙文(葡)名称
Name_Lang_ptBRVARCHAR(100)NULL葡萄牙文(巴)名称
Name_Lang_itITVARCHAR(100)NULL意大利文名称
Name_Lang_UnkVARCHAR(100)NULL未知语言名称(备用)
Name_Lang_MaskINT UNSIGNED0支持语言的位掩码
Description_Lang_enUS~_UnkVARCHAR(300)NULL16种语言的描述文本(同上结构)
Description_Lang_MaskINT UNSIGNED0描述语言位掩码

重要字段详解

ReputationRaceMask (种族声望掩码)

4组独立的种族威望掩码,控制不同种族对该阵营的初始声望值。种族掩码值:

  • 0x01 - 人类 | 0x02 - 兽人 | 0x04 - 矮人
  • 0x08 - 暗夜精灵 | 0x10 - 亡灵 | 0x20 - 牛头人
  • 0x40 - 侏儒 | 0x80 - 巨魔 | 0x100 - 地精
  • 0x200 - 血精灵 | 0x400 - 德莱尼
ReputationClassMask (职业声望掩码)

4组职业声望掩码,配合种族掩码进一步精细化声望控制。如战士类=0x01,圣骑士=0x02,猎人=0x04。

ReputationBase_1-4分别对应每组掩码的基础声望值。

ParentFactionID (父阵营/声望溢出)

定义声望溢出机制。当玩家获得某阵营声望时,根据ParentFactionMod系数向父阵营传递部分声望。

  • 暴风城(ID:72)的声望可能溢出到联盟(ID:469)
  • 奥格瑞玛(ID:76)溢出到部落(ID:67)

实战案例

查询所有阵营的中文名称:
SELECT ID, Name_Lang_zhCN, ReputationIndex
FROM faction
WHERE Name_Lang_zhCN IS NOT NULL
ORDER BY ID;
查询暴风城(ID=72)的种族声望配置:
SELECT ReputationRaceMask_1, ReputationBase_1,
       ReputationRaceMask_2, ReputationBase_2,
       ParentFactionID, ParentFactionMod_1
FROM faction
WHERE ID = 72;
查询有溢出关系的阵营:
SELECT f.ID, f.Name_Lang_zhCN, f.ParentFactionID,
       pf.Name_Lang_zhCN AS ParentFaction,
       f.ParentFactionMod_1 AS SpilloverRate
FROM faction f
LEFT JOIN faction pf ON f.ParentFactionID = pf.ID
WHERE f.ParentFactionID > 0
ORDER BY f.ID;

常见问题

Q: 如何添加或修改阵营的中文名称?

直接更新Name_Lang_zhCN字段:

UPDATE faction SET Name_Lang_zhCN = '新名称' WHERE ID = [阵营ID];

Q: 为什么ReputationIndex为-1?

ReputationIndex = -1 表示该阵营不在玩家的声望面板中显示。这是一个内部阵营,声望变化对玩家不可见。