見出し画像

【ファンリビ】未加入キャラや未開放ストーリーを解放する方法について(オフライン版)【ファンタジア・リビルド】

2021/12/17にサービスを終了した「ファンタジア・リビルド」のオフライン版の未加入キャラや未開放ストーリーを解放する方法の備忘録。
備忘録故にざっくり。iosは対象外です。
※冒険の思い出を穢してしまう可能性大です。了承した上で閲覧お願いします

前提・注意事項

大前提として未所持キャラ等を表示するには該当のAssetファイルが必要で、改変したとしてもそれが無いと表示されることはないので注意。サ終前に一括ダウンロードしていれば、基本問題ないと思う。

本記事ではcached_responseフォルダ内にあるJSONファイルを改変することで、ゲームに表示されるデータを変えます。誤った記述をした場合、最悪タイトル以降進めなくなる可能性があるためバックアップ推奨です。

また、サ終してるとはいえデータ改ざんを行うので、利用規約に触れる可能性があります。行う際は自己責任でお願いします。

自分のデータじゃなくなってもいいから、全キャラ開放したい!という方はこちらからcached_responseフォルダをダウンロードして、自分の端末のものと置き換えてください。起動して異常がなければ以下の画像のようになると思います。

プロフィール
全90キャラ

準備するもの

①cached_response

サービス終了前にオフライン移行した際、作成されるファイル群。タイトルタップ時に読み込まれるフォルダで、ユーザー情報やキャラ所持情報などのファイルが格納されている。

②JSON整形ソフト(エディター等)

ファイルを開くと文字がギッシリと詰められており、そのままでは編集が困難な状態のため、見やすいよう整形する必要がある。WEBサービスのJSON Editor OnlineJSON Pretty Linterなどで出来なくはないが、置換機能を使う必要が出てくるので、VSCodeなどのエディターを使った方がスムーズに行くと思われる。
※本記事ではVSCodeを使用します。

整形前の「response_player_get.json」ファイル
整形後の「response_player_get.json」ファイル
コード上で右クリック>ドキュメントのフォーマット


ファイル解説・手順

①network_end

タイトル画面タッチ後にサービス終了バナーが表示されないようにするファイル。中身は「end」のみ記述されている簡素なもの。

「network_end」ファイルがない場合
「network_end」ファイル内


②キャラ図鑑(response_book_character)

キャラ図鑑の表示の有無を決めるファイル。未所持キャラであっても記述はされており、"visibility"の値を基準としてキャラ図鑑に表示するかを決めている。

"visibility"の値が0のときは「?」、1は「閲覧制限」、2にすることで閲覧可能になる。また、未所持キャラの値を2にするとステータスは見れるが、プロフィールとボイスは閲覧できない。「response_player_get」に該当キャラを記述する必要がある。

"visibility"の値による状態
「response_player_get」にキャラ情報を記述していない状態のプロフィール

よほどの理由がない限り"visibility"の値は2固定で良い。エディタの置換機能使用して、「"visibility": 0」と「"visibility": 1」を「"visibility": 2」に置換する。

VSCodeで置換


③フラグメント図鑑(response_book_fragment)

フラグメント図鑑の表示の有無を決めるファイル。未所持フラグメントであっても記述はされており、"visibility"の値を変えることで表示の切り替えが可能。

手順については②のキャラ図鑑と同じことをすればいいので省略。

④作品図鑑(response_book_opus)

作品図鑑で表示する作品を決めるファイル。

"visibility"の値を変更しても表示が消えたりなどはしない。逆に"id"の値を変更することで作品図鑑で表示される作品タイトルを変えられるが、特に意味はない。

変更前
"id"を全て1に変更した場合


⑤ストーリー図鑑(response_book_story)

ストーリー図鑑の表示の有無を決めるファイルで、メイン、キャラ、イベント全てのストーリーを制御している。閲覧したことがなくても記述はされており、"visibility"の値を変えることで表示の切り替えが可能。

こちらの手順も②、③同様、"visibility"の値を2に置換することで全てのストーリーを解放出来る。


⑥プレイヤー・キャラ・アイテム情報(response_player_get)

プレイヤー情報、所持キャラクター、フラグメント、アイテム等が記述されているファイル。これを改変することで未加入キャラを加入させることなどが出来る。
このファイルで行えることは非常に多すぎるので、今回はキャラクター追加、スキン追加、リビルド状態の変更と秘密メモの解放についてのみの解説になります。

また、0から記述するのは非常に高いと思いますので、このリンクに全キャラが記述してあるresponse_player_getファイルを上げました。キャラを追加する際は、このファイルの中身から該当箇所をコピーして、自分のファイルにペーストするという流れになります。

◎キャラクターを追加する


例として以下のデータにサンタリナを追加します。

サ終前に作成したデータ

1.エディタの全体検索で「sly_linai_002」を検索して該当箇所を検索する。

上記のリンクからダウンロード出来るresponse_player_getファイルの中を検索。

2.{}を含むオブジェクトをコピーする。
possession_id、player_idなどユーザー毎固有の要素が入っていて、自分のものに合わせないといけないかと思うが、異なっていても問題は起きないのでそのままでOK。
下のは今回コピーしたサンタリナのコード

{
            "intimacy_phy_atk": 0,
            "obtain": 5,
            "ex_lv": 10,
            "rebuild_ex_material": "",
            "next_exp": 0,
            "current_phy_def": 4725,
            "ss": {
                "enh": [
                    0
                ],
                "lv": 5,
                "skill_candidate": [
                    "spe_sly_linai_002_lv05"
                ],
                "skill_group_id": "spe_sly_linai_002"
            },
            "enhanced_spe_def": 550,
            "heroine": 0,
            "ps": [
                {
                    "enh": [
                        0
                    ],
                    "released": true,
                    "skill_candidate": [
                        "a_10042"
                    ],
                    "skill_group_id": "a_10042",
                    "visible": false
                },
                {
                    "enh": [
                        0
                    ],
                    "released": true,
                    "skill_candidate": [
                        "a_10066"
                    ],
                    "skill_group_id": "a_10066",
                    "visible": false
                },
                {
                    "enh": [
                        0
                    ],
                    "released": true,
                    "skill_candidate": [
                        "b_00054"
                    ],
                    "skill_group_id": "b_00054",
                    "visible": false
                },
                {
                    "enh": [
                        0
                    ],
                    "released": true,
                    "skill_candidate": [
                        "s_00036"
                    ],
                    "skill_group_id": "s_00036",
                    "visible": true
                }
            ],
            "rebuild": 4,
            "enhanced_hp": 550,
            "lv": 100,
            "intimacy_spe_def": 50,
            "role": [
                {
                    "released": true
                },
                {
                    "released": true
                },
                {
                    "released": true
                },
                {
                    "released": true
                }
            ],
            "cs": [
                "cmb_3_xmas_01"
            ],
            "intimacy_spe_atk": 100,
            "lv_max": 100,
            "rebuild_cost": 0,
            "character_id": "sly_linai_002",
            "flavor": [
                {
                    "released": true
                },
                {
                    "released": true
                },
                {
                    "released": true
                },
                {
                    "released": true
                },
                {
                    "released": true
                },
                {
                    "released": true
                }
            ],
            "thumbnail_image": 1,
            "current_spe_atk": 7895,
            "enhanced_phy_def": 550,
            "rs": {
                "enh": [
                    0
                ],
                "lv": 10,
                "skill_candidate": [
                    "rot_sly_linai_002_lv10"
                ],
                "skill_group_id": "rot_sly_linai_002"
            },
            "ex_lv_max": 10,
            "official_member": true,
            "player_id": "64db71bf-f928-4365-a56f-161c26bdba08",
            "int_exp": 203021,
            "enhanced_spe_atk": 550,
            "current_hp_max": 10366,
            "as": [
                {
                    "enh": [
                        0
                    ],
                    "lv": 10,
                    "released": true,
                    "skill_candidate": [
                        "act1_sly_linai_002_lv10"
                    ],
                    "skill_group_id": "act1_sly_linai_002"
                },
                {
                    "enh": [
                        0
                    ],
                    "lv": 10,
                    "released": true,
                    "skill_candidate": [
                        "act2_sly_linai_002_lv010"
                    ],
                    "skill_group_id": "act2_sly_linai_002"
                },
                {
                    "enh": [
                        0
                    ],
                    "lv": 10,
                    "released": true,
                    "skill_candidate": [
                        "sup3_sly_linai_002_lv010"
                    ],
                    "skill_group_id": "sup3_sly_linai_002"
                }
            ],
            "intimacy_phy_def": 50,
            "current_spe_def": 4658,
            "current_phy_atk": 6921,
            "enhanced_phy_atk": 550,
            "intimacy": 10,
            "battle_image": 0,
            "exp": 5333100,
            "panel_image": 0,
            "possession_id": "000001609236198-36765796fc95484db1378f1b5aecd157",
            "rebuild_max": 4,
            "rebuild_ex_cost": 0,
            "book_datetime": "2020-12-29 19:03:19",
            "intimacy_hp": 100,
            "event_id": ""
        }

3.追加するresponse_player_getファイルに追記する
"characters"配列の最後にペーストして保存する。(ぶっちゃけ最後でも途中でもどこでもOK)
また、ペーストする前に「,」を追記して改行する必要あり。

4.端末にあるresponse_player_getファイルを先程保存したものに置き換える。

5.確認
起動してキャラ一覧にサンタリナが表示されて、詳細を開いても問題がなければ無事追加完了になります。

サンタリナ追加後


◎キャラクターのリビルド状態と秘密メモを解放する


両者ともプロフィール表示に関わってくるため解説。
修正するのが面倒であれば、キャラ追加のとき使用したresponse_player_getファイルで該当キャラの箇所を自分のファイルと置き換えてください。

例として耶倶矢のリビルド状態と秘密メモの解放をします。

リビルド0
秘密メモ未開放

1.エディタの全体検索で「dal_kagya_001」を検索して該当箇所を検索する。
変更するresponse_player_getファイルの中を検索。

2.関連する箇所の値を書き換える

リビルドは"rebuild"の値を4にすることでリビルド状態を最大まで解放出来る。


秘密メモは、"flavor"の中にある"released"の値をtrueにすることで解放出来る。

書き換えたら保存。

3.端末にあるresponse_player_getファイルを先程保存したものに置き換える。

4.確認
起動してリビルドと秘密メモが解放されていれば無事完了になります。

また、今回はリビルド状態と秘密メモを解放しましたが、レベルや親密度は上げていないため、本来の仕様とは異なったステータスになっています。そのあたりの整合を取りたい場合は上記からダウンロードできるresponse_player_getファイルを参考に修正してください。

リビルド4まで解放
秘密メモ解放

◎キャラクターのスキンを解放する

イベントで配布されたスキンは、該当アイテムを所持していないとキャラクター表示を変えることが出来ない。response_player_getファイルではアイテムの管理も行っているので、そこに対象キャラのスキンアイテムを追記すれば表示の切り替えが可能になる。

今回はラティファを例にスキンを解放します。

スキン未所持のため切り替えることが出来ない
スキン未所持

1.エディタの全体検索で「abp_latfa」を検索して該当箇所をコピー。

上記のリンクからダウンロード出来るresponse_player_getファイルの中を検索。
最下層あたりにあると思うので、見つけたらコピー。


2.解放したいファイルのitemsオブジェクト内にペーストする

解放したいファイルの"items"配列の最後にペーストして保存する。(ぶっちゃけ最後でなくても問題はない)
キャラ追加の時同様、ペーストする前に「,」を追記して改行する必要あり。

3.端末にあるresponse_player_getファイルを先程保存したものに置き換える。

4.確認

起動して衣装切り替え、所持アイテムに該当のスキンが追加されていることを確認できれば無事解放完了になります。

切り替え可能
スキンが追加されたアイテム欄

まとめ

ファンタジア・リビルドはイベント復刻を1回(重要)もすることもなく、サービスが終了してしまったために、最後のBOXガチャを死ぬほど周回してガチャキャラは揃えたけど、イベントキャラはその時期にプレイしてなかったせいで揃えられずに終わった!という方は結構いるんじゃないかなーと思ってます。

ただそんな人でも上記の方法を利用することで未加入のまま終わったキャラを加入させることが可能になります。(追加したいキャラのassetがある前提にはなりますが…)

素人知識なところが散見されたかと思いますが、今回の記事でどこかのファンリビ勢が救われたのであれば幸いです。


いいなと思ったら応援しよう!