FactionTemplate.db2
用于定义阵营模板,它控制着不同阵营之间的敌对和友好关系。
主要参数详解
1. ID (模板ID)
- 唯一标识符,用于在代码中引用特定的阵营模板
- 在生物模板(creature_template)中通过faction字段引用
2. Faction (关联阵营ID)
- 指向Faction.db2中的阵营ID
- 定义该模板所属的具体阵营
- 如果为0,表示该模板不关联具体阵营
3. Flags (阵营模板标志)
- 控制阵营模板的特殊行为
- 多个标志可以同时启用,通过位或运算组合
- 具体的关系判断有优先级顺序(友方检查 > 敌方检查 > 默认行为)
-
标志位名称 值 作用描述 应用场景 FACTION_TEMPLATE_FLAG_CONTESTED_GUARD 0x00001000
标记为争议守卫阵营 PVP区域的守卫,当玩家有争议PVP标志时强制敌对 FACTION_TEMPLATE_FLAG_HOSTILE_BY_DEFAULT 0x00002000
默认敌对标志 没有明确关系定义时,默认视为敌对阵营 FACTION_TEMPLATE_FLAG_PVP 0x00000800
PVP阵营标志 标记该阵营参与PVP系统 FACTION_TEMPLATE_FLAG_PVP_ENABLED 未知 PVP功能启用 该阵营的PVP功能处于激活状态 FACTION_TEMPLATE_FLAG_FORCE_REACTION 未知 强制特定反应 强制设定与其他阵营的特定关系 FACTION_TEMPLATE_FLAG_PEACEFUL 未知 和平阵营标志 该阵营不会主动攻击其他单位 FACTION_TEMPLATE_FLAG_HIDE_REPUTATION 未知 隐藏声望显示 在声望界面中隐藏该阵营的声望信息 FACTION_TEMPLATE_FLAG_INVISIBLE 未知 隐形阵营标志 该阵营在游戏中不可见 FACTION_TEMPLATE_FLAG_INACTIVE 未知 非活动阵营 该阵营当前不参与游戏逻辑
4. 阵营组相关参数
- FactionGroup: 模板所属的阵营组(如联盟、部落、怪物等)
- FriendGroup: 友好的阵营组掩码
- EnemyGroup: 敌对的阵营组掩码
阵营组使用位掩码如下:
FACTION_MASK_PLAYER(0x0001): 玩家FACTION_MASK_ALLIANCE(0x0002): 联盟FACTION_MASK_HORDE(0x0004): 部落FACTION_MASK_MONSTER(0x0008): 怪物
5. 关系列表
- Enemies: 最多8个敌对阵营的Faction ID列表,取值来源Faction.db2中的阵营ID
- Friend: 最多8个友好阵营的Faction ID列表,取值来源Faction.db2中的阵营ID
重要辅助方法
- IsFriendlyTo(): 判断是否对另一个阵营模板友好
- IsHostileTo(): 判断是否对另一个阵营模板敌对
- IsHostileToPlayers(): 判断是否对所有玩家敌对
- IsNeutralToAll(): 判断是否对所有阵营中立
- IsContestedGuardFaction(): 判断是否为争议守卫阵营
应用场景
- PVP控制: 控制联盟和部落玩家之间的敌对关系
- 怪物行为: 决定怪物攻击哪些阵营的目标
- 守卫系统: 控制城市守卫对不同阵营的态度
- 任务NPC: 控制任务NPC对不同阵营玩家的可见性
