変更案:キャラ情報再編集での種族EP

Issue #416 resolved
暗黒 騎士 created an issue

種族の初期クーポンに「@EP」をつけると初期状態でEPがプラスまたはマイナスになっているPCを作ることができます(設定上子孫を残せない無性種族などに有用)。 しかし、現在の仕様だと種族を変更するとレベルや残EPにかかわらずEPが初期化されてしまいます。

また「@EP」を1.20判定に使用している「悪夢ぁの書」に入れないことで気付いたのですが、 初期クーポンに@EPを持つ種族と持たない種族を混在させたスキンの場合、 持たない種族に変更すると@EPが無いキャラができてしまうようです。

これはおそらくどこかに他の種族に含まれる初期クーポンを消してから足すような処理があるのが原因かと思いますので (def put_paramsのracecoupons?) そこから@EPを除外すればいいかなと思うのですがどうでしょう(しかし称号の削除方法がよくわからない…)

詳しく検証してないですが、BWの吸血鬼PCがいつのまにかレベル上限10になってたので同じ理由で種族由来の@レベル上限も初期化される場合があるかもしれません。

Comments (10)

  1. k4nagatsuki repo owner

    ご報告ありがとうございます。

    仰る通り、種族の変更で初期称号が変化するのですが、それを差し替える処理で問題が起きています。pull request #1586で修正しました。

    それにしても弱りました。@レベル上限の時に言うべきだったのですが、そもそも種族や年代のCouponsはシステムクーポンを入れるようなところではないのです。入れる事はできますが、それは想定されていませんし、何が起こるか分かりません。

    レベル上限やEPの初期値や成長率を触りたいのであれば、スキンシステムの新しい機能として提案され実装されるべきです。

    これはきちんとしたチェック処理を入れていなかったエンジン開発側(というか私)に責任があります。スキンは半ばシステムの一部なので、内実がきちんと理解されて作られるか、エンジンの開発者と相談しながら作られるであろうという予断がありました。当たり前ですが、現実にはそんなまだるっこしい事はしていられません。

    @レベル上限については、以前なし崩し的に対応状態になりましたし、@EPについてもそうせざるを得ないと思います。それ以外については、システムクーポンはスキン側で指定しても除去されるようにチェック処理を入れた方がいいでしょう。将来の事を考えると、例外とした上の2つ以外は、いかなるシステムクーポンも設定できるべきではありません。

    @IrakaTさんのBloodWirthで@BloodWirthというシステムクーポンがつく事に(今更)気づいたのですが、これも原則的には問題です。_BloodWirthのようなクーポンに変更する事はできないでしょうか?

  2. 暗黒 騎士 reporter

    対処ありがとうございます。やはりそこらへんでしたか、読めているのに作文力がないのがもどかしいですね…。

    逆に自分は前回あのような対応でしたので「まあエディタ製連れ込みキャストでも常態化してるし一緒か」と思い直していたのですが、やっぱり問題ですか…。 とりあえず攻略wikiで推奨するようなことを書いてしまったので、削除しておきます。スキン制作者各位には混乱させて申し訳ないです。

  3. Iraka.T

    議題から逸脱するコメントのみで失礼します。おそらくissueを立てるべき内容が含まれていますが、すぐに思考をまとめることができません。

    将来の事を考えると、例外とした上の2つ以外は、いかなるシステムクーポンも設定できるべきではありません。

    ということですので、@BloodWirth_BloodWirthに置き換えるほかないでしょう。そして、この変更を行うのは早いほうがいいので、近くスキンを更新すると思います。

    @BloodWirthをシステムクーポンにした理由ですが、_BloodWirthでは付与剥奪できてしまうので、スキン由来のPCを判定するには望ましくないと感じたためです。これは私の贅沢なわがままであったのかもしれません。

    実は、@BloodWirthをシステムクーポンにしても、完全に私の望む形とは言えませんでした。当初、私は使用中のスキンを判定したいと思い、試行錯誤を行いましたが、これは不可能だと結論づけました。記憶を頼りに自分の思考を再現しているので、正確ではありませんが、@BloodWirthを付与したのは、可能な手段で妥協した結果であった気がします。

    たとえば、スキンによってBgmSoundフォルダにファイルを追加しても、それをシナリオから安全に(無音にせずに)利用する手段がありません。当時の私はスキンを判定して処理を分岐させられないかと考えましたが、それは不可能であり、システムクーポンを付与しても何の解決にもなっていません。今の私は、それならType値をカスタマイズしてバリアントを独立させるべきだと思います。私が行うべきだったのは、BGMや効果音コンテントに(もしかするとTable内の画像についても)代替ファイルの設定を追加する提案なのかもしれません。

  4. 暗黒 騎士 reporter

    そういえば、自分もシナリオ側からバリアント判定する手段があった方が良いのかなとは常より思っていましたね。 自分が想定していたのは、後から上位互換のスキンを出したり複数スキンにまたがって共有できた方が良いので、 エンジン判定のような疑似的な固有クーポンかゴシップをスキン自体に設定する(シナリオ開始条件のようなリスト式で)ことでした。

  5. k4nagatsuki repo owner

    エンジンのバージョン判定と同じような仕組みはどうでしょうか。

    Data/SystemCoupon.xmlのようなものをスキンで持てるようにする、という事です。

  6. k4nagatsuki repo owner

    pull request #1603でスキンに判別用クーポンをつけられるようにしました。

    例えばSkin.xmlで以下のようにすると、@SBloodWirthの称号判定分岐が成功するようになります。

        :
     </Property>
     <SystemCoupons>
      <SystemCoupon>@SBloodWirth</SystemCoupon>
     </SystemCoupons>
     <Race>
        :
    

    別に@Sから始まる必要はありませんが、スキン名そのままだと、将来作られるスキンによっては他のシステムクーポンと被る可能性が絶対に無いとも言えないので、慣習としてこのような形式を決めておいた方がよいでしょう。

    私もプログラマの例に漏れず全角英数字を見ると憤死する人間なのですが、CWはそういうもともと慣習だし、種族が@Rなので、まあ……。

  7. 暗黒 騎士 reporter

    これはありがたい…! 今後生まれるバリアントには必携機能になりそうですし、 これならたとえばスキンを適用している間は_秀麗が必ずつくみたいな遊びも出来ますね。

    @IrakaT さんがよければこの課題は解決ということで問題ないでしょうか。

  8. Iraka.T

    _秀麗スキンという発想には思わずお茶を吹きそうになりました。

    スキン作者に大変嬉しい機能だと思います。テスト版限定の機能だと、広く使われだすのは先のことになりそうで、少しもどかしい気もしますね。

    ありがとうございます。私のほうに不満はありません。

  9. Log in to comment