アイテムの追加 - roratorio-hub/ratorio GitHub Wiki
今までになかった新しいアイテムがゲームに実装された場合
そのデータを item.dat.js
、itemset.dat.js
、timeitem.dat.js
、mig.enchlist.dat.js
などの設定ファイルに
追加することで使用できるようになります
追加するデータ配列は複雑なので
データ配列を作成するのにツールアシストが必要です
このページではアイテムデータ生成ツールである
/util/item_craft.py
の使用方法を解説します
理想的にはpythonなどの実行環境を必要とせず
Webブラウザ上で完結するツールに移行したいと考えていますが
今はこのツールで作業を行っています
1. ツールを使う準備
- python をインストールしてください
- このリポジトリをダウンロードしてください
このツールは python 3.10.8 で動作確認しています
もし動かなければ同じバージョンの python をインストールして試してみてください
2. 登録するアイテムデータの作成
以下の凡例を参考にして
追加したいアイテムの情報を item.yaml
に記述してください
item_list:
- name: 情熱あふれるラビットリボン
yomi: シヨウネツアフレルラヒツトリホン
desc: Lv250以上で発動する効果は計算機未実装
type: 上段
slot: 1
weapon_lv: 0
atk_or_def: 10
weight: 50
required_lv: 200
required_job: 4次職 拡張4次職
capabilities:
- name: Con上昇
value: 1
at_refine: 5
per_refine: 1
- name: MAXHP増加
value: 10
at_status_110: Vit
- name: スキル使用可能
skill: ジュデックス
skill_lv: 3
set_list:
- set:
entity_list:
- card_name: 真理の解放
capabilities:
- name: スキルダメージ増加
skill: ジュデックス
value: 10
enchant:
name: スペシャルエンチャント(オーブ)
slot_list:
- slot: 4
refine: 0
enchant_list:
- name: "潜在解放(トルバドゥール&トルヴェールI)"
- slot: 3
refine: 8
enchant_list:
- name: "Str+10"
- slot: 2
refine: 9
enchant_list:
- name: "Str+10"
ルート要素の定義
- item_list [必須]
item.yaml
の先頭に必ず1行だけ記述します
セクション以下に複数のアイテム情報を記述できます
基本的なアイテム情報の定義
-
name [必須]
計算機に表示される装備アイテムの名前 -
yomi [必須]
装備アイテムの読み仮名
アからンまでの50音のカタカナで記入します
この値に従ってアイテムが並び替えられます -
desc [オプション]
装備アイテムの説明欄に表示されるテキスト
capabilitiesで実現出来ない機能や注釈を記入します -
type [必須]
装備の部位を指定します
指定出来る部位は装備部位コード.yaml
に定義されています -
slot [必須]
装備のスロットを 0 から 4 の間で指定します
表示だけなので 0 を指定してもカードを装着できます -
weapon_lv [必須]
武器レベルを 1 から 4 の間で指定します
防具の場合は 0 を指定します -
atk_or_def [必須]
武器の場合は ATK を
防具の場合は DEF を指定します -
weight [必須]
アイテムの重量を指定します -
required_lv [必須]
アイテムが装備可能になる最低BaseLvを指定します -
required_job [必須]
アイテムを装備出来る職業タイプを指定します
指定できる職業タイプは装備可能コード.yaml
に定義されています
アイテムが持つ特殊能力の定義
-
capabilities [オプション]
特殊能力がある場合はこのセクションを記述します
セクション以下に複数の特殊能力を記述できます -
name [オプション]
特殊能力の名前を指定します
指定できる特殊能力は発動能力コード.yaml
に定義されています -
value [オプション]
特殊能力の値を指定します -
per_lv [オプション]
BaseLvがいくつ上がる度に特殊能力が発動するのか
数値で指定します -
at_lv [オプション]
BaseLvがいくつ以上のときに特殊能力が発動するのか
数値で指定します -
per_refine [オプション]
精錬値がいくつ上がる度に特殊能力が発動するのか
数値で指定します -
at_refine [オプション]
精錬値がいくつ以上のときに特殊能力が発動するのか
数値で指定します -
at_status_110 [オプション]
どの純粋なステータスが110以上のときに発動するのか
Str, Agi, Vit, Int, Dex, Luk
のいずれかを指定します -
at_status_130 [オプション]
どの純粋なステータスが130以上のときに発動するのか
Str, Agi, Vit, Int, Dex, Luk
のいずれかを指定します -
at_sp_status_100 [オプション]
どの純粋な特性ステータスが100以上のときに発動するのか
Pow, Sta, Wis, Spl, Con, Crt
のいずれかを指定します -
skill [オプション]
特定のスキルを対象にとる能力の場合スキル名を指定します -
skill_lv [オプション]
特定のスキルを使用可能になる能力の場合スキルレベルを数値で指定します
セット効果の定義
-
set_list [オプション]
他のアイテムやカード・エンチャントとセットで装備した時に
発動する効果がある場合はこのセクションを記述します
セクション以下に複数のセット効果を記述できます -
set [オプション]
セット効果を一つ定義する度に記述します -
entity_list [オプション]
セット効果が発動するために必要な装備の組み合わせを定義する度に記述します
このセクション以下に記述されたアイテム、カード・エンチャントは
AND 条件で評価されます -
card_name [オプション]
セット効果が発動するために必要なカード・エンチャント名を指定します -
item_name [オプション]
セット効果が発動するために必要なアイテム名を指定します -
capabilities [オプション]
発動するセット効果の能力を指定します
記述ルールはアイテムが持つ特殊能力の定義
と同じです
エンチャントの定義
-
enchant [オプション]
装備にエンチャントできる場合はこのセクションを記述します
セクション以下に複数の種類のエンチャントを記述できます -
name [オプション]
エンチャントの種類を記述します -
slot_list [オプション]
セクション以下に最大 3 つまでエンチャントスロットを定義できます -
slot [オプション]
エンチャントスロットの位置を 4, 3, 2 のいずれかで指定します -
refine [オプション]
エンチャントが可能になる精錬値を指定します
精錬値の制限がない場合は 0 を指定します -
enchant_list [オプション]
エンチャントスロットにセットすることが出来るエンチャントを記述します
セクション以下に複数のエンチャントを記述できます -
name [オプション]
エンチャント名を記述します
3. アイテムデータの登録
item.yaml
を書き終えたら item_craft.py
を実行してください
問題が無ければ以下の3つのファイルが出力されます
セット効果やエンチャントを定義していない場合は空のファイルが出力されますが正常です
- output_item.dat.js
- output_itemset.dat.js
- output_mig.enchlist.dat.js
ファイルの中身を確認したらそれぞれ計算機のデータファイルに追記してください
output_item.dat.js の追記先
/roro/m/js/item.dat.js
の末尾に追記します
例えばファイル末尾が以下のような状態の場合
ItemObjNew[5031] = [5031,50,192,10,0,1,50,200,"","","",100230,1,0];
ItemObjNew[5032] = [5032,50,192,10,0,1,50,200,"","","",100230,1,0];
この部分に output_item.dat.js の内容を全て貼り付けてください
})();
output_itemset.dat.js の追記先
/roro/m/js/itemset.dat.js
に追記します
例えばファイル末尾が以下のような状態の場合
w_SE[2470] = [5029,5027,-2662,];
ItemIdToSetIdMap[5027] = [2469,2470,];
この部分に output_itemset.dat.js の内容を全て貼り付けてください
})();
output_mig.enchlist.dat.js の追記先
/roro/m/js/data/mig.enchlist.dat.js
に追記します
例えばファイル末尾が以下のような状態の場合
g_constDataManager.enchListDataManager.sourceArray[635] = [635,-1,0,0,["スペシャルエンチャント(モチモチ)","C3y4C2h1I3A4J5D2h1J5D5G5D2G5D2"](/roratorio-hub/ratorio/wiki/"スペシャルエンチャント(モチモチ)","C3y4C2h1I3A4J5D2h1J5D5G5D2G5D2"),[],[[174,[50,[5033](/roratorio-hub/ratorio/wiki/[174,[50,[5033)],,[[178,[27,[4](/roratorio-hub/ratorio/wiki/[178,[27,[4)],,[[187,[59,7],[60,4](/roratorio-hub/ratorio/wiki/[187,[59,7],[60,4),,[[186,[51,[554,](/roratorio-hub/ratorio/wiki/[186,[51,[554,)],,[]]]]]],[178,[27,[3](/roratorio-hub/ratorio/wiki/178,[27,[3)],,[[187,[59,8],[60,4](/roratorio-hub/ratorio/wiki/[187,[59,8],[60,4),,[[186,[51,[554,](/roratorio-hub/ratorio/wiki/[186,[51,[554,)],,[]]]]]],[178,[27,[2](/roratorio-hub/ratorio/wiki/178,[27,[2)],,[[187,[59,9],[60,4](/roratorio-hub/ratorio/wiki/[187,[59,9],[60,4),,[[186,[51,[554,](/roratorio-hub/ratorio/wiki/[186,[51,[554,)],,[]]]]]],]]],[]];
g_constDataManager.enchListDataManager.reverseResolveArrayItemId[5033] = [635];
この部分に output_mig.enchlist.dat.js の内容を全て貼り付けてください
})();
しかし、アイテム毎にエンチャントの定義を生成するのは悪手かもしれません
フィデスエンチャントやグレイシアエンチャントのように
一つのエンチャント定義に複数のアイテムが紐づけられるパターンが多いためです
エンチャントからアイテムを拾い集めてデータを組み立てたほうが良いかもしれないので
今後ツールを改修する可能性があります
4. 計算機の動作確認
/index.html
をブラウザで開いて
登録したアイテムが計算機上で正しく振る舞えているか確認してください