PathOfBuilding技能添加机制深度解析

PathOfBuilding技能添加机制深度解析

PathOfBuilding Offline build planner for Path of Exile. PathOfBuilding 项目地址: https://gitcode.com/gh_mirrors/pa/PathOfBuilding

技能系统架构概述

在PathOfBuilding中,技能系统是通过模板文件(template file)生成的。这些模板文件与游戏原始数据结合后,形成了我们最终看到的技能数据结构和计算逻辑。理解这套机制对于想要扩展或修改技能的开发者至关重要。

模板文件详解

核心指令解析

  1. #skill指令

    • 功能:初始化技能数据并生成技能头部信息
    • 参数说明:
      • grantedEffectId:必须与游戏数据中的GrantedEffects表匹配
      • displayName:可选参数,用于覆盖游戏默认显示名称
  2. #flags指令

    • 作用:设置技能的基础标志属性
    • 常用标志及其影响:
      • 近战(melee):影响近战相关修饰词的计算
      • 投射物(projectile):启用投射物相关计算逻辑
      • 图腾(totem)/陷阱(trap)/爆破装置(explosive):影响技能释放方式
      • 诅咒(curse)/持续伤害(duration):改变技能行为模式
  3. #mods指令

    • 作用:确保技能导出时包含关联的修饰词
    • 使用场景:几乎所有技能都需要此指令
  4. #baseMod指令

    • 特殊用途:处理不在statMap中的特殊修饰词
  5. #noGem指令

    • 应用场景:标识不可装备的"技能宝石"(如Bone Armour)

数据结构深度解析

核心数据表结构

  1. stats表

    • 存储技能的所有基础属性字段
    • 每个字段对应游戏中的一个具体属性值
  2. levels表

    • 结构特点:
      • 数组部分:与stats表字段一一对应
      • 命名字段:包含levelRequirement、damageEffectiveness等特殊属性
    • 示例解析(以火球术为例):
      [1] = { 
        0.80000001192093,  -- spell_minimum_base_fire_damage
        1.2000000476837,   -- spell_maximum_base_fire_damage
        25,                -- base_chance_to_ignite_%
        0,                 -- fireball_base_radius_up_to_+_at_longer_ranges
        damageEffectiveness = 2.4, 
        critChance = 6,
        ...
      }
      

数值插值机制

  1. 插值类型

    • 类型1:直接取值(最常见)
    • 类型2:线性插值
      statValue = round(prevStat + (nextStat - prevStat) * (actorLevel - prevReq) / (nextReq - prevReq))
      
    • 类型3:效果插值(用于伤害计算)
      (3.885209 + 0.360246 * (actorLevel - 1)) * 
      (grantedEffect.baseEffectiveness or 1) * 
      (1 + (grantedEffect.incrementalEffectiveness or 0)) ^ (actorLevel - 1)
      
  2. 实际应用示例

    • 以20级火球术为例:
      • 基础效果值计算得到1369.26
      • 最小伤害:1369.26 × 0.8 ≈ 1095
      • 最大伤害:1369.26 × 1.2 ≈ 1643

高级功能实现

技能部件系统

  1. 实现原理

    • 通过parts表定义技能的不同形态
    • 示例结构:
      parts = {
         { name = "形态1" },
         { name = "形态2" }
      }
      
  2. 修饰词关联

    • 使用SkillPart标签关联特定部件:
      { type = "SkillPart", skillPart = 2 }  -- 关联第二个部件
      

预处理函数(preFuncs)

  1. 函数类型

    • initialFunc:计算前初始化
    • preSkillTypeFunc:技能类型相关预处理
    • preDamageFunc:伤害计算前处理(最常用)
    • preDotFunc:持续伤害计算前处理
  2. 典型应用场景

    • 正义之火(Righteous Fire):需要预知玩家生命/能量护盾值
    • 燃烧箭(Burning Arrow):5层叠加乘数计算

技能添加实践指南

标准技能添加流程

  1. 在对应模板文件中添加#skill指令
  2. 添加#mods指令确保修饰词导出
  3. 执行数据导出操作合并游戏数据
  4. 处理未识别属性:
    • 检查SkillStatMap.lua
    • 必要时添加statMap表进行映射
  5. 按需添加其他指令

召唤物技能特殊处理

  1. 召唤物定义

    • Minion.txt中添加:
      • #monster指令定义基础属性
      • #limit设置召唤数量限制
      • #emit确保修饰词导出
  2. 技能关联

    • 在基础技能中添加minionList
    • 包含所有可召唤的召唤物名称
  3. 召唤物技能

    • 与普通技能添加方式相同
    • 同样需要添加到minion.txt

最佳实践建议

  1. 数据验证

    • 始终检查数值插值结果是否符合预期
    • 特别关注伤害效果计算公式的准确性
  2. 模板维护

    • 重要修改应同时更新模板文件和导出脚本
    • 避免直接修改自动生成的数据文件
  3. 复杂技能处理

    • 多阶段技能考虑使用parts系统
    • 需要特殊计算的技能合理使用preFuncs

通过深入理解这套技能系统架构,开发者可以更高效地为PathOfBuilding添加新技能或修改现有技能,确保计算结果的准确性和系统的稳定性。

PathOfBuilding Offline build planner for Path of Exile. PathOfBuilding 项目地址: https://gitcode.com/gh_mirrors/pa/PathOfBuilding

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

解然嫚Keegan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值