はじめに
このページでは主にプレイヤーが操作するキャラクターに各種状況に反応したセリフや雑談をしゃべらせたいときの追加方法について説明する。
ダイアログのその他の機能、操作、キャラクターの自作方法などについてはFCSの外部リンクからFCS講座の視聴を推奨する。
状況に対応したセリフの追加
状況に応じたセリフを追加するには、そのキャラクターが持っているダイアログパッケージに対し、
会話を発生させたいイベント(状況)に応じたダイアログを追加し、セリフを設定すればいい。
たとえば戦闘に勝利したときのセリフを追加したいなら「EV_DEFEATED_SQUAD」イベントにダイアログを追加する。
このように追加したい状況と一致したイベントが用意されているならそのイベントにダイアログを追加するだけでいい。しかし戦闘中に掛け声を発させたいという場合は、「戦闘中」という状況を指すイベントがないためイベントと条件を組み合わせる必要がある。
条件
セリフの発生条件として設定できる項目としてConditions、それから右上の項目がある。
ダイアログ全体、または各セリフに条件をつけることで状況を絞り込んだり分岐したりさせることが出来る。
ほとんどのConditionsは==0(条件と不一致)または==1(条件を一致)を指定する。複数のConditionsを指定した場合はその全てを満たす場合という条件になる。
セリフの追加例と設定方法
セリフを追加したい状況 | 使用するイベント名 | 条件 | 備考 |
---|---|---|---|
戦闘に勝利したとき | EV_DEFEATED_SQUAD | 戦闘が終了する最後の一撃を与えたキャラクターが発する。 | |
戦闘中 | EV_I_SEE_ALLY_PLAYER | DC_IN_COMBAT==1 | 仲間キャラを見た時、という条件上仲間が居ないと発生しない。 EV_I_SEE_ENEMY_PLAYERでいいと思うかもしれないが、理由は不明だが実際の発生頻度が少ない。 |
気絶から復帰したとき | EV_GET_UP_PEACE | 気絶からの復帰(その時点で戦闘が終了している場合) | |
EV_GET_UP_FIGHT | 気絶からの復帰(その時点で戦闘が継続している場合) | ||
EV_GET_UP_UNNECCESSARY_FIGHT | 死んだふりからの復帰 | ||
他者の治療を開始 | EV_HEALNG_OTHER_START | target factionをNameless(プレイヤー勢力)の指定をするのもあり | |
他者から治療を受ける | EV_BEING_HEALED_START | ||
他者の治療を完了 | EV_HEALNG_OTHER_FINISHED | ||
他者から治療を受け終わる | EV_BEING_HEALED_FINISHED | ||
治療キットを使い切ったとき | EV_FIRSTAID_KIT_EMPTY | ||
他のキャラクターを発見したとき | EV_I_SEE_NEUTRAL_SQUAD | 条件と組み合わせることで様々な状況を表現可能 | |
カニバルやフォグマンの檻に入れられたとき | EV_MARKED_FOR_DEATH | ||
皮剥ぎ機に入れられたときや生きたまま食われているとき | EV_SCREAMING_TORTURE | ||
檻の中のキャラクターに喋らせる | EV_I_SEE_ALLY_PLAYER | DC_IS_IMPRISONED==1 | 檻の中からはEV_I_SEE_ALLY_PLAYERを含むほとんどのイベントが発生しない。外から中を見た場合はEV_I_SEE_ALLY_PLAYERが発生するので、外のキャラが会話を開始し、中のキャラが返答する形になる |
自分が入れられている檻or枷を解錠してもらったとき | EV_UNLOCK_MY_CAGE_OR_SHACKLES | ||
自分が入れられている檻or枷の解錠に失敗したとき | EV_UNLOCK_MY_CAGE_ATTEMPT | ||
近くで戦いが起きたとき | EV_WITNESS_GENERIC_ASSAULT | ||
ラプターが畑の作物を食い荒らし始めたとき | EV_EATING_CROPS | プレイヤーキャラはデフォルトでこれが設定されていて、EffectsにDA_ATTACK_CHASE_FOREVERが設定されていて自動的に戦闘を開始する | |
味方が剥ぎ取りされたのを目撃したとき | EV_WITNESS_LOOTING_ALLY | ||
自拠点のドア(門)が攻撃されているとき | EV_WITNESS_THIEF_OR_LOCKPICK | NPCが犯罪をすることは少ないのでこのイベントがこれ以外の時に発生するかは不明 | |
敵の追跡を諦めたとき | EV_GIVE_UP_CHASE | ||
同盟関係にあるキャラが誘拐されかけているとき | EV_KIDNAPPING_ALLY | 解放した奴隷がまた攫われたときなどにも発生するので使い勝手が良くない | |
そのキャラが何か喋ってるときに攻撃を受ける | EV_SPEECH_INTERRUPTED | 例としてスケルトンの観光ガイド中に攻撃を受けると発生 ただし別に喋ってなくても単に攻撃を受けたときにも言ったりする。狙われた(アイコンが赤く点滅した)だけでも言うことがある バニラでの例:襲撃で口上の最中に攻撃したときや非敵対の相手に攻撃したときの「ああ!」など。 | |
プライベート状態の拠点に不法侵入したキャラクターを目撃したとき | EV_INTRUDER_FOUND | 拠点がパブリックでキャラバンなどがたむろしているときにプライベートに切り替えると彼らは退出するが、門から出るまでの間はこのイベントが発生するので注意 |
条件の例
Conditions
条件名 | 説明 | 備考 |
---|---|---|
DC_IS_IMPRISONED | 牢屋に入れられている状態 | |
DC_PERSONALITY_TAG | キャラクターに設定されている性格を判断する | TAGに性格を指定し、==0で指定した性格との不一致、==1で性格との一致を判定する。 そのセリフの発言者の性格しか判定できない(T_MEの発言ならT_MEの、T_TARGETの発言ならT_TARGETの性格のみ) |
DC_IS_NEARLY_KO | 気絶が近い | |
DC_IM_UNARMED | 武器を持っていない(武器1、2欄だけでなくインベントリのどこにも持っていない) | |
DC_IS_SNEAKING | 隠密状態 | |
DC_IN_COMBAT | 戦闘状態 | |
DC_HAS_ROBOT_LIMBS | ロボット部位を持っている(義肢またはスケルトン) | |
DC_HAS_TAG | T_TARGETとDC_HAS_TAG==1とTagを指定することで条件が指定できる模様。 | LT_SQUAD_LOST_TO_ME_ONCE 相手は一度自分たちに敗れている。例:もっと痛めつけられに来たのか?なあ? LT_DEFEATED_MY_SQUAD_ONCE 相手は一度自分を倒している。例:おい、こっちへ来い!お前には借りが... LT_SQUAD_LOST_TO_ME_ONCE についてはプレイヤーキャラでも発生することを確認。覚えている期間は不明。 |
右上の条件
基本的にはspeakerについて判定を行う。
条件名 | 説明 | 備考 |
---|---|---|
has package | 指定したダイアログパッケージを持っている | |
in town of | 指定した勢力の町にいる | |
is character | 指定したキャラクターである | プレイヤーキャラクターがTARGETである場合、speakerをT_TARGETでなくT_TARGET_IF_PLAYERにしないと判定がされないことがある |
my faction | 所属は指定した勢力である | |
my race | 指定した種族を含む種族グループに属している | たとえばスコーチランダーを設定した場合、人間グループに含まれるグリーンランダ―、スコーチランダ―のどちらかであれば判定一致とする。 |
my subrace | 指定した種族である | 正確に種族を判定するときはmy raceではなくこちらを使う。 |
target faction | TARGETの所属が指定した勢力である | |
target race | TARGETが指定した種族を含む種族グループに属している | my raceと同様の判定 |
target has item | TARGETが指定したアイテムを持っている | 部隊員のいずれかが持っていれば判定一致となる。 |
world state | ワールドステートの指定 |
注意点
ダイアログは一見してわからない仕様や上手く機能していない条件が多く、使用には注意が必要である。
- 最初のセリフはT_MEでないといけない(無言にしたり別の話者を指定すると発言者や分岐の判断が正しく行われない)
- target race指定は機能しないことがある?(ミウのスパイダー発見ダイアログでは正しく動作しているが)
以上のことから、T_MEが発言する前に分岐をすることができないため、「相手によって第一声を変える」というのは難しい。例として、あるキャラクターが特定のキャラクターを治療したときだけかける声を変えたいという希望は現状ではできない。T_MEに汎用セリフを言わせ、次にT_TARGET_IF_PLAYERに反応セリフを言わせ分岐し、T_MEに専用セリフを言わせるといったやり方しかない。もしやり方を知っているという人が居たら教えてください。
対話形式の会話では一部の条件判定がおかしくなる
店員に話しかけた時のような、ゲームが一時停止して選択肢が出るようなタイプの会話では条件判定がおかしくなることがある。speakerがTARGET_IF_PLAYERであっても、is character・has packageの判定がT_MEに対して行われる模様。
フィールド移動時の雑談
フィールドを歩いていると時折発生する雑談は、実際には別のバイオームに移動したときにそのバイオームに設定された会話が呼び出されている。追加したい場合はBiomes->Spawn Areaの各エリアの設定項目にある「arrival dialog」に設定する。
一般的な雑談はDialog Package->Dialogの「Misc biome entry」というダイアログにまとめられていることが多いので、そのダイアログに追加してもいい。
コメント
最新を表示する
spanclassを使って改行なしにすることができたので見づらかったのを修正しました。
安定版がver.1.0.55になってからEventsの並び順が変わったみたい
これまでみたいに項目ごとじゃなくてABC順になってる
>> 返信元
しばらくEV_LAUNCH_ATTACKにセリフを指定してプレイしてみましたが、発言を確認できませんでした。
パラディンの例ではEV_I_SEE_ENEMY_PLAYERにも同じダイアログが設定されてるようなのでそちらのイベントが発生しているのか、あるいはNPCとプレイヤーキャラではイベントの発生条件が違うのかもしれません。
>> 返信元
寝袋で寝てた隠密暗殺系キャラの懐を餓えた野盗が漁って何事もなく食料盗んで去っていったのを何度か見たので多分プレイヤーキャラでは発動しないと思われ。
>> 返信元
プレイヤーキャラがベッドで寝ているときに窃盗AIを持つNPCが持ち物を盗もうとして失敗したっていう極めてまれな状況下でのみ言うかもしれないので自作のMODユニークには一応追加してあるけど、ぶっちゃけ見たことはない…。まあNPCキャラ向けかも
>> 返信元
ありがとうございます。大体追加しましたが、EV_ALMOST_WOKE_UPはプレイヤーキャラが言う状況はあるんでしょうか?
>> 返信元
ここのページにも書いてあるけど、「特定の誰かに向けて話しかける」みたいなことは出来ないから、無理やりそういうことをやろうとして失敗してるとかじゃないかな…
もう少し詳しく状況を述べていただかないことには何とも
ダイアログは複雑だしステルス変更も多いから「理論上このように設定すれば動くはずだが何故かうまくいかない」ということも多々ある
なので、何をどうしたか事細かに説明しないと特定しづらいよ
>> 返信元
ビープだけしか指定できないなんてことは無いと思います…たとえば「Misc biome entry」にはグリフィンをはじめとして色々なキャラのis character指定がありますし、私の自作キャラクターでも認識しました。
このページに書いてあるようなダイアログや条件指定の決まりから外れてしまっていて正しく動いていないのではないでしょうか?
ちょうどダイアログを弄っていたので助かります
ところでis characterを弄ってみたんですが特定のユニークに指定したのですがうまくいきません
ゲーム中でもビープにしか使われてない仕様だと思いますが、やはり彼が特別だからということでしょうか?
EV_SPEECH_INTERRUPTED~
そのキャラが何か喋ってるときに攻撃を受けると言うらしい。例としてスケルトンの観光ガイド中に攻撃を受けると発生
ただし別に喋ってなくても単に攻撃を受けたときにも言ったりする。なんなら狙われた(アイコンが赤く点滅した)だけでも言うことがある。違いはよく分からない
あんまり連投するのもあれなのでプレイヤーセリフに役立ちそうなものを重点的に解説してみた
今回挙げなかったEventsもいくつかは使い方を知ってるから尋ねてくれれば答えられるかも
EV_ALMOST_WOKE_UP
キャラAがベッドに寝ているときにキャラBが窃盗やステルスKOなどを試みたが失敗した。そのときAがこのセリフを言う。「テディ?テディ?」
EV_EATING_CROPS
ラプターが畑の作物を食い荒らし始めたときのブチ切れセリフ
EV_KIDNAPPING_ALLY
同盟関係にあるキャラが誘拐されかけているとき。解放した奴隷がまた攫われたときなどにも発生するので使い勝手が良くない
EV_GIVE_UP_CHASE
追跡を諦めたとき。プレイヤーも一応言うが滅多にお目にかかれない
EV_UNLOCK_MY_CAGE_OR_SHACKLES
自分が入れられている檻or枷を解錠してもらったとき
EV_UNLOCK_MY_CAGE_ATTEMPT
上とほぼ同じだが、解錠に失敗したとき
EV_WITNESS_GENERIC_ASSAULT
近くで戦いが起きたとき。 例)「戦いだ!」「デカいほうに12cats!」
EV_WITNESS_LOOTING_ALLY
味方が剥ぎ取りされたのを目撃したとき?
EV_WITNESS_THIEF_OR_LOCKPICK
近くで鍵開けしている者がいるときのコメント?敵が自拠点のドアを叩き壊そうとしているときに発生を確認
とりあえず私が知ってる限りの情報を書いてみます
・target raceやmy raceなどは種族の大カテゴリであるrace groupをチェックしている。厳密に種族を指定したい場合はmy subraceのほうで。target subraceは無いので相手の厳密な種族の判定はできない
・コンディションのDC_IS_SAME_RACE_AS_MEもrace group判定
・戦闘時のダイアログはEV_LAUNCH_ATTACK(launch attack=攻撃開始)でいけそう ※未検証
パラディンの「またお前か!?」とかのお馴染みのセリフがここに関連付けられている
複雑で分からないところが多いため曖昧、大雑把、間違いのある内容になっていると思いますが訂正などあればご指摘お願いします。
NG表示方式
NGID一覧