カード・エンチャントの追加 - roratorio-hub/ratorio GitHub Wiki

8844c1c の改善によりカード追加手順が多少変化しています
このページの内容はまだ古いので更新する予定です

ROラトリオ計算機ではエンチャントはカードの一種として扱われます
今までになかった新しいカードやエンチャントがゲームに実装された場合
そのデータを card.dat.js、itemset.dat.js、timeitem.dat.js などの設定ファイルに
追加することで使用できるようになります

追加するデータ配列は複雑なので
データ配列を作成するのにツールアシストが必要です
このページではカード・エンチャントデータ生成ツールである
/util/card_craft.py の使用方法を解説します

理想的にはpythonなどの実行環境を必要とせず
Webブラウザ上で完結するツールに移行したいと考えていますが
今はこのツールで作業を行っています

1. ツールを使う準備

  1. python をインストールしてください
  2. このリポジトリをダウンロードしてください

このツールは python 3.10.8 で動作確認しています
もし動かなければ同じバージョンの python をインストールして試してみてください

2. 登録するカード・エンチャントデータの作成

以下の凡例を参考にして
追加したいカード・エンチャントの情報を card.yaml に記述してください

card_list:  
  - name: 潜在覚醒(アースストレインI)  
    desc: ""  
    type: エンチャント  
    capabilities:  
      - name: スキルダメージ増加  
        skill: アースストレイン  
        value: 1  
        per_lv: 3  
    set_list:  
      - set:  
        entity_list:  
          - card_name: 真理の解放  
        capabilities:  
          - name: スキルクールタイムミリ秒減少  
            skill: アースストレイン  
            value: 3000  

ルート要素の定義

  • card_list [必須]
    card.yaml の先頭に必ず1行だけ記述します
    セクション以下に複数のカード・エンチャント情報を記述できます

基本的なカード・エンチャント情報の定義

  • name [必須]
    計算機に表示されるカード・エンチャントの名前

  • desc [オプション]
    カード・エンチャントの説明欄に表示されるテキスト
    capabilitiesで実現出来ない機能や注釈を記入します

  • type [必須]
    カードの装着部位を指定します
    指定出来る部位は カード部位コード.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 [オプション]
    発動するセット効果の能力を指定します
    記述ルールは カード・エンチャントが持つ特殊能力の定義 と同じです

3. カード・エンチャントデータの登録

card.yaml を書き終えたら card_craft.py を実行してください
問題が無ければ以下の2つのファイルが出力されます
セット効果を定義していない場合は空のファイルが出力されますが正常です

  • output_card.dat.js
  • output_itemset.dat.js

ファイルの中身を確認したらそれぞれ計算機のデータファイルに追記してください

output_card.dat.js の追記先

/roro/m/js/card.dat.js の末尾に追記します
例えばファイル末尾が以下のような状態の場合

	CardObjNew[2897] = [2897,4,"ゴブリンキング","",600000070,2,42000000070,20,0];  
	CardSortOBJ[4].push(2897);  
	CardObjNew[2898] = [2898,100,0,"",15,50,220,203,0];	  

    この部分に output_card.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 の内容を全て貼り付けてください  

})();  

4. 計算機の動作確認

/index.html をブラウザで開いて
登録したアイテムが計算機上で正しく振る舞えているか確認してください