[CardWirth] CW用「エンジン識別サンプル」更新のためのメモ
- 2015/03/03 22:12
- カテゴリー:CardWirth, 作ってるモノ, シナリオ
- タグ:CWシナリオ@サンプル&リソース
CardWirthPy バージョン0.12.2の正式版が公開されていたので、拙作「エンジン識別サンプル」が正しく動くかどうか確認しました。サンプルは各エンジン各バージョンの正式版が識別できる事を目指していますので、これで問題なければそのまま公開を続けられます。
しかし、識別の結果は「CW1.50」でした。
同行NPCの称号が、クーポン分岐で検出できなくなったようです。これは困った──
と思ったら、ChangeLog.txtに「称号判定分岐でCardWirthPyのバージョンを判別できるようにした」の一文が。課題一覧にそんな話が出ていましたが、正式版で実装されていました。CW1.29の「@MP3」と同じく、エンジンバージョンを示す@称号を実際の所持状況と関係なく検出できるとのことです。
ということは:
- Py0.12.1は、これまで通りクーポン分岐による同行NPCの称号検出で見分ける。
- Py0.12.2以降は、称号「@CardWirthPy Version.0.12.2」が検出できるかどうかで見分ける。仮想クーポンが実装されたバージョンを指定しておけば、その後全てのPyをPyと識別可能。
バージョンについては、各バージョン毎に設定される「@CardWirthPy Version~ Only」で見分ける。
とすればPy0.12.2正式版対応は完了、のはずです。
これから修正に取りかかります。
※※※
CW1.50と識別されるようになった原因は何なのか、ChangeLog.txtで探しましたが、影響していそうな項目は見当たりませんでした。
クーポン分岐に関連する変更には「クーポン選択分岐やカード所持分岐で対象がいなかった場合の挙動をCardWirthに合わせた」がありますが、直前の0.12.2 RC3までは同行NPCの所持称号で選択して、効果コンテントによる各種状態の変更や称号やカードの付与ができていましたので、「対象がいなかった場合」にはあたりません。
他に可能性があるかもしれないのは「フィールド全体で対象を選択した時、選択中のメンバが優先選択される」ですが、これは前段階で別の手段によって同行NPCが選択できている前提の話になり、クーポン分岐から開始する実験で必ず指定称号を持っているNPCが選択されるのとは、違う現象のようです。
ともかく、0.12.2 RC3→0.12.2正式版の更新で、同行NPCが持っている称号をターゲットにクーポン分岐を行っても、必ず失敗するようになりました。そこは間違いありません。
※※※
CWPy0.12.2正式版における変更点の1つに、「CardWirth 1.50では同行キャストに対象消去の効果が無いため、それに合わせた」がありました。これは、Nextの見分けに使っている、対象消去後のNPCをランダム選択で選択可能なバグと関連する部分です。
どのように修正されたのか、実際を見てみたところ、以下のような結果になりました。
CW1.50では対象消去した同行NPCを(が):
・キャンプで閲覧できる→Py0.12.2も同じ
・キャスト存在分岐で検出できる→Py0.12.2も同じ
・ランダム選択で選択できる→Py0.12.2も同じ
・戦闘では動かない→Py0.12.2では戦闘中も動いている
CW1.50で戦闘中の行動が封じられているところ以外は、同じ動きになっていました。
対象消去後のNPCの動きついてメモ箱に書いた部分も、サンプルと同時に修正予定です。
【!】同行NPCを消したければ「キャスト離脱」で!
サンプルとは関係ありませんが、大事なことなので書いておきます。
対象消去後のNPCの扱いについては、現在存在するエンジンの最新版全て(CW1.50、CWNext1.60、CWPy0.12.2)に明らかにバグと思われる動きが存在します。
また、対象消去後の挙動が、CW1.50と各私家版で異なっています。
(→詳細)
ストーリー的に対象消去が正しい(例:パーティーに取り憑いた幽霊が聖なる力で祓われるなど)場合でも、キャスト離脱で離脱させた方が無難です。