PathOfBuilding 模组语法详解与实战指南
前言
PathOfBuilding(简称PoB)作为流放之路玩家必备的构建工具,其核心功能依赖于一套完善的模组(Mod)系统。本文将深入解析PoB中的模组语法结构,帮助开发者理解如何正确创建和配置各种游戏效果。
模组基础结构
PoB中的模组主要由7个核心参数构成,其标准格式如下:
mod(ModName, ModType, Value, source, modFlags, keywordFlags, extraTags)
对于技能相关的模组,系统会自动处理source
参数,因此简化为:
mod(ModName, ModType, Value, modFlags, keywordFlags, extraTags)
核心参数详解
1. ModName(模组名称)
模组名称作为唯一标识符,用于在PoB中引用该模组。常见示例包括:
- "Damage"(伤害)
- "Life"(生命值)
- "PhysicalDamageGainAsLightning"(物理伤害转化为闪电伤害)
最佳实践是参考现有代码库中的命名规范,保持一致性。
2. ModType(模组类型)
模组类型决定了数值的计算方式,主要有以下几种:
| 类型 | 说明 | 示例 | |------|------|------| | BASE | 基础值,直接相加 | 基础生命值、基础伤害 | | INC | 增减类,加法叠加 | 增加/减少伤害 | | MORE | 更多/较少类,乘法叠加 | 更多/较少伤害 | | OVERRIDE | 覆盖计算,直接使用指定值 | 固定抗性值 | | FLAG | 条件标记,值为布尔型 | 是否处于某种状态 |
特别提示:对于FLAG类型,推荐使用flag()
函数简化代码,如:
flag("ZealotsOath", { type = "Condition", var = "UsingFlask" })
3. Value(数值)
表示模组的原始数值。在技能数据映射中通常为nil
,因为数值会根据宝石等级自动获取。
4. Source(来源)
表示模组的来源,通常由系统自动填充。特殊格式"Tree:[nodeId]"可在鼠标悬停时显示天赋树节点。
5. Mod Flags(模组标志)
位标志,定义模组适用的对象。使用bit.bor
或bor
组合多个标志时,所有标志都必须匹配。如需任一匹配,需使用"ModFlagOr"标签。
常见标志包括武器类型、护甲类型等。
6. Keyword Flags(关键词标志)
类似于模组标志,但基于宝石本身的标志。组合多个标志时,只需任一匹配。如需全部匹配,需使用"KeywordFlagAnd"标签。
扩展标签系统
模组可以包含多个额外标签,用于定义特殊条件和效果。以下是主要标签类型:
条件类标签
-
Condition:玩家状态条件
{ type = "Condition", var = "CritRecently" } -- 近期暴击时生效
-
ActorCondition:敌人或召唤物状态条件
{ type = "ActorCondition", actor = "enemy", var = "Bleeding" } -- 敌人流血时生效
数值计算类标签
-
Multiplier:基于变量乘数
{ type = "Multiplier", var = "PowerCharge", limit = 5 } -- 每层能量球,最多5层
-
PerStat:基于角色属性
{ type = "PerStat", stat = "Strength", div = 5 } -- 每5点力量
-
PercentStat:基于属性百分比
{ type = "PercentStat", stat = "Life", percent = 20 } -- 生命值的20%
技能相关标签
-
SkillType:影响特定类型技能
{ type = "SkillType", skillType = SkillType.Totem } -- 影响所有图腾技能
-
SkillName:影响特定名称技能
{ type = "SkillName", skillName = "Molten Strike" } -- 影响熔岩之击
特殊效果标签
-
GlobalEffect:全局效果(光环、诅咒等)
{ type = "GlobalEffect", effectType = "Aura", effectName = "Hatred" }
-
DistanceRamp:距离渐变效果
{ type = "DistanceRamp", ramp = {{35,0},{70,1}} } -- 35单位无效果,70单位完全生效
实战技巧
-
组合使用标签:一个模组可以包含多个标签,实现复杂条件
mod("Damage", "MORE", 10, nil, nil, { type = "Condition", var = "Combat" }, { type = "Multiplier", var = "FrenzyCharge" })
-
性能优化:合理使用
bor
组合标志,减少模组数量 -
条件反转:使用
neg = true
反转条件判断
常见问题解答
Q:如何实现"当敌人被冰冻时增加伤害"? A:
mod("Damage", "INC", 20, { type = "ActorCondition", actor = "enemy", var = "Frozen" })
Q:如何实现"每10点智力增加1%能量护盾"? A:
mod("EnergyShield", "INC", 1, { type = "PerStat", stat = "Intelligence", div = 10 })
结语
掌握PoB的模组语法是进行高级构建和自定义计算的关键。通过合理组合各种模组类型和标签,可以精确模拟游戏中的各种复杂机制。建议在实际开发中多参考现有实现,保持代码风格一致。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考