スキンの精神傾向ボーナスの値が違う

Issue #118 resolved
takuto_cw created an issue

こんばんは。critical なバグを見つけてしまったのでこちらに投下させていただきます。WinXP SP3 + cardwirthpy_20140228 で確認しました。

スキンデータに記述されている、性別・年代・素質・特性ごとの、「慎重さ」と「社交性」のボーナスが入れ替わっています。付属の classic スキンだけでなく、1.28 や 1.30、1.50 から自動生成したスキンでも同様です。

なお、本家デバグ宿での簡易方式での能力型(バランス、ファイター、…)は、上記の入れ替わりはないものの、ボーナス値が半分になっています。(ファイターなら好戦 +1 のはずが、+0.5 になっている)

ボーナス入れ替わりというのは……例えば、男性・大人・標準型・特性なし のキャラクターの場合、cautious(慎重さ)が +1 になるはずです。本家でキャラを作成し宿変換を行えば、キャラデータはちゃんと cautious="1" となるのですが、CWPy でキャラ作成すると cheerful="1" になってしまいます。

一度ご確認いただけますか? どうぞよろしくお願いします。

Comments (6)

  1. k4nagatsuki repo owner

    ありがとうございます。まだ確認はしていないのですが、これはまずい……すでに作られてしまったPC等のデータは対処のしようがないのでスキンを直していく事になりますが、プレイヤーにスキンの再生成をお願いするのが妥当かどうか。

    スキンにバージョン情報をつけて、無印の場合はcautiousとcheerfulを入れ替えるしかないのかもしれません。少し考えさせてください。

  2. k4nagatsuki repo owner

    スキンの自動生成時にCWのバイナリから各特徴の特性値を抽出しているのですが、そこにミスがあって慎重性と社交性が入れ替わっていますね。それにつられてClassicスキンやSkinBaseも入れ替わっています。

    また、簡易方式でのサンプルタイプでは能力の並びと精神特性の記述の仕方が異なるようです。その他の特性と同じ並びだと思っていたのですが、慎重性と社交性が入れ替わっています(結果的に正しい並びで抽出できています)。さらに、ここでは精神特性の値がそのまま記述されているようです。というのは、各特徴の精神特性修正値は、0.5単位の値を整数で記述するために値が倍になっているのです。それを半分にする処理をそのままサンプルタイプでも使ったため、精神特性の値が半分になっています。

    方針としては、

    • スキンの自動生成機能を修正。
    • ClassicスキンとSkinBaseをアップデート。
    • スキンのdataVersionをアップデート。新しいdataVersion未満のスキンをロードする時は上記問題を読み込み側で都度訂正する。
    • SkinBaseにChangeLogを設けて変更点を明記。

    といったところでしょうか。今日にでも着手します。

  3. takuto_cw reporter

    いつもながら、丁寧な説明ありがとうございます。自分みたいな詳しくない人でも、何をやっているのか伝えてもらえるオープンな姿勢がうれしいです。

    スキンが自動で直るようにしていただけるんですね。キャンプモードのときもそうでしたが、こういう場面で妥協しないのはスゴイ…。

    修正していただけて助かります。どうぞよろしくお願いします。

  4. takuto_cw reporter

    ありがとうございます。今は手が離せませんが、今日は夕方から時間がとれるので、今日中にはテスト終わらせます。

  5. Log in to comment