ItemPMT 物品主参数表

← 返回首页

ItemPMT(Item Parameter Table)是 PSO 客户端和服务器共享的「物品属性表」。 游戏里每一件武器、铠甲、盾牌、插件、mag、消耗品的基础属性、名称索引、装备要求、描述文本、外观模型全部定义在这张表里。 掉落分布(ItemPT)和稀有池(ItemRT)都不管「物品长什么样」,它们只管「什么时候、以什么概率掉」,最终要去 ItemPMT 里查这件物品的所有详细参数。

总览

ItemPMT 可以理解为游戏的「物品字典」。任意物品 ID 拿到手,去 ItemPMT 查一次就能得到:

每次客户端把物品读到存档、每次玩家查看物品详情、每次服务器判定能否装备,都依赖这张表。

文件与版本

ItemPMT 是一个用 PRS 压缩封装的二进制文件,不同版本的 PSO 各有一份:

武器(Weapon)

武器条目保存的字段大致分三类:

分类字段

战斗相关字段

装备限制字段

铠甲(Armor / Frame)与盾牌(Shield / Barrier)

铠甲和盾牌使用相同的数据结构,只是分别存放在两张不同的子表里。每个条目包含:

插件(Unit)

插件是一个相对简单的条目:

某些插件是「判定型」而不是「数值型」,比如 Smartlink(灵感之环)、V501/V502Trap Vision。 它们在 ItemPMT 里并没有数值字段,而是被游戏代码按 ID 硬编码识别,触发特殊效果。

Mag

Mag 的参数表是 ItemPMT 里最特别的一块。每个 Mag 条目包含:

Mag 的「喂养规则」(feed table)在 ItemPMT 里是一张巨大的表:Mag 型号 × 29 种食物,每格决定吃这个食物时 DEF/POW/DEX/MIND/SYNC/IQ 怎么变。

消耗品(Tool)

消耗品条目最简单,基本只有:

魔法书(Technique Disk)虽然归在「Tool」大类,但结构不太一样:它是一个「技能编号 + 等级」的小结构,堆叠上限固定为 1。

特殊能力表(Special Table)

武器的特殊能力(Charge / Spirit / Berserk / Geist / Hell / Demon's / Arrest / Chaos / Blizzard / Burning…) 是一张独立的表,ItemPMT 内部用编号引用它。每个特殊能力包含:

普通武器的 special 是怎么来的?
不是从 ItemPMT 直接读 Special 字段,而是由 ItemPT 根据区域生成一个「星级」(0–5 星),然后去 ItemPMT 的特殊能力表里挑一个对应星级的能力。 所以你在坑道捡到的 Gush 可能带 1 星的 Charge,在遗迹捡到的同型号可能带 3 星的 Berserk — 同一把武器,不同区域出来的 special 池不一样。

其他子表

除了上面几大类物品条目外,ItemPMT 顶层还挂着若干小一些的「辅助表」,给游戏代码在各种场景下查:

合成 / 升级(Item Combination Table)

存的是一组「用哪件道具 × 对哪件已装备物品 × 得到什么」的配方记录,附加一些约束条件:

注意这张表不是连击表 —— PSO 的 N-N-H / N-H-H 攻击序列修正是客户端硬编码的,不在 ItemPMT 里; ItemPMT 里和连击有关的只有每件武器一个字节的 behavior_flags,其中一个 bit 表示「此武器不能参与连击」(例如某些特殊武器同一招只能用一次)。

Tech Boost Table

法杖对特定技能的伤害/等级加成。典型例子:Psycho Wand 降 Simple/Mid 攻击技能等级上限、Glide Divine 对 Grants 的加成等。武器条目里有一个 tech_boost 字段指向这张表。

Special Data / Weapon Effect / Shield Effect

Stat Boost Table

插件条目引用的实际加成数据 —— 插件本体只存一个 boost ID,去这张表才能拿到「加哪个属性、加几点」。

Max Tech Level Table

每个职业每种技能的学习上限(例如 FO 系可以学到 Lv30 Rafoie,而 HU 系只能学到 Lv15)。角色尝试使用超过上限的技能书时游戏会拒绝。

Photon Color / Weapon Range / Star Value

Unsealable / Unwrap

Sale Divisor / V1 Replacement

数据结构

以下结构体描述的是 PSOBB (V4) 的 ItemPMT 二进制格式。其它版本(V1/V2/V3、DC/GC/XB)结构略有不同但语义一致。偏移量以 16 进制字节表示。

顶层偏移表 TableOffsetsV3V4

ItemPMT 文件解压后的顶端就是这张表,每个字段都是一个指向子表的 4 字节偏移指针。BB 客户端启动时会读取它来定位所有其它子表。

偏移字段类型说明
0x00weapon_tableu32武器表指针 → [{count, offset → [WeaponV4]}](0xED 项)
0x04armor_tableu32铠甲/盾牌表指针(两组:armors, shields)
0x08unit_tableu32插件表指针 → [UnitV4]
0x0Ctool_tableu32消耗品表指针 → [{count, offset → [ToolV4]}](0x1A 项)
0x10mag_tableu32Mag 表指针 → [MagV4]
0x14v1_replacement_tableu32PSO v1 老 ID → BB 新 ID 的替换表
0x18photon_color_tableu32光子颜色表(0x20 种,每项 0x24 字节)
0x1Cweapon_range_tableu32武器射程/判定范围表
0x20weapon_sale_divisor_tableu32武器售价除数 → [float]
0x24sale_divisor_tableu32非武器售价除数
0x28mag_feed_tableu32Mag 喂食表
0x2Cstar_value_tableu32物品 ID → 星级 (☆ 数量),0x330 项
0x30special_data_tableu32特殊能力定义表 → [Special]
0x34weapon_effect_tableu32武器被动效果表(每项 0x10 字节)
0x38stat_boost_tableu32插件加成数据 → [StatBoost]
0x3Cshield_effect_tableu32盾牌被动效果表(每项 8 字节)
0x40max_tech_level_tableu32每职业每技能的学习上限
0x44combination_tableu32合成/升级配方 → [ItemCombination]
0x48unknown_a1u32未解析
0x4Ctech_boost_tableu32法杖对技能的加成 → [TechniqueBoost × 3]
0x50unwrap_tableu32礼物盒拆包结果
0x54unsealable_tableu32封印武器解封结果
0x58ranged_special_tableu32远程武器的特殊能力行为

物品基础结构 ItemBaseV4

所有具体物品条目(武器/铠甲/插件/Mag/消耗品)的前 12 字节都是这张共用基础头部:

偏移字段类型说明
0x00idu32物品 ID(同时也是名称文本档里的字符串索引)
0x04typeu16模型编号(对应客户端 .nj 模型 ID)
0x06skinu16贴图编号
0x08team_pointsu32队伍点数价格(团战相关)

武器 WeaponV4(0x2C 字节)

偏移字段类型说明
0x00baseItemBaseV4基础头部(0x0C 字节)
0x0Cclass_flagsu1612 职业可装备位图(默认 0x00FF 全开)
0x0Eatp_minu16基础攻击力下限
0x10atp_maxu16基础攻击力上限(实际值在 min–max 之间随机)
0x12atp_requiredu16装备所需最低 ATP
0x14mst_requiredu16装备所需最低 MST
0x16ata_requiredu16装备所需最低 ATA
0x18mstu16武器自带的 MST 加成
0x1Amax_grindu8磨石上限(+9 就是 9)
0x1Bphotonu8光子类型(决定近战/远程/技能系)
0x1Cspecialu8默认特殊能力编号(索引 special_data_table)
0x1Datau8命中加成
0x1Estat_boost_entry_indexu8指向 stat_boost_table 的索引
0x1Fprojectileu8远程武器的投射物 ID
0x20trail1_x / yi8×2武器光迹起点偏移
0x22trail2_x / yi8×2武器光迹终点偏移
0x24colori8颜色索引(进入 photon_color_table)
0x25unknown_a1u8×3未解析
0x2Atech_boostu8技能加成索引(进入 tech_boost_table)
0x2Bbehavior_flagsu8行为位:0x01 禁止连击 / 0x08 不能带属性

铠甲 & 盾牌 ArmorOrShieldV4(0x20 字节)

偏移字段类型说明
0x00baseItemBaseV4基础头部
0x0Cdfpu16基础防御力
0x0Eevpu16基础回避力
0x10block_particleu8格挡粒子特效 ID
0x11block_effectu8格挡效果 ID
0x12class_flagsu16可装备职业位图
0x14required_levelu8所需等级
0x15efru8火抗
0x16ethu8雷抗
0x17eicu8冰抗
0x18edku8暗抗
0x19eltu8光抗
0x1Adfp_rangeu8精炼 DFP 上限(+N 能加的最大值)
0x1Bevp_rangeu8精炼 EVP 上限
0x1Cstat_boost_entry_indexu8stat_boost_table 索引
0x1Dtech_boostu8技能加成(用于 Psycho Wand 类的铠甲配对)
0x1Eflags_typeu8行为标志(铠甲 0x01 / 盾牌 0x01 / 0x02 / 0x03 等)

插件 UnitV4(0x14 字节)

偏移字段类型说明
0x00baseItemBaseV4基础头部
0x0Cstatu16主 stat 类型(对应 StatBoost 的 01–0F 编码,如 01=ATP)
0x0Estat_amountu16主 stat 加成数值
0x10modifier_amounti16触发型插件的阈值或冷却(如 HP/Restorate)
0x12unusedu8×2填充

Mag MagV4(0x1C 字节)

偏移字段类型说明
0x00baseItemBaseV4基础头部
0x0Cfeed_tableu16喂食反应表索引(进入 mag_feed_table)
0x0Ephoton_blastu8默认 Photon Blast ID
0x0Factivationu8事件触发基础概率
0x10on_pb_fullu8PB 满时触发的事件 ID
0x11on_low_hpu8低 HP 时触发的事件 ID
0x12on_deathu8死亡时触发的事件 ID
0x13on_bossu8进入 BOSS 房时触发的事件 ID
0x14on_pb_full_flagu80–4 决定上面概率的计算方式(和 synchro 结合)
0x15on_low_hp_flagu8同上
0x16on_death_flagu8同上
0x17on_boss_flagu8同上
0x18class_flagsu16可装备职业位图
0x1Aunusedu8×2填充

Mag 事件触发概率计算:先根据 synchro 值算出 step_synchro(0/15/25/30/35…分档),然后按 flag 值决定实际概率 —— flag=0 取 activation、flag=1 取 activation+step_synchro、flag=2 取 step_synchro…

消耗品 ToolV4(0x18 字节)

偏移字段类型说明
0x00baseItemBaseV4基础头部
0x0Camountu16数量/效果值(对 mate 类是回血量,对技能书是技能等级)
0x0Etechu16技能类 tool 的技能编号
0x10costi32商店价格
0x14item_flagsu32位标志:0x01 可使用 / 0x08 Android 可用 / 0x10 市镇可用 / 0x20 BOSS 房可用 / 0x40 挑战模式可用 / 0x80 稀有

特殊能力 Special(4 字节)

偏移字段类型说明
0x00typeu16能力类型编号(Charge / Spirit / Berserk / Hell…)
0x02amountu16能力强度值(发动概率、额外伤害等)

属性加成 StatBoost(6 字节)

插件和武器/铠甲都通过 stat_boost_entry_index 引用本表的一条记录。每条记录最多能同时加两项属性(但 DC 11/2000 之后 Sega 把循环改成只遍历一项,所以实际只第一项生效)。

偏移字段类型说明
0x00stats[0..1]u8×2两个 stat 类型编号(见下)
0x02amounts[0..1]u16×2对应的加成数值

Stat 类型编号:

含义含义
0x01ATP+0x09ATP−
0x02ATA+0x0AATA−
0x03EVP+0x0BEVP−
0x04DFP+0x0CDFP−
0x05MST+0x0DMST−
0x06HP+0x0EHP−
0x07LCK+0x0FLCK−
0x08所有 +(HP 除外)0x10所有 −(HP 除外)

合成配方 ItemCombination(0x10 字节)

偏移字段类型说明
0x00used_itemu8×3使用的道具 ID(data1[0..2])
0x03equipped_itemu8×3已装备的目标物品 ID
0x06result_itemu8×3合成结果物品 ID
0x09mag_levelu8所需 Mag 总等级
0x0Agrindu8目标武器所需磨石数
0x0Blevelu8所需角色等级
0x0Cchar_classu8职业限制
0x0Dunusedu8×3填充

Mag 喂食结果 MagFeedResult(8 字节)

喂食表按「Mag 型号 × 食物种类(11 种)」组织,每个格子是一条 MagFeedResult:

偏移字段类型说明
0x00defi8DEF 增减
0x01powi8POW 增减
0x02dexi8DEX 增减
0x03mindi8MIND 增减
0x04iqi8IQ 增减
0x05synchroi8同调率增减
0x06unusedu8×2填充

相关页面