Lv10以上のNPCを連れ込むとキャラクター情報ダイアログにmaxと表示されない

Issue #689 resolved
tachi gigas created an issue

お疲れ様です。

Lv10以上のNPCを連れ込んでもキャラクター情報ダイアログにmaxと表示されない現象を確認しました。 原因は連れ込む時点で@レベル上限が獲得されないためで、 何でもいいのでシナリオを経由すると@レベル上限が(10点ですが)配布され、maxと表示されるようになります。

今からPull Requestしますがcharainfo.pyを修正するべきでしょうか。 一応1.50で連れ込みの挙動を確認したら@レベル上限がない場合自動生成されるので、多分これで大丈夫……のはず。

お手数ですが、確認と指摘をお願いします。

Comments (14)

  1. 暗黒 騎士

    直近の課題で、そういえばレベル上限や原点について書かれた記事がないなと思い、自分の方で検証してみていたのですが、 CW1.50では連れ込みキャストには「@レベル上限」は配布されていないようにみえます。 pull request #2258でtachi gigasさんが確認されている値はもしや「@本来の上限」ではないでしょうか?

    連れ込みキャストに配布されるのは「@本来の上限」でレベル1~10のキャストには10で配布されますが、 現在のレベルが10を超えていた場合はその値で配布されているようです。 「@レベル上限」と「@本来の上限」を両方持つ場合は、maxの表示は「@レベル上限」の値が優先されるようです。

    現在のPyでは両方配布され「@本来の上限」の方は常に10点で配布されています。

    なのでfcard.set_coupon("@本来の上限", max(value, fcard.level))への修正と、キャラ情報ダイアログの580行あたりのMax判定で「@レベル上限」がない場合「@本来の上限」を見るというような分岐がないのが表題の本質的原因に思われます。

    https://bitbucket.org/akkw/cardwirthpy-reboot/downloads/Classic_test.zip

    カード配布メニュー>連れ込み関連>LV11>帰還>済み印を付けずに終了

  2. 暗黒 騎士

    上記シナリオのLV11キャストで再確認しましたが、正確には以下になるようでした。

    連れ込み直後は「@本来の上限(+11)」のみが配布される(Max表示も出ている)
    
    シナリオを経由すると「@レベル上限(+11)」も追加される
    

    なので「@レベル上限」が配布されているのも誤りではないようです。(もしや~の下りはこちらの早合点でした。すいません…。

  3. k4nagatsuki repo owner

    どうもこの辺りのクーポンの役割は分かりづらいです。@本来の上限の値は現在のCWでは機能していないように思います。

    • シナリオ側から値を取得する方法はありません。
    • マイナス経験点でレベルが下がる事はないのでレベルアップに影響する事はありません。
    • デバッグ宿ではレベル上限がどうであろうと調節範囲がレベル1~15になります。

    以前のバージョンでは分かりませんが、おそらく現在の仕様になった1.28の時点で機能していません。

    現在のCWPyでは、@本来の上限は素質に合わせて配付されます。つまり神仙型は15になります。これより現行レベルが高い場合にそこに合わせるのは簡単ですが、どこまで意味があるかは分かりません。

  4. k4nagatsuki repo owner

    意味が無いので、逆に、単に気持ち悪いので合わせるというのはありだと思います。

  5. 暗黒 騎士

    @本来の上限の値は現在のCWでは機能していない

    「@レベル上限」を持たず「@本来の上限」を持つレベル11PCをキャラクター情報ダイアログで見ると赤字のレベルMax表示になっているので「@本来の上限」は「@レベル上限」がない場合の代替として機能しているのではないか?という推察だったのですが、「@本来の上限」の得点をバイナリエディタで現在レベルを上回るように変更してもMax表示が消えることはありませんでした。

    つまり、「レベル上限がない場合にキャラクター情報ダイアログでMaxを表示するか」に使われる判定値は(おそらく)10以上と定まっており、「@本来の上限」は無関係で、確かに機能していないようです。

    Pyのキャラクター情報ダイアログでは「@レベル上限」を持たない場合はレベル10以上でもMaxが表示されていません。「Pyの仕様としては連れ込んだ時点で@レベル上限を強制付与するので、レベル上限がない場合は想定しない」という判断であればそれはそれで良いかと思います。現状で表面化するのは「@レベル上限を持たないレベル11以上のPC」をPyにコンバートしてきた場合ぐらいなはず…?

  6. 暗黒 騎士

    あ、「@レベル上限を持たないレベル11以上のPC」をPyにコンバートしてきて、シナリオ経由で@レベル上限を付与するとレベル上限が10になるのでレベル調節でレベル10にした場合にもMaxが表示され続けるという(微細ですが)問題はあるようです。

  7. k4nagatsuki repo owner

    PCに@レベル上限が無い場合があるというのは一貫性に欠けるので、コンバート時に追加した方がいいような気がします。

    その場合のレベル上限は、@本来の上限があるのであれば、その値にした方がいいでしょう。

  8. k4nagatsuki repo owner

    CWPyでは本来の上限がある場合はレベル上限はその値になりますが、そうならないパターンがあるでしょうか?

  9. 暗黒 騎士

    ミスの連続で申し訳ありません。 CWでは「レベル調節で@レベル上限の得点未満のレベルにした場合、Max表示が出なくなる」(レベル15になっているPCの@レベル上限を2にした場合は2~15でMaxと出る)のですが、 Pyでは「最大レベルになっていれば調節中のレベルにかかわらず常にMaxが表示される」という仕様差と「@レベル上限が(10点ですが)配布される」ということから 10点が配布されたものと勘違いしていました。XMLを見たら正しく11点が配布されていました。

  10. k4nagatsuki repo owner

    とりあえず、 @本来の上限の値は、CWに合わせて現在のレベルが高い場合はその値にするようにしましょう。

    今は特に意味は無さそうですが、将来クーポンの得点を参照できるようにするかもしれません。

  11. Log in to comment