2015年1月19日月曜日

[Modding]xml解析:creatures


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

今回は遭遇NPC全般を定義した"creatures"テーブルと、
そこから参照されるデータを解析します。
ただし、正確なリファレンスに従ったものではないため、
あくまで"たぶんこうじゃないかな"というレベルであることをご理解ください。

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



サンプルデータ

データの参照元はcreatures.xmlです。
今回はサンプルとして、id2番のLooterのデータを用意しました。

<table name="creatures">
            <column name="id">2</column>
            <column name="strName">Looter</column>
            <column name="strNamePublic">Stranger</column>
            <column name="strNotes">Biddy personality</column>
            <column name="strImg">CreHuman.png</column>
            <column name="vEncounterIDs">1328,1362,1345,1335,1399,2241</column>
            <column name="nMovesPerTurn">4</column>
            <column name="nTreasureID">70</column>
            <column name="nFaction">2</column>
            <column name="vAttackModes">1</column>
            <column name="vBaseConditions">51=0.5,52=0.5,61=0.5,71=0.5,81=0.5,150=0.5,151=1,207=0.5,210=1,210=1,473=1,494=1,535=1</column>
            <column name="nCorpseID">402</column>
            <column name="vActivities">reading the label on some trash,picking their nose,counting on their fingers,pacing,standing guard</column>
</table>
columnの解析

では、項目ごとに確認していきましょう。
strNameはそのままNPCの名前で、
strNamePublicがStrangerということは、不確定名が入る項目です。

strNotesはメモ用のスペースなので基本的に空欄です(今回は入っていますが)。
例えば同じ名前の複数NPCを作った場合に、ここで分類用のラベルを付けたりします。

strImgも使用する画像だけなので特に言及しません。

vEncounterIDsは、おそらく会話した時に発生するEncounterです。
Dogmanなどのミュータントには用意されていませんが、
会話(少なくともコミュニケーション的な)イベントを設定することも可能でしょう。
詳しくは"encounters"テーブルを参照することになります。

nMovesPerTurnは1ターン分の行動力だと思われます。
Conditionによる増減や地形の影響を受けるかどうかは確認していません。

nTreasureIDはそのNPCが持つ可能性があるアイテムを設定しています。
"treasuretable"テーブルを参照すると、
Random ShirtやRandom Pantsといった名前の別テーブルを参照していました。
服や装備、コンテナ系アイテムといったものが設定されているので、
いわゆるドロップテーブルではなく、NPC生成時に参照されるものだと思われます。

nFaction"factions"テーブルで定義される所属勢力です。
内容としては、他factionに対する友好・中立・敵対関係を設定しているようです。

vAttackModesは何も持たないときの攻撃方法です。
"attackmodes"テーブルを参照し、人ならばpunchだったり、
Dogmanならclawだったりします。

vBaseConditionsは初期状態で持っているConditionです。
"conditions"テーブルを参照して、
目に見えるものならStrongやToughといったもの、
目に見えない部分では"アイテムを拾う"や"夜行性"といった要素を設定します。
本質的部分は"conditions"テーブルの解説で行います。

nCorpseIDは倒した時に出る死体を"treasuretable"で定義しています。

vActivitiesはログに表示される文章らしく、
"ストレッチをしている"だとか"匂いを嗅いでいる"といった、
いわゆるフレーバー的なものが書かれています。

ざっと見てわかるように、このテーブル内では
キャラクターとしての性能はほとんど記述されていません。
なので、オリジナルのNPCを作成したい場合は、
少なくとも"conditions""treasuretable"テーブルを解読する必要がありそうです。

0 件のコメント:

コメントを投稿