2015年12月15日火曜日

[Modding]xml解析:encountertriggers

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

今回はencounterの発生条件を定義するencountertriggersテーブルを解析します。

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




サンプルデータ

データの参照元はencountertriggers.xmlです。
今回のサンプルは初めて夜を迎えたときのイベント用トリガーです。
<table name="encountertriggers">
    <column name="id">3</column>
    <column name="strName">First nightfall</column>
    <column name="nEncounterID">23</column>
    <column name="fChance">1</column>
    <column name="bLocBased">0</column>
    <column name="bDateBased">1</column>
    <column name="bHexBased">0</column>
    <column name="bUnique">1</column>
    <column name="bAIPassable">1</column>
    <column name="aArea">0,0,1000</column>
    <column name="dateMin">1000-0-1-22</column>
    <column name="dateMax">9999-11-31-23</column>
    <column name="aHexTypes">1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34</column>
</table>

columnの解析

strName定義名です。どこかに表示されることはありません。

nEncounterIDそのトリガーで発生するencounterのIDです。

fChanceは、条件を満たした時にトリガーが発生する確率です。
基本的には"1"、つまり100%発生するように設定されています。

bLocBased座標ベースのトリガー発生フラグで、
"1"を指定するとaAreaで指定されたエリアに入った時にトリガーが発生します。

bDateBased日時ベースのトリガー発生フラグで、
"1"を指定するとdateMinおよびdataMaxで指定された日時にトリガーが発生します。

bHexBasedHex種別ベースのトリガー発生フラグで、
"1"を指定するとaHexTypesで指定されたHexに入った時にトリガーが発生します。

bUniqueは、そのトリガーが再度発生するかどうかを指定します。
"1"が指定されていれば、トリガーは1度だけ使用されます

bAIPassableに関しては資料がありませんでした。
そのトリガー発生地点をAI(NPC?)が通れるかどうか…みたいなものだと思っていますが、
検証も難しいので、詳細が分かるまでは保留しておきます。

aAreaトリガーが発生するエリア
(x座標,y座標,中心点からの範囲)で指定されます。
基本的には範囲0で運用するようなものですが、
Zom Zom's周辺エリア到達時のイベントで使われるような設定も可能です。

dateMinおよびdateMaxは、そのトリガーが発生しうる時間帯で、
サンプルを例に挙げて説明すると
"1000年1月1日22時から9999年12月31日23時の間"ではなく、
"1000年から9999年、1月から12月、1日から31日、22時から23時の間"
という解釈だと思っています。
(月に関しては"0~11"なので勝手に+1しています。)

つまり年月日は問わず、最初に22時から23時の時間帯になった時に
指定されたイベントが発生する、という仕組みになっているようです。

aHexTypesそのトリガーが発生しうるHexで、
数値はhextypesテーブルのIDに対応しているようです。

encountertriggersはシナリオ作成においてよく使われるため、
細かい条件の設定方法はしっかり頭に入れておきましょう。

また、設定したトリガーはゲーム開始時に適用されます。
トリガー改変後に進行中のセーブデータを読み込んでもそのトリガーは適用されません
テストを行う上で重要なポイントなので覚えておいてください。


0 件のコメント:

コメントを投稿