仕様合わせ状況

CardWirthPyの仕様合わせ状況

 Py3 現在、CardWirth 1.50 までのシナリオは99%動作しますが、CardWirthの挙動には依然として不明な部分があり、シナリオを再生するにあたって問題が生じるものを随時修正するという対応が取られています。
 ここではchangelog等から、CardWirthシナリオ(~1.50)をプレイするにあたってのゲームバランスシナリオの作りによっては進行不能等の問題がでる仕様の変化セーブデータに関わる修正のみを正式版単位で整頓して抽出していきます。正式版の不具合についてはよくある質問/正式版のバグを参照してください。

目次

4.0で修正中

[データ]全滅/対象消去/老衰時、死亡したPCに「_死亡」が配布されていなかった。
[データ]デバッグモードの簡易方式で作られたキャラクターに「@デバグ」が配布されていなかった。
[データ]アルバム内PCの消費EPが一律で10になっていた。(CWでは年代別の1/2)
[データ]アルバム内PCの年代が「子供」(spendEP=0)であっても親に指定できていた。
[戦闘]カード対象の自動選択で、能力ボーナス・ペナルティ効果の有効判定条件にキャラクター自身の能力修正値が使われていた。

3.4で修正

[データ]「@レベル上限」が初期設定された種族で新規作成したキャラクターでは、型に設定された最大レベルが無効になっていた。これにより凡庸型などの最大レベルが正規より低くなる場合があった。

3.2で修正

[データ]CW1.28以降、連れ込んだキャストにはシステム称号「@本来の上限」が配布される。CWでは基本得点を10、キャストがレベル11以上の場合はレベル値を得点とするが、Pyでは能力型のレベル上限を反映し、レベル値は反映していなかった。両方のうち大きい方を取るように変更。
[仕様]CW1.28以降、レベル調整機能を使って現在レベルが実際の@レベル原点を下回っているキャストはシナリオ開始時にシステム時限称号「:レベル補正中」が配布される。Pyでは配布されていなかった。
[仕様]固定値1のダメージモーションによる実際のダメージが必ず1になっていた。CWでの実測値では1~2に揺らぎが出る。

3.1で修正

[戦闘]CWでは、「沈黙時に使用不可」な召喚獣はキャストが行動不能(眠り・呪縛)になっている場合も、戦闘行動予約時に召喚獣が行動しなくなる。また、ラウンド開始からキャストの行動より前に沈黙・行動不能になった場合にはカードアニメは行われるが、効果が発動しなくなる。Pyでは行動・発動していた。

3.0で修正

[データ]@レベル上限を持たないキャストを連れ込んだ時、直ちに「@レベル上限」が配布されるように変更。また、CWではレベル11以上の場合はその値が「@レベル上限」の得点になるが、Pyでは能力型のレベル上限に固定されていた。→正確には「@本来の上限」の値に合わせて「@レベル上限」も配布されていたが、「@本来の上限」が不正値だったため@レベル上限も不正値となっていた。
[データ]初期経験点の最大値が999になっていたため、レベル32以上のキャストを連れ込んだ場合に得点が下がっていた。9999に拡張。(エディタで指定できる最大値レベル99に必要な経験点は9702)
[仕様]アイテム所持ボーナス・ペナルティに対する適性補正式が一部異なっていた。
[戦闘]KC所持分岐でカード消去を受けた対象の「使用(前)カード」が所持扱いになっていなかった。
[戦闘]意識不明・麻痺・眠り状態になった時、カードの配布予約が解除されていなかった。
[戦闘]バトル開始イベント中、手札が存在していた。(KC所持分岐で「カード交換」が引っかかっていた)
[戦闘]意識不明に対する優先選択ボーナスを最大体力依存に変更(CW1.28以降の厳密な実装)。
[戦闘]CWでは、ラウンド開始から行動前までに麻痺状態になり、すぐに解除されるとキャストは行動が中断されるが、召喚獣は発動する。Pyでは麻痺が解除されていても召喚獣が止まっていた。
[戦闘]使用中の技能カードがアイテム入手コンテントにより手札から消えた時、使用回数が0になっている場合でも山札に戻っていた。これにより使用回数0の技能カードが新たに配布されることがあった。
[戦闘]CWではアイテム入手コンテントでカードが配布された時、同時に配布対象の手札が消去されるが、Pyでは超過分のカードのみが取り除かれて手札が維持されていた。

2.1で修正

[戦闘]リバース状態にあるメンバの戦闘時限クーポン「;」が終了時剥奪されていなかった。
[戦闘]CWでは、単に「○」「×」と入力されたキーコードイベントは空白(キーコード5枠のうち何も入力していない枠が1つでもあるカード)のキーコード成否イベントとなるが、Pyではそうなっていなかった。

2.0で修正

[データ]宿PC作成で親を指定した場合の遺伝情報が回数によって正しくローテートしていなかった。
[データ]連れ込まれたキャストに最初から遺伝クーポン(@G)が設定されていると二重に付与されていた。
[データ]種族の初期称号に@レベル上限・@EPを使っているスキンで、デバッグモードでキャラ情報を変更するとそれらが剥奪されていた。
※EPがなくなった場合、お手数ですが、手動で「@EP」を称号編集DLG等で追加してください。
[仕様]KC所持分岐の「すべて」「アイテム」で戦闘中の手札が対象になっていなかった。
[仕様]隠蔽中に精神正常化も含めた精神効果を受けていた。
[仕様]PT全員を対象にしたクーポン分岐と能力判定分岐の成功で、メンバ選択が解除されていなかった。
[仕様]精神が正常なキャストの精神正常化に成功していた。
[仕様]適性ランク4(150%)の判定値が20になっていた。(CWでは21)
[仕様]行為判定式が達成値>目標値になっていた。(CWでは達成値≧目標値)
[仕様]効果コンテントの適性値が4になっていた。(CWでは6)
[仕様]レベル変更時、PCが所有する技能カードの残り回数が変更前のまま更新されていなかった。
[仕様]評価メンバの条件無し/初期点0以下で台詞がスキップされていた。
[仕様]ランダム選択コンテントで隠蔽中メンバが対象になっていた
[戦闘]行動不能時に行動キャンセル効果を受けていた。
[戦闘]ラウンドイベントのNPC途中参戦で加入ラウンドから行動していた。(1.20/1.50では次ラウンドから)
[戦闘]戦闘中、特殊技能カードを獲得すると、その戦闘の間、使用回数が2倍になっていた。
[戦闘]カードの使用時ボーナスは行動不能になってもラウンド終了まで持続するが、Pyではしていなかった。
[戦闘]効果範囲「双方全体」の適用順が常に味方からになっていた。
[戦闘]戦闘中断からの再戦でエネミーの能力変化が引き継がれていた。

1.1で修正

[データ]種族に@レベル上限を設定したスキンで@レベル上限が二重に作られていた。
[仕様]吸収モーションでオーバーキルした場合に、吸収量がダメージ量を上回っていた。

1.0で修正

[データ]バリアントの自動スキン化で熟練・老獪が置き換わらない。(学園バリアントで重大)
[データ]宿PC作成で特殊型が誕生した時の遺伝クーポン反転が機能していなかった。
[データ]宿PC作成時の初期クーポンの並び順をCWに合わせた。また連れ込みNPCのように「_名前」クーポンが付与されていたのをされなくした。
[データ]宿PC作成時の生命点計算で、生命点が若干仕様より多くなる場合があった。
[データ]レベルごとの生命点計算で、生命力と精神力が奇数の場合、若干少なくなっていた。
[データ]クーポン操作の「全て複製」で全メンバーが対象になっていた。
[データ]対象消去されてアルバムに残ったPCに時限クーポンが残っていた。
[データ]宿メニューでPCを成長させた時、精神傾向が変動するようになっていた。
[データ]全滅して「続ける」を選んだ時、同行キャストが存在すると不正に連れ込まれていた。
[仕様]シナリオ開始時の必要クーポンと必要数の解釈がCWと異なっていた。
[仕様]未指定または存在しないエリアへの移動でシナリオを終了していなかった。
[仕様]NPCの戦闘後処理を1.28の「初期化」から1.50の「回復」に変更。(消耗アイテム・有限召喚獣は元に戻らない)
[仕様]能力判定分岐で「誰か一人」の判定に失敗した時、選択が解除されていなかった。
[仕様]状態判定分岐で「誰か一人」の判定に失敗した時、選択が解除されていた。
[仕様]ランダム選択分岐のレベル設定が機能していなかった。(1.30追加機能)
[仕様]麻痺解除効果で精神正常化効果も発生していた。
[仕様]回避・抵抗修正残り回数消費判定時、-10のカードを所持していると消費されていなかった。また、意識不明と睡眠時に消費されていた。
[仕様]防御修正付き召喚獣が無効な属性モーションに対しても消費されていた。また、消費タイミングがモーション発動後になっていた。
[仕様]カードの適性が暗緑以下の時、持続ラウンド1の効果が失敗していた。
[仕様]PC以外が召喚した召喚獣が常に付帯能力になっていた。
[仕様]無敵化(防御力+10)判定の厳密な式の実装。
[仕様]ダメージ・吸収効果の抵抗に成功すると、ダメージ・吸収と同時に設定された効果が無効化されずに通っていた。
[仕様]弱点属性が持続時間がある効果モーションに影響していなかった。
[仕様]評価メンバで沈黙状態のPCが除外されていなかった。
[仕様]特殊キーコード「ペナルティ」「リサイクル」がカード名でも有効になっていた。
[仕様]時間経過中に発生したイベントの効果中断で後続のPCの時間経過も中断されていた。
[仕様]目標が回避抵抗不可またはペナルティが10の時、絶対失敗効果が成功しない。
[戦闘]自動選択でカードに複数モーションがあり、その属性が異なる時、無効なカードが選ばれていた。
[戦闘]自動選択で魔法無効化状態の対象に魔法属性カードが選ばれないようになっていた。PC側は引き続き、ペナルティカードを除き選択をしない。
[戦闘]自動選択で除外対象に入った負傷PCが回復の対象に選ばれにくくなった。(CW1.28以降では絶対に選ばなくなる)[戦闘]激昂状態の時に手札のカードが一枚余分に配布されていた。(1.20以前の仕様)
[戦闘]初期状態で意識不明の時は回数制限付きの付帯能力を除去しない。(顕在化するのはXEditor製かバイナリ改造シナリオのみ)
[戦闘]勝利イベント開始前に選択メンバがクリアされていなかった。
[戦闘]アイテム・召喚獣カードの命中率が行動力修正の影響を受けていた。
[戦闘]アクションカードの効果が行動力修正の影響を受けていなかった。
[戦闘]ゲームオーバーコンテントは全滅扱いで戦闘中では敗北イベントが発火するが、Pyでは直接ゲームオーバー画面に遷移していた。
[戦闘]特殊キーコード「逃走」が付いたカードで死亡イベントが発火していた。
[戦闘]非表示になったキャストのそのラウンドの戦闘行動がキャンセルされていなかった。
[戦闘]隠蔽によって戦闘行動がキャンセルされていた。
[戦闘]時間経過コンテントでPC以外の時間も進んでいた。(CWではPCのみ)
[戦闘]戦闘中、次の戦闘開始コンテントを呼び出した際に時間経過していなかった。(ただし開始イベント中は経過しない)
[バグ利用]対象消去されてもエリア移動せずに終了すると復活していた。互換DBで対応。

0.12.3bで修正

[データ]シナリオ進行中のパーティがいる宿を変換するとシナリオ内で入手したカードのレアリティが上昇してしまう。
[戦闘]カードの防御力修正に適性が影響しないようにした。無敵化(防御力+10)判定の暫定対処。

0.12.3で修正

[データ]宿PC作成時の精神傾向の上限下限が±5になっていた。(CWは±4)
[データ]宿メニューで削除したPCの所持カードがカード置き場に完全に移動していなかった。
[データ]プレミアカード持ちのPCが対象消去された時、プレミアカードが荷物袋に移動していなかった。
[データ]レベル調整中のPCがレベルアップした時EPが余分に加算される。
[データ]逆変換で荷物袋とカード置き場のカード解説の改行コード部分が`\n`になる。
[仕様]アイテムカードにリサイクルキーコードが付いていても変化しない。
[仕様]能力修正の上書き条件の厳密な実装。
[仕様]効果コンテントの対象レベルがマイナスのとき、中毒・麻痺と回復の効果が反転していた。(麻痺回復が麻痺になって全滅など)
[仕様]キーコード不保有イベントがキーコード成功・失敗イベントの大半に反応してしまう。
[戦闘]混乱カードの回避・抵抗ペナルティが-5になっていた。(CWは-10)
[戦闘]残り体力によって回復モーション付きカードと逃走が選ばれやすくなる優先ボーナスの厳密な実装。
[戦闘]同行NPCが自分自身を対象とする行動を行なわない。

0.12.2で修正

[データ]能力値と実際の最大体力が異なる連れ込みNPCのレベル調節をした時、それらの差を考慮して最大体力の計算を行う。
※CWでは再計算されるので変換した場合この情報は保持できない。
[データ]増殖バグ。(荷物袋にある状態でシナリオへ持ち込んだカードをPCに持たせてから荷物袋へ戻しF9)
[データ]荷物袋のカードをカード置場へ移し、保存してロードすると荷物袋内のカードが復活する。
[データ]カード名前後にスペースが含まれるカードを複数入手し、片方削除するともう片方の画像が消える。
[データ]PC消滅時に所持していたカードのデータが残る。
[データ]年代ごとの初期称号が父母称号よりも先に付与されていた。
[仕様]麻痺したキャストの精神状態が正常化されていない。
[仕様]意識不明中でも麻痺が回復してしまう。
[仕様]同行NPCを対象消去した時の結果を1.50の「無効」に変更。
[仕様]能力判定でマイナスの精神適性値が反映されていなかった。
[仕様]中毒と麻痺の時間経過による軽減の厳密な実装。
[仕様]召喚獣の取得方法・リサイクル・使用回数の条件を含めた召喚獣取得処理の厳密な実装。
[仕様]沈黙・魔法無効化・能力修正・ペナルティ等を含めたカードの自動選択可否条件の厳密な実装。
[仕様]エネミーカードのフラグをオフにした場合の選択メンバ関係の挙動合わせ。
[仕様]クーポン選択分岐やカード所持分岐で対象がいなかった場合の挙動合わせ。
[仕様]魔法的物理属性が魔法無効化状態の影響を受けていた。
[戦闘]行動順・手札選択確率・戦闘行動のターゲット選択における状態判定の内容をCWに近づけた。
[戦闘]激昂状態の時に手札枚数が1増えていない。増えるのは1.20仕様のため再修正。
[戦闘]睡眠状態のキャストから吸収しても睡眠状態が解除されない。
[戦闘]麻痺した敵を攻撃すると毎回死亡イベントが発火。
[戦闘]敵がカード効果で死亡・消滅している時、キーコード○×イベントが発生しなかった。
[戦闘]手札破棄効果で山札内のアクションカードが増殖する。



0.12.1で修正

[データ]NPC連れ込み時、NPC名クーポンに点数が無い。
[データ]宿メニューで削除したPCがアルバムに載った時、永眠クーポンがついてしまう。
[データ]宿メニューで削除したPCの所持カードが消滅してしまう。完全に移動できていなかった。
[仕様]精神枯渇の効果が発生しない。
[仕様]エリア移動で選択メンバが解除される。
[仕様]マイナスクーポンの得点が0になってしまう。
[仕様]意識不明者回復でキーコードが発火しない。
[仕様]選択外メンバの選択で行動不能なキャラクターが対象にならない。
[仕様]抵抗されなくても時々ダメージが0になってしまう。
[仕様]対象消去で死亡イベントが発生しない。
[仕様]炎・冷気弱点のレベル比ダメージが10倍になっていた。
[戦闘]効果の全く無いカードが自動選択の対象になっていた。
[戦闘]沈黙・魔法無効化状態で無効なカードが自動選択されていた。
[戦闘]自動選択で意識不明者を優先回復する。また重症時は必ず逃走カードを選ぶ。
[戦闘]毒・麻痺・対象消去攻撃で意識不明のキャラクターが対象にならない。キーコードイベントが発火しない。
[戦闘]呪縛と精神異常が戦闘終了時に回復しなかった。(1.20以前の仕様)
[戦闘]混乱時、混乱カードしか配布されていなかった。(1.20以前の仕様)
[戦闘]勇敢時、技能カードが配布されていなかった。恐慌時、フェイントが配布されていた。

現状100%厳密な実装ではない可能性があるもの

[仕様]高レベルスキルカードを使用した時の失敗率。
[戦闘]行動順の決定ルール。
[戦闘]逃走の成否判定ルール。
検証・情報提供は常に募集中です。



Pyで再現しないCW由来の仕様・バグ

CardWirth (1.20-1.50まで変わっていない挙動)

  • CWでは、各能力変化モーションで10/-10を超える不正値を扱える(バイナリ改造が必要)が、Pyでは強制的に10に丸められる。
  • CWでは、手札の一番目に「カード交換」という名称でアイテムカードが存在すると、システムカードの「カード交換」が配布されない。
  • CWでは、キャスト/召喚獣の自動選択において、魔法無効化状態の敵に魔法属性・物理的魔法属性のカードを使用しようとするが、Pyでは味方キャストのみ、ペナルティカードを使用した場合を除き、魔法無効化状態の敵をターゲットに取らない。
  • CWでは、宿帳から編入を高速でクリックすると不正なレベル0のキャストが加入する場合がある。Pyでは再現しない。

CardWirth 1.28以降

  • キャプション画面のクリック対応によりバグが入り、方向キーやホイール操作(1.50以降)で条件を満たさないシナリオを不正に開始できるようになった。Pyでは再現しない。
  • 1.28以降、F9である程度の要素が戻るようになったが、依然として変更されたゴシップ・終了印・消費アイテムの残り回数は戻らない。Pyでは全てが巻き戻る。
  • 戦闘中の対象消去による敗北イベントにより0人で帰還可能。Pyでは正常にゲームオーバー。
  • 1.28以降、自動選択で回復モーションの目標に選ばれた対象は同じ陣営(味方/味方の持つ召喚獣/敵/敵の持つ召喚獣/同行キャスト/同行キャストの持つ召喚獣)からは絶対に自動選択の回復目標に選ばれないが、Pyでは重複選択される。
  • 1.28以降の意識不明者に対する優先選択ボーナスは、最大体力がそのままボーナスになるため、最大体力がごく僅かなキャスト(1~16)は、重症時よりもかえって回復されにくくなる場合があるが、Pyでは下限値17を下回らない。

CardWirth 1.50

  • 1.50では、戦闘開始イベントで帰還するとアクションカードが不正に配布されたままになり、操作不能&セーブが開けなくなる場合がある。Pyでは修正済み。
  • 1.50では、変数名に「=」を入れると中断やセーブ後ロードでフラグ/ステップが初期化される。
  • 1.50では、同行キャストの再加入時、キャスト離脱コンテント実行前にランダム選択コンテント等で選択して変化させたクーポンや状態が維持されるが、Pyでは初期化される。
  • 1.50では、同行キャストの連れ込み時、ランダム選択コンテント等で選択して変化させたクーポンが初期化されるが、Pyでは保存される。


不正値になった体力の補足

 計算式の正常化でこの状態のPCは固有の体力(最大ライフ)を持っている扱いになるため、正規値に戻したい場合、デバッグモードで再計算するか、一度1.50などに逆変換してレベル調整してください。

1.デバッグモード(Ctrl+D)でキャラ情報ダイアログを開き(キャラを左クリック)、解説をクリックします。

2.「生命点を新しい設定に合わせて再設定する」にデフォルトでチェックが付いていなければ計算式通りの体力を持っていない扱いです。チェックを入れて登録を押してください。


キーコード所持分岐の諸問題について

 CardWirth1.50では戦闘中、アイテム欄に「カード交換」などの手札カードを一時的に配布して、戦闘行動ダイアログとして使用しているため、戦闘開始イベントで帰還するとアイテム欄に配布予定だった手札カードが残り、その状態でセーブすると読み込めなくなるというバグや、キーコード所持分岐の「アイテム/すべて」を戦闘中に行った場合、戦闘中の手札を含めて検索されるという現象が起こっています。Pyでは元々の仕様上、アイテムと手札を別々に管理しているため、この現象が起こっていませんでしたが、Py2ではキーコード所持分岐に「戦闘中の手札」を新設すると同時に、クラシックシナリオを読み込んだ際には、「アイテム・すべてのキーコード所持分岐は戦闘中の手札も有効なものとして解釈する」という仕様変更が実施されました。

各エンジンの仕様状況
1.50,NEXT,PyLite 「スキル」「アイテム(戦闘手札含む)」「召喚獣」=「すべて」
Py1 「スキル」「アイテム(戦闘手札含まない)」「召喚獣」=「すべて」
Py2以降 「スキル」「アイテム(戦闘手札含まない)」「戦闘手札」「召喚獣」=「すべて」