CardWirthエンジンの挙動やそれを利用したテクニックに関するメモ書きです。昔自分用に書いたものの転載。 分かりにくい表現があったり若干ずれたことを書いてたりするのでそのうち修正したい。 ■文字数制限 PC以外のキャスト、アイテム、スキル:6文字まで PC:7文字まで 宿:9文字まで(フォルダ名を変更することで127〜256文字まで) パーティ:15文字まで ■老人口調メモ 〜するな → 〜するでない 分かった → 承知した ■エリア到着時の背景・カードの挙動について エリア到着時、背景の描画→メニューカードの出現→到着イベントの順で動作する。 よって、背景継承にして到着イベントで背景の描画を行う処理を組んだ場合、若干挙動がおかしくなる。 これを防ぐにはダミーエリア(背景継承・メニューカードなし)を設けて一旦そこへ飛ばしてやり、 背景の描画を行ってから本来の行き先へ改めて移動するとよい。 カードの配置にオートを使用している場合も、到着イベントでカードの表示・非表示を切り替えると カードがべらべら動いて見た目に著しく悪いので、 ダミーエリアに移動→カードの表示・非表示を切り替え→本来の行き先に移動 という処理を組むと良い。フラグを倒す順序を気にする必要が無いのが利点。 ■戦闘時イベントについて 逃走イベントは末尾が「移動コンテント」なら逃亡成功。それ以外は逃亡失敗となる。 逃走イベント自体がない場合のみエンジンが自動判定。(判定内容は不明) 勝利・敗北イベントはイベント発生前に戦闘直前にいたエリアに戻る。 よって末尾に「移動コンテント」をつける必要はない。(むしろカードの挙動がおかしくなる) また、ある敵キャストの死亡イベントを擬似勝利イベントとする処理を行っている場合は、 上と異なり「戦闘直前にいたエリアに戻る」処理が行われないため、敵キャストが表示されたままだったり、 とどめを刺したPCが大きくなったままだったりと見た目の不具合が発生する。 ちなみに、全滅判定は敗北イベントが無ければ敗北した瞬間に、あればその末尾で自動的に行われるため 「ゲームオーバーコンテント」をつける必要はない。 (ただし、古山さんの言うようにつけておいた方が無難と言えば無難) 見た目を気にするなら先に背景を黒にする処理を行えばよい。 ■非戦闘時のキーコード発火について 1.20 1.28 味方1 両方 両方 味方A 味方 両方 敵1 Menu Menu 敵A Menu Menu 双方1 両方 両方 双方A 味方 両方 自分 不可 不可 無対象 不可 不可 上記のようにカードの効果対象によってメニューカードを選べるかどうかが変わってくる。 そのため1.20エンジンで双方全体の「魔力感知」、「生命感知」や「破魔の印」を使った場合、メニューカードを 対象にすることが出来ない。(ただし、「魔法の瞳」は対象が敵全体なのでメニューカードを選択できる) よって「魔力感知」や「魔法を解除」のキーコードイベントをメニューカードに設定しても ver1.20エンジンではそれらを発生させる術がない。(若干例外あり) ver1.28対応シナリオでは上記の注意をする必要はないが、キーコード「魔力感知」や「魔法を解除」を 持つカードの対象を使用者にしたり対象なしにしてはいけないことに注意。 まとめると以下のとおり ver1.20専用シナリオ  ×メニューに上記キーコードイベント  ○エリアに上記キーコードイベント  ×上記キーコードのついた対象自分・対象なしカードを配布(1.28にコンバートすると正常動作しない) ver1.28専用シナリオ  ○メニューに上記キーコードイベント  △エリアに上記キーコードイベント(↑との共存不可。見た目がやや変)  ×上記キーコードのついた対象自分・対象なしカードを配布 両ver対応シナリオ  ×メニューに上記キーコードイベント(1.20では発火しない)  △エリアに上記キーコードイベント(1.28では見た目がやや変)  ×上記キーコードのついた対象自分・対象なしカードを配布 以上を踏まえて、両エンジン対応でしかも見た目にも悪くないシステムの組み方を紹介する。 まずシナリオ開始時にエンジンのバージョンを判別しておく。 また、適当な位置にメニューカード「周囲」を設置。 エリアに対する上記キーコードが発火したらエンジンバージョンで分岐。 →1.20ならエリアの全メニューカードを含めた周囲に対するキーコードイベントを開始。1.28なら何もしない。 メニューカード「周囲」に対して上記キーコードが発火すれば周囲に対するキーコードイベント開始。 「周囲」以外のメニューカードに対するキーコードイベントはそのまま設定すればよい。 ■同一キャストを区別する方法。 分かりにくいので「性能は同じだが区別できるチンピラが5体いる」という例で説明する。 【キャスト】 チンピラ(Mate1.wid)  所有カード:敵D 【召喚獣】 敵@(Beast1.wid) 敵A(Beast2.wid) 敵B(Beast3.wid) 敵C(Beast4.wid) 敵D(Beast5.wid) 新規バトル(1)  チンピラ(Mate1.wid)  チンピラ(Mate1.wid)  チンピラ(Mate1.wid)  チンピラ(Mate1.wid)  チンピラ(Mate1.wid) ラウンド1発火イベント 召喚獣存在分岐(敵D)対象:フィールド全体(これで左端のチンピラが選択状態になる) 召喚獣消去(敵D)対象:現在選択中のメンバ 召喚獣獲得(敵@)対象:現在選択中のメンバ(これで敵Dが敵@に変わる) (以下同様の作業を繰り返す) 召喚獣存在分岐(敵D)対象:フィールド全体 召喚獣消去(敵D)対象:現在選択中のメンバ 召喚獣獲得(敵A)対象:現在選択中のメンバ 召喚獣存在分岐(敵D)対象:フィールド全体 召喚獣消去(敵D)対象:現在選択中のメンバ 召喚獣獲得(敵B)対象:現在選択中のメンバ 召喚獣存在分岐(敵D)対象:フィールド全体 召喚獣消去(敵D)対象:現在選択中のメンバ 召喚獣獲得(敵C)対象:現在選択中のメンバ これで2ラウンド目以降は召喚獣存在分岐で5体のチンピラが区別できる。 ちなみに判別用カードは召喚獣ではなくアイテム・スキルでも代用可能だが その場合は1ラウンド目に選択してしまうと不具合が起こるかもしれない(未確認)ので 前もって持たせておくのは召喚獣にしたほうが無難。 獲得するカードもアイテム・スキルで代用可能だが、1ラウンド目にそのアイテム・スキルを 絶対に使わなくなるという弊害あり。 2009/02/21