ItemPMT(Item Parameter Table)はPSOのクライアントとサーバーが共有するアイテムパラメータ表です。武器・鎧・盾・ユニット・マグ・消耗品の基本性能、名称の索引、装備条件、説明文、外観モデルを定義します。ItemPTとItemRTは出現条件と確率を扱い、アイテム自体の詳細はItemPMTから取得します。
ItemPMTはゲームのアイテム辞書に相当します。アイテムIDから次の情報を取得できます。
セーブデータ内のアイテムを読み込むとき、詳細を表示するとき、サーバーが装備条件を判定するときに使用します。
ItemPMTはPRS圧縮されたバイナリファイルで、PSOの各版に対応する形式があります。
ItemPMT-bb-v4.prs— PSOBB公式版・EphineaItemPMT-gc-v3.prs— GameCube版(Episode I & II)ItemPMT-gc-ep3.prs— Episode III(カードゲーム)ItemPMT-xb-v3.prs— Xbox版ItemPMT-pc-v2.prs— PC v2版ItemPMT-dc-v1.prs/ItemPMT-dc-v2.prs— Dreamcast v1・v2版武器のフィールドは大きく3つに分かれます。
+9なら9)鎧と盾は共通の構造を使い、別々のサブテーブルに格納します。各エントリは次を含みます。
min–maxの範囲内で変動+N)ユニットのエントリは比較的単純です。
/表記のユニット(例:HP/リストレイト、HP/Resurrect)の発動率またはクールダウン一部のユニットは数値加算ではなく個別の効果判定で動作します。例:スマートリンク、V501/V502、Trap Vision。ItemPMTに効果の数値を持たず、ゲームコードがIDを識別して専用効果を発動します。
マグのパラメータはItemPMTの中でも特徴的です。各マグのエントリは次を含みます。
マグの餌テーブルはItemPMT内の大きな表で、8つの餌テーブル×11種の餌で構成され、マグの種類ごとにいずれか1つのテーブルを参照します。各マスがDEF・POW・DEX・MIND・SYNC・IQの変化を指定します。
道具のエントリは最も単純で、主に次を含みます。
テクニックディスクも道具分類ですが、構造はテクニックIDとレベルの組で、所持上限は1固定です。
チャージ・スピリット・バーサーク・ガイスト・ヘル・デーモン・アレスト・カオス・ブリザード・バーニングなどは独立した表に格納され、ItemPMTからIDで参照されます。各エントリは次を含みます。
コモン武器のエクストラアタックはどう決まるか
武器のSpecial欄を直接読むのではなく、ItemPTがエリアに応じて0~5のランクを生成し、ItemPMTの対応する能力から選択します。たとえば坑道で拾った武器には1★のDraw、遺跡で拾った同じ武器には4★のGushが付くことがあります。エリアによって候補が異なります。
主要なアイテム以外にも、各種処理で参照する補助テーブルがあります。
レシピには使用アイテム×装備中の対象×生成結果と、追加条件を格納します。
この表はコンボ表とは別物です。N-N-H・N-H-Hなどのコンボ補正はクライアントに固定実装されています。ItemPMTでコンボに関係するのは、武器ごとの1バイトのbehavior_flagsのみで、コンボ禁止のビットを含みます(一部の武器は連続攻撃できません)。
杖などによるテクニックのダメージ・範囲補正。例として、サイコウォンドはラフォイエ・ラバータ・ラゾンデのダメージ+30%、グライドディヴァインはジェルン・ザルアの範囲+100%です。武器のtech_boostフィールドから参照します。
ユニットが参照する加算データです。ユニット本体はboost IDを保持し、ここから能力の種類と値を取得します。
職業ごとのテクニック習得上限です。例としてフォースはLv30ラフォイエ、ハンターはLv15までと説明されています。上限を超えるディスクは使用できません。
以下はPSOBB(V4)のItemPMT構造です。V1・V2・V3、DC・GC・XBでは配置に違いがありますが、用途は共通です。オフセットは16進数のバイト単位です。
TableOffsetsV3V4展開したItemPMTの最上位にある表で、各フィールドはサブテーブルへの4バイトのオフセットです。BBクライアントは起動時に読み込み、他の表を参照します。
| オフセット | フィールド | 型 | 説明 |
|---|---|---|---|
| 0x00 | weapon_table | u32 | 武器表→[{count, offset → [WeaponV4]}](0xED件) |
| 0x04 | armor_table | u32 | 鎧・盾の表(armors、shieldsの2組) |
| 0x08 | unit_table | u32 | ユニット表→[UnitV4] |
| 0x0C | tool_table | u32 | 道具表→[{count, offset → [ToolV4]}](0x1A件) |
| 0x10 | mag_table | u32 | マグ表→[MagV4] |
| 0x14 | v1_replacement_table | u32 | PSO v1からBBへのID置換表 |
| 0x18 | photon_color_table | u32 | フォトン色(0x20種、各0x24バイト) |
| 0x1C | weapon_range_table | u32 | 武器の射程・判定範囲表 |
| 0x20 | weapon_sale_divisor_table | u32 | 武器売価の除数→[float] |
| 0x24 | sale_divisor_table | u32 | 武器以外の売価除数 |
| 0x28 | mag_feed_table | u32 | マグの餌テーブル |
| 0x2C | star_value_table | u32 | アイテムID→レア度(☆数)、0x330件 |
| 0x30 | special_data_table | u32 | エクストラアタック定義→[Special] |
| 0x34 | weapon_effect_table | u32 | 武器のパッシブ効果(各0x10バイト) |
| 0x38 | stat_boost_table | u32 | ユニットの加算値→[StatBoost] |
| 0x3C | shield_effect_table | u32 | 盾のパッシブ効果(各8バイト) |
| 0x40 | max_tech_level_table | u32 | 職業ごとのテクニック上限 |
| 0x44 | combination_table | u32 | 合成・強化レシピ→[ItemCombination] |
| 0x48 | unknown_a1 | u32 | 未解析 |
| 0x4C | tech_boost_table | u32 | テクニック補正→[TechniqueBoost × 3] |
| 0x50 | unwrap_table | u32 | プレゼントの中身 |
| 0x54 | unsealable_table | u32 | 封印解除後の武器 |
| 0x58 | ranged_special_table | u32 | 射撃武器のエクストラアタック動作 |
ItemBaseV4武器・鎧・ユニット・マグ・道具の先頭12バイトは、この共通ヘッダーです。
| オフセット | フィールド | 型 | 説明 |
|---|---|---|---|
| 0x00 | id | u32 | アイテムID(名称文字列の索引も兼用) |
| 0x04 | type | u16 | モデル番号(クライアントの.njモデルID) |
| 0x06 | skin | u16 | テクスチャ番号 |
| 0x08 | team_points | u32 | チームポイント値 |
WeaponV4(0x2Cバイト)| オフセット | フィールド | 型 | 説明 |
|---|---|---|---|
| 0x00 | base | ItemBaseV4 | 基底ヘッダー(0x0Cバイト) |
| 0x0C | class_flags | u16 | 12職業の装備可否ビット(既定値0x00FF、全有効) |
| 0x0E | atp_min | u16 | 基礎ATP下限 |
| 0x10 | atp_max | u16 | 基礎ATP上限(実値は最小~最大の間で変動) |
| 0x12 | atp_required | u16 | 必要最低ATP |
| 0x14 | mst_required | u16 | 必要最低MST |
| 0x16 | ata_required | u16 | 必要最低ATA |
| 0x18 | mst | u16 | 武器のMST補正 |
| 0x1A | max_grind | u8 | 最大付加(+9なら9) |
| 0x1B | photon | u8 | フォトン種別(近接・射撃・法撃) |
| 0x1C | special | u8 | 既定のエクストラアタックID(special_data_tableの索引) |
| 0x1D | ata | u8 | ATA補正 |
| 0x1E | stat_boost_entry_index | u8 | stat_boost_tableの索引 |
| 0x1F | projectile | u8 | 射撃武器の弾ID |
| 0x20 | trail1_x / y | i8×2 | 武器の軌跡の開始位置 |
| 0x22 | trail2_x / y | i8×2 | 武器の軌跡の終了位置 |
| 0x24 | color | i8 | photon_color_tableの色索引 |
| 0x25 | unknown_a1 | u8×3 | 未解析 |
| 0x2A | tech_boost | u8 | tech_boost_tableの補正索引 |
| 0x2B | behavior_flags | u8 | 動作ビット:0x01コンボ不可/0x08属性不可 |
ArmorOrShieldV4(0x20バイト)| オフセット | フィールド | 型 | 説明 |
|---|---|---|---|
| 0x00 | base | ItemBaseV4 | 基底ヘッダー |
| 0x0C | dfp | u16 | 基礎DFP |
| 0x0E | evp | u16 | 基礎EVP |
| 0x10 | block_particle | u8 | 防御時パーティクルID |
| 0x11 | block_effect | u8 | 防御エフェクトID |
| 0x12 | class_flags | u16 | 装備可能職業ビット |
| 0x14 | required_level | u8 | 必要レベル |
| 0x15 | efr | u8 | 炎耐性 |
| 0x16 | eth | u8 | 雷耐性 |
| 0x17 | eic | u8 | 氷耐性 |
| 0x18 | edk | u8 | 闇耐性 |
| 0x19 | elt | u8 | 光耐性 |
| 0x1A | dfp_range | u8 | 追加DFP上限(+Nの最大値) |
| 0x1B | evp_range | u8 | 追加EVP上限 |
| 0x1C | stat_boost_entry_index | u8 | stat_boost_tableの索引 |
| 0x1D | tech_boost | u8 | テクニック補正の索引(tech_boost_tableへ) |
| 0x1E | flags_type | u8 | 動作フラグ(鎧0x01、盾0x01・0x02・0x03など) |
UnitV4(0x14バイト)| オフセット | フィールド | 型 | 説明 |
|---|---|---|---|
| 0x00 | base | ItemBaseV4 | 基底ヘッダー |
| 0x0C | stat | u16 | 主能力種別(StatBoostの01~0F、例:01=ATP) |
| 0x0E | stat_amount | u16 | 主能力の加算値 |
| 0x10 | modifier_amount | i16 | HP/リストレイトなどの発動しきい値・クールダウン |
| 0x12 | unused | u8×2 | パディング |
MagV4(0x1Cバイト)| オフセット | フィールド | 型 | 説明 |
|---|---|---|---|
| 0x00 | base | ItemBaseV4 | 基底ヘッダー |
| 0x0C | feed_table | u16 | mag_feed_tableの餌反応索引 |
| 0x0E | photon_blast | u8 | 既定のフォトンブラストID |
| 0x0F | activation | u8 | イベントの基礎発動率 |
| 0x10 | on_pb_full | u8 | PB満タン時のイベントID |
| 0x11 | on_low_hp | u8 | 低HP時のイベントID |
| 0x12 | on_death | u8 | 死亡時のイベントID |
| 0x13 | on_boss | u8 | ボス部屋進入時のイベントID |
| 0x14 | on_pb_full_flag | u8 | 0~4でsynchroと組み合わせた確率計算方式を指定 |
| 0x15 | on_low_hp_flag | u8 | 同上 |
| 0x16 | on_death_flag | u8 | 同上 |
| 0x17 | on_boss_flag | u8 | 同上 |
| 0x18 | class_flags | u16 | 装備可能職業ビット |
| 0x1A | unused | u8×2 | パディング |
マグの発動率は、まずsynchroからstep_synchro(0・15・25・30・35などの段階値)を求め、フラグで計算式を選択します。flag=0はactivation、flag=1はactivation+step_synchro、flag=2はstep_synchroなどを使います。
ToolV4(0x18バイト)| オフセット | フィールド | 型 | 説明 |
|---|---|---|---|
| 0x00 | base | ItemBaseV4 | 基底ヘッダー |
| 0x0C | amount | u16 | 量・効果値(メイト系はHP回復量、ディスクはテクニックレベル) |
| 0x0E | tech | u16 | テクニック系道具のテクニックID |
| 0x10 | cost | i32 | 店頭価格 |
| 0x14 | item_flags | u32 | ビットフラグ:0x01使用可能/0x08アンドロイド使用可/0x10街で使用可/0x20ボス部屋で使用可/0x40チャレンジで使用可/0x80レア |
Special(4バイト)| オフセット | フィールド | 型 | 説明 |
|---|---|---|---|
| 0x00 | type | u16 | 能力種別ID(チャージ・スピリット・バーサーク・ヘルなど) |
| 0x02 | amount | u16 | 能力強度(成功率・追加ダメージなど) |
StatBoost(6バイト)ユニット・武器・鎧はstat_boost_entry_indexで本表を参照します。1レコードに2能力を格納できますが、DCの2000年11月版以降はループが1項目のみを読むため、実際には最初の能力だけ有効です。
| オフセット | フィールド | 型 | 説明 |
|---|---|---|---|
| 0x00 | stats[0..1] | u8×2 | 2つの能力種別ID(下記) |
| 0x02 | amounts[0..1] | u16×2 | 対応する加算値 |
能力種別ID:
| 値 | 意味 | 値 | 意味 |
|---|---|---|---|
| 0x01 | ATP+ | 0x09 | ATP− |
| 0x02 | ATA+ | 0x0A | ATA− |
| 0x03 | EVP+ | 0x0B | EVP− |
| 0x04 | DFP+ | 0x0C | DFP− |
| 0x05 | MST+ | 0x0D | MST− |
| 0x06 | HP+ | 0x0E | HP− |
| 0x07 | LCK+ | 0x0F | LCK− |
| 0x08 | 全能力+(HPを除く) | 0x10 | 全能力−(HPを除く) |
ItemCombination(0x10バイト)| オフセット | フィールド | 型 | 説明 |
|---|---|---|---|
| 0x00 | used_item | u8×3 | 使用道具ID(data1[0..2]) |
| 0x03 | equipped_item | u8×3 | 装備中の対象アイテムID |
| 0x06 | result_item | u8×3 | 合成結果のアイテムID |
| 0x09 | mag_level | u8 | 必要マグ総レベル |
| 0x0A | grind | u8 | 対象武器の必要付加 |
| 0x0B | level | u8 | 必要キャラクターレベル |
| 0x0C | char_class | u8 | 職業制限 |
| 0x0D | unused | u8×3 | パディング |
MagFeedResult(8バイト)8つの餌テーブルはそれぞれ11種の餌を並べたもので、各マスがMagFeedResultです。
| オフセット | フィールド | 型 | 説明 |
|---|---|---|---|
| 0x00 | def | i8 | DEF増減 |
| 0x01 | pow | i8 | POW増減 |
| 0x02 | dex | i8 | DEX増減 |
| 0x03 | mind | i8 | MIND増減 |
| 0x04 | iq | i8 | IQ増減 |
| 0x05 | synchro | i8 | シンクロ増減 |
| 0x06 | unused | u8×2 | パディング |
検索画面を読み込めませんでした。ページを再読み込みしてください。