データベース「ステート」のメモ欄に記述します。
limitedStateのノートタグを持ったステートは、タグで指示された内容を特徴の発動条件とします。
これはパッシブステートとして永続付与されている場合も例外ではなく、条件を満たさない限りは効果を発揮しなくなります。
また、効果を発揮していない時は戦闘終了以外による自動解除を受け付けません。
継続ターンも効果を発動してからカウントされます。
どうしても強制的に解除したい場合は、イベントコマンドの「ステート解除」を利用してください。
HP90%以下で毒が発生する状態。
HPが回復すると、毒の効果も消えますが、ステート自体は付与されたままです。
limitedStateで指定できる条件内容は、右の通りです。
共通事項として、target は文字列、number は半角数字、option はtrue か falseを記入します。
target の値に応じて number や option の役割が変わってきます。
※細かな仕様
- 判定を取るステータスの参照元:
原則的に、ステートが付与されているアクターまたは敵キャラ自身のステータスを参照します。
weapon armor class item の、敵には無いステータスの場合、敵キャラは常時条件達成とみなされます。
- 敵キャラにおけるlevelの判定:
敵キャラは原則Lv1として見ますが、<level:n>のノートタグを持たせていると、その値で判定を行います。
- actor member enemyの適用範囲:
いずれも条件さえ満たせば、敵味方問わずに効果を発揮します。
「特定の敵がいると復讐心で味方が怒る」「特定の味方がいると敵の士気が下がる」なども再現できます。
- 戦闘テスト中のマップID:
データベースの戦闘テストでは、マップIDは0として保存されています。
実際のゲーム設計ではマップIDが0になることはないので、戦闘テスト中には条件を達成することはできません。
- damaged の注意点:
damagedは文字通り、ダメージを受けた瞬間にのみ条件達成となります。
そのため、後述する<limitTime>を併記することで、初めてステートの効果が発揮されます。
- target
- number
- option(効果発動条件)
- hp
- HP残量割合(%)
- true :HPがnumber%以上
false:HPがnumber%以下
- mp
- MP残量割合(%)
- true :MPがnumber%以上
false:MPがnumber%以下
- tp
- TP蓄積割合(%)
- true :TPがnumber%以上
false:TPがnumber%以下
- state
- ステートID
- true :numberのステート付与中
false:numberのステート付与中でない
- weapon
- 武器ID
- true :numberの武器を装備中
false:numberの装備を外している時
- armor
- 防具ID
- true :numberの防具を装備中
false:numberの防具を外している時
- actor
- アクターID
- true :numberのアクターが加入している
false:numberのアクターが加入していない
- member
- アクターID
- true :numberのアクターが戦闘中
false:numberのアクターが非戦闘中
- level
- レベルの値
- true :バトラーのLvがnumber以上
false:バトラーのLvがnumber以下
- class
- 職業ID
- true :numberの職業に就いている
false:numberの職業に就いていない
- item
- アイテムID
- true :numberのアイテムを所持中
false:numberのアイテムを所持していない
- enemy
- 敵キャラID
- true :numberの敵キャラが生存している
false:numberの敵キャラが死亡している
- map
- マップID
- true :numberのマップにいる
false:numberのマップにいない
- damaged
- ー
- true / false:ダメージを受ける
また、異なる target であれば複数の条件を指定することも可能です。
{"trg":"target", "num": number, "opt":option}を1塊として、カンマ(,)で繋げてください。
この複数条件については、全て満たした場合のみ効果が発動します。
記述例) <limitedState:[{"trg":"hp","num":85,"opt":true}, {"trg":"state","num":10,"opt":false}]>
HPが85%以上で、かつID10のステートが付与"されていない"時にステートの効果が発動します。
<limitTime>
こちらも、データベース「ステート」のメモ欄に記述します。
limitTime を持ったステートは、発動条件を満たして効果を発揮すると、以降は発動条件から外れても効果が残ります。
対してこのノートタグを持たない場合、発動条件から外れた際に効果が途切れ、再び条件を満たすと再度効果が現れます。
上同様、HP90%以下で毒が発生しますが、
回復しても毒の効果は残り続けます。
一見前者の方が「永続効果」のように思えますが、
発動さえしてしまえば以降は恩恵を得られるという、その強すぎる効果に対するリスクとして継続ターンやダメージ・行動制約による自動解除が非常に有効な組み合わせとなります。
後者は発動条件を維持するというリスクが常に付きまとうため、ステートの付与状況自体は永続にしておくことでバランスが取りやすいかと思います。
その観点から、強い効果を抑えるための制約として、<limitTime>を付与すると考えてください。
もっとも、この考え方はあくまでも一例であるので、「圧倒的に強いステートを作る!」という思いでノートタグを持たせない・自動解除の条件を付与しない……ということも十分に設計できます。
ちなみに、β6.1.0〜MELOS単独による永続パッシブステートが実装されました。
組み合わせることで、より多彩なステートが作れるようになるでしょう。
データベース「アクター」「職業」「武器」「防具」「敵キャラ」のメモ欄に記述します。
このノートタグをいずれかの形で持ったアクターや敵キャラは、タグを持っている限り指定されたステートが永続付与されます。
idにはステートのIDを半角数字で記入してください。
上記の<持続型ステート>同様に戦闘不能時や全回復での解除対象から外れます。
さらにこちらは、ノートタグを持つ限りは解除されません。
たとえばアクターと職業でそれぞれ異なるステートIDを指定した場合、アクターがその職業に就いている間は両方のステートが永続付与されます。
また、idをカンマ(,)で繋いでいくことで、1つのノートタグで複数のステートを対象にすることも可能です。
なお、ステートにパッシブステートを持たせたい場合、
<limitedState:[{"trg":"target","num":number,"opt":option}]>でステートを対象にすれば、擬似的に再現することができます。