タスク: 同行キャストが離脱した時のステータス

Issue #391 new
k4nagatsuki repo owner created an issue

将来合わせる必要があるかもしれないため、優先度低めで作成しておきます。

今のところ、この問題によって不具合が出るシナリオは確認されていません。


Issue #329の@IrakaT さんのコメント

また1.50とのレアな仕様差を見つけたので報告します。

$Cast = 1

getcast $Cast
selrandom npc, 0, 0, none
sif true
getcoupon M, ":Temp", 0
effect M, [paralyze, value, 10, all], none, 0, 5, none, unfail, "", 100, 1
losecast $Cast
getcast $Cast
selrandom npc, 0, 0, none
sif true
brcoupon M, ":Temp"
if true
    msg none, "1.50"
elif false
    msg none, "Py"
fi

コンテントによって同行NPCにクーポンや状態の変化を生じさせ、その同行NPCを離脱、再加入させます。1.50では離脱前に変化したクーポンや状態が残留しており、Pyでは消滅しています。


それに対する私のコメント

ありがとうございます。

これはちょっと(かなり?)厄介な問題です。同行キャストの状態についての仕様は1.30~1.50辺りにかけてしきりに変更されており、何がバグで何が仕様かも判断がつきません。例えば1.50であっても、データ構造上、同行NPCの状態を保存する事はできませんから、セーブ&ロードを経ると状態は元に戻ってしまうはずですが、果たしてこれは仕様でしょうか。

ちょっと今は時間が無くて試せないのですが、以下のような事を確認する必要があります。

  • 他のバージョンのエンジンだとどうなるか?
  • キャストを外し、イベントを一旦終了し、他のイベントで加入した後はどうなるか?
  • セーブ&ロードするとどうなるか?

さらに、一度外した同行者の状態を保存しようとすると、内部的に結構面倒な仕様を追加しなくてはなりません。そうした事をするには、今は時期がかなり悪いです。

これまで、こうした厄介な部分に対しては、「そのせいで動かないシナリオがあるなら対処する」という方針で対応してきました。例えば互換モードで1.28相当の同行者状態復元の挙動を再現しているのは、1.50以降で状態が復元しなくなったためにギミックが動かなくなったシナリオが現にあったからです。今回の問題はどうでしょうか。


それに対する@crowstarさんのコメント

クーポンだけですが同行NPCのクーポンがどうなるのか試してみました。

ver1.20・ver1.28・ver1.29 そもそもクーポンがつかない

ver1.30 中断してもゲームを終了しない限り残る・離脱~再加入までにキャンプ画面に入れば消える(逆を言えば離脱~再加入までにキャンプ画面に入らないと消えない)

ver1.50・NEXT 中断したら消える・離脱しても残る(離脱~再加入までにキャンプ画面に入っても残る)

また、どのverでも同行NPCを連れ込んだ際にはクーポンはリセットされることを確認しました。

Comments (0)

  1. Log in to comment