2015年12月14日月曜日

[Modding]xml解析:chargeprofiles

本稿ではMOD作成の前提として、xmlに書かれた情報を解析していきます。

今回は弾薬や電力など、特定のアイテムの"動力"を定義する、
chargeprofilesテーブルを解析します。

※多分にネタバレを含みます。ご注意ください。




サンプルデータ

データの参照元はchargeprofiles.xmlです。
今回のサンプルは"flashlightの電力"です。
<table name="chargeprofiles">
    <column name="nID">22</column>
    <column name="strName">flashlight electricity</column>
    <column name="strItemID">10.3</column>
    <column name="fPerUse">0</column>
    <column name="fPerHour">1</column>
    <column name="fPerHourEquipped">0</column>
    <column name="fPerHex">0</column>
    <column name="bDegrade">0</column>
</table>


columnの解析

strName定義名です。どこかに表示される、ということはなさそうです。

strItemIDは"動力"として消費されるアイテムのID(GroupID.SubgroupID)です。
サンプルの場合は、"electric charge"を指定しています。

fPerUseはアイテムが使用された時に消費する"動力"の量です。
弾丸や矢などの消費は主にここで指定しています。
また、使用するたびに補充されるpower tapの電力は、ここで負の値を指定しています。

fPerHourはアイテムが1時間ごとに消費する"動力"の量です。
flashlightやノートパソコンなどの電力消費は主にここで指定しています。

fPerHourEquipped装備時、1時間ごとに消費する"動力"の量です。
実例としてあるのはガスマスクのフィルターのみで、
"0.08"…つまり1時間ごとに8%消費するように設定されています。

fPerHexは使用されている形跡がないのでテストしてみましたが、
使用したまま移動してみたり、置いたまま離れて戻ってみても消費はされませんでした。
もしかしたらVehicleの動力用あたりで設定した変数なのかもしれません。

bDegradeもガスマスク用に実装された変数で、
"1"を指定すると消費された時に壊れた/劣化したものに変化します。
ガスマスクの場合は、conditionが0になるとGas Mask Cartridge (spent)に変化します。
もちろん、itemtypesでdegradeの設定はしておく必要があります。


また、いろいろと検証してみた結果ですが、
・ゲーム内で表示される消費量は特定の1つのみが反映される
fPerUse>fPerHourEquipped>fPerHour>fPerHexの順に優先される)
・複数の消費パターンを設定した場合、消費量はすべて反映される
ことが分かりました。

仕様上では複合条件も適用できたため、
PerHourで緩やかに消費しPerUseで大きく消費するようなアイテムも問題なく作れそうですが、
ゲーム内ではPerUseのみの消費しか表記されません
出来れば使用するのはどれか1つだけにした方が良さそうです。

0 件のコメント:

コメントを投稿