本稿ではMOD作成の前提として、xmlに書かれた情報を解析していきます。
今回はあらゆる状態・フラグを設定しているconditionsテーブルです。
ほぼすべての行程に絡んでくる要素なので、うまく使えるようになりましょう。
※多分にネタバレを含みます。ご注意ください。
サンプルデータ
データの参照元はconditions.xmlです。
今回はpoisonedの2段階目がサンプルです。
<table name="conditions">column解析
<column name="id">78</column>
<column name="strName">Poisoned 2</column>
<column name="strDesc"><us> has poison stage 2.</column>
<column name="aFieldNames">m_fImmuneLeft,m_fImmuneRestoreRate</column>
<column name="aModifiers">-0.01,-0.02</column>
<column name="aEffects"></column>
<column name="bFatal">0</column>
<column name="vIDNext">79,65,608</column>
<column name="fDuration">24</column>
<column name="bPermanent">0</column>
<column name="vChanceNext">0.7</column>
<column name="bStackable">0</column>
<column name="bDisplay">1</column>
<column name="bDisplayOther">0</column>
<column name="bDisplayGameOver">1</column>
<column name="nColor">1</column>
<column name="bResetTimer">1</column>
<column name="bRemoveAll">0</column>
<column name="bRemovePostCombat">0</column>
<column name="nTransferRange">-1</column>
<column name="aThresholds"></column>
</table>
こちらのConditions Infoにも補足説明があります。
解読・翻訳する形で説明していきます。
strNameは定義名です。
strDescはconditionの説明文で、死亡時のログにも(一部)表示されます。
aFieldNamesはそのconditionで変化を与えるパラメータで、
aModifiresが具体的なパラメータの変化量です。
この2つはセットで扱われるため、並びには十分注意してください。
aEffectsはパラメータ変化以外に設定する効果で、
指定したconditionへの"耐性"を与えるSetImmunityや、
conditionを付加したり除去したり出来るChainCondition、
アイテムを生成するAddItemGroundなど、便利な機能が色々使えるようです。
bFatalに"1"を指定すると、そのconditionが付加された時点で死亡してしまいます。
encounterでの死亡などに使われる要素です。
一部の"死因"となるcondition以外では"0"を指定してください。
vIDNextは、condition消失時に派生するconditionのIDです。
サンプルでは、poisonの次のステージとしての"79(Poisoned 3)"と、
進行時に発症する"65(Diarrhea)"、"608(Severe Abdominal Pain)"が指定されています。
fDurationはそのconditionが持続する時間(ターン数)です。
設定したターン数が経過するとconditionは消失します。
"0"が指定されていると、能動的に除去されるまで消えることはありません。
bPermanentに"1"が指定された場合、そのconditionの"効果"が永続的になります。
conditionが除去されればcondition自身は消えてしまいますが、
その効果はずっと残ることになります。
vChanceNextは、そのconditionがfDulationで設定した時間経過で消失する時、
vIDNextで設定したconditionに派生する確率です。
サンプルのように値が1つなら、70%の確率で3つの症状を発症します。
また、別の用法として、
<column name="vIDNext">-198,-199,-200,-202,-203</column>上のサンプルのように、IDNextの数だけ確率を設定するケースもあります。
<column name="vChanceNext">0.5,.025,.0125,1,0.5</column>
bStackableに"1"を指定した場合、同じconditionが複数回付与された時、
その効果も重複して与えられることになります。
例えば、"シャツを着る"conditionによる防寒性・防御力の付与は
重ね着した分だけ上乗せされるよう、bStackableに"1"が指定されています。
一定数スタックした時に追加の効果を与える時は、
後述のaThresholdsで設定することになります。
bDisplayが"1"だった場合、そのconditionが付与された時に
ログとcondition一覧にその情報が表示されます。
イベントフラグなど、表に出したくないものは"0"を指定しておきましょう。
bDisplayOtherはその亜種で、"1"設定でNPCにそのconditionが付与された場合、
ログや戦闘時のcondition表記などに情報が表示されることになります。
bDisplayGameOverが"1"なら、
そのconditionはゲームオーバー時のログに表示されます。
nColorは、そのconditionが表示されるときの色です。
"0"なら白、"1"なら赤、"2"なら緑、"3"なら黄色で表示されます。
bResetTimerが"1"なら、
そのconditionがスタックした場合に消失までのタイマーをリセットします。
bRemoveAllが"1"なら、スタックした同一conditionが1つ取り除かれた時
そのスタック全体が除去されます。
bRemovePostCombatが"1"なら、そのconditionは戦闘終了後に除去されます。
nTransferRangeは、戦闘中に相手がそのrange内にいると
そのconditionを感染させる可能性が発生するようです。
実例がBlue Rot関係とSmallpoxしかないため、
感染のプロセスや感染率など、細かい仕様は分かりませんでした。
vIDNextとvChanceNextも関係しそうですが、要検証と言うことで置いておきます。
aThresholdsは、一定数スタックしたconditionに別のconditionを付与する設定です。
例えば、
<column name="aThresholds">5=100;10=101</column>
と表記したとき、
このconditionが5回スタックするとidが100のconditionを、
同様に10回でidが101のconditionを追加で付与されることになります。
他の項目で作成した"骨格"に、"効果"を与えるのがconditionsテーブルの本質です。
Mod作成やデータの改造にはまず避けて通れない部分なので、
特にaFieldNamesやaEffectsなどで何が出来るかはしっかりと把握しておきましょう。
0 件のコメント:
コメントを投稿