私家版エンジンの種類とバージョンを見分ける
敢えて正規版のバグを利用したシナリオを作りたい、正規版とは仕様が異なる部分に触れるため注意書きを出したい、といった限られた状況下で使えると思います。見分けポイントは、以下の通りです。
- 対象消去後のNPCをランダム選択で選択出来たらCW1.50。
選択できなければNext1.60。 - フラグ判定やステップ判定直前の値の変更が検出できなければNext1.60。
正常に検出できたらCW1.50かPy。- 明らかにバグなので、今後修正される可能性も? この方法による見分けは、いずれ使えなくなる可能性あり。
- Py0.12.1~0.12.2開発版は、範囲「フィールド中の誰か一人」のクーポン分岐で同行NPCの称号が検出できることで見分けられる。
ただし、クーポン分岐の適用範囲に「フィールド中の誰か一人」が無かったCW1.30より古いエンジンでは状況によらず成功するため、最低でもCW1.30相当の機能を有する事を確認する必要がある。- さらに、睡眠中のキャストに対して「吸収」を行った際、睡眠状態が解除されなければPy0.12.1。
睡眠状態が解除されればPy0.12.2開発版。
- さらに、睡眠中のキャストに対して「吸収」を行った際、睡眠状態が解除されなければPy0.12.1。
- Py0.12.2の正式版からは、2種類のエンジンバージョン識別用仮想クーポンが実装されている。
- 1つ目は、バージョンアップ毎に追加されていくもの。
こちらのv.0.12.2分が検出できれば、v.0.12.2正式版以降のPyである事が確定。 - 2つ目は、バージョン固有のもの。
Pyのバージョンを知りたい時は、こちらを利用する。
- 1つ目は、バージョンアップ毎に追加されていくもの。
識別は、以下のような流れで行います。
(パッケージ内に下記イベントを作成し(※1)、CW1.50相当の機能を持ったエンジンである事を確認してからリンク/コール(※2))
▼私家版判定
└◆<キャスト離脱>その時点で加入しているNPCを全て離脱させる
└◆<キャスト加入>判定用キャストカードを加入させる
└◆<クーポン分岐>フィールド全体の誰か1人が、識別用キャスト専用称号を所持?
├[成功]
│└◆<効果>味方全員に必中・無属性で睡眠→HP吸収の順で効果付与
│ └◆<状態判定分岐>全員が睡眠?
│ ├[成功] →CWPy0.21.1→回復後、判定用キャストを離脱させて終了
│ └[失敗]
│ └◆<状態判定分岐>全員が中毒?(←CW1.20互換として動作中のPy0.21.1を見分ける)
│ ├[成功] →CWPy0.21.1→回復後、判定用キャストを離脱させて終了
│ └[失敗] →CWPy0.21.2(開発版)→回復後、判定用キャストを離脱させて終了
└[失敗]
└◆<クーポン分岐>誰かが「@CardWirthPy Version.0.12.2」所持?
├[成功]
│└◆<クーポン分岐>誰かが「@CardWirthPy Version.0.12.2 Only」所持?
│ ├[成功] →CWPy0.21.2(正式版)→判定用キャストを離脱させて終了
│ └[失敗] →CWPy0.21.3以降─(※3)→判定用キャストを離脱させて終了
└[失敗]
└◆<ランダム選択>対象=NPC全体
├[失敗] →CW1.30以前?→判定用キャストを離脱させて終了
└[成功]
└◆<効果>選択中メンバを対象消去(絶対成功するようにしておく)
└◆<ランダム選択>対象=NPC全体
├[成功] →CW1.50 →判定用キャストを離脱させて終了
└[失敗] →CWNext1.60 →判定用キャストを離脱させて終了
└◆<キャスト離脱>その時点で加入しているNPCを全て離脱させる
└◆<キャスト加入>判定用キャストカードを加入させる
└◆<クーポン分岐>フィールド全体の誰か1人が、識別用キャスト専用称号を所持?
├[成功]
│└◆<効果>味方全員に必中・無属性で睡眠→HP吸収の順で効果付与
│ └◆<状態判定分岐>全員が睡眠?
│ ├[成功] →CWPy0.21.1→回復後、判定用キャストを離脱させて終了
│ └[失敗]
│ └◆<状態判定分岐>全員が中毒?(←CW1.20互換として動作中のPy0.21.1を見分ける)
│ ├[成功] →CWPy0.21.1→回復後、判定用キャストを離脱させて終了
│ └[失敗] →CWPy0.21.2(開発版)→回復後、判定用キャストを離脱させて終了
└[失敗]
└◆<クーポン分岐>誰かが「@CardWirthPy Version.0.12.2」所持?
├[成功]
│└◆<クーポン分岐>誰かが「@CardWirthPy Version.0.12.2 Only」所持?
│ ├[成功] →CWPy0.21.2(正式版)→判定用キャストを離脱させて終了
│ └[失敗] →CWPy0.21.3以降─(※3)→判定用キャストを離脱させて終了
└[失敗]
└◆<ランダム選択>対象=NPC全体
├[失敗] →CW1.30以前?→判定用キャストを離脱させて終了
└[成功]
└◆<効果>選択中メンバを対象消去(絶対成功するようにしておく)
└◆<ランダム選択>対象=NPC全体
├[成功] →CW1.50 →判定用キャストを離脱させて終了
└[失敗] →CWNext1.60 →判定用キャストを離脱させて終了
(※1)なぜパッケージ内か?
- イベントをパッケージ内に作成するのは、CW1.30で追加された新しいコンテント(ランダム選択)を含むためです。
イベントをエリア上に作成すると、CW1.30より古いエンジンでシナリオ開始時にエラーが発生することがあります。
- ランダム選択コンテントの対象に「NPC全体」を指定できるようになったのは、CW1.50からです。
Nextの識別には、エンジンが最低でもCW1.50相当の機能を持っていることが必要です。 - クーポン分岐に「フィールド中の誰か一人」の条件が追加されたのはCW1.30です。
CW1.29までは、「フィールド中の誰か一人」の条件でクーポン分岐を実行すると、必ず成功します。
Pyの識別には、エンジンが最低でもCW1.30相当の機能を持っていることが必要です。
[▲上へ]