キャラクターへのセリフの追加

ページ名:キャラクターへのセリフの追加

はじめに

このページでは主にプレイヤーが操作するキャラクターに各種状況に反応したセリフや雑談をしゃべらせたいときの追加方法について説明する。
ダイアログのその他の機能、操作、キャラクターの自作方法などについてはFCSの外部リンクからFCS講座の視聴を推奨する。


状況に対応したセリフの追加

状況に応じたセリフを追加するには、そのキャラクターが持っているダイアログパッケージに対し、
会話を発生させたいイベント(状況)に応じたダイアログを追加し、セリフを設定すればいい。
たとえば戦闘に勝利したときのセリフを追加したいなら「EV_DEFEATED_SQUAD」イベントにダイアログを追加する。
このように追加したい状況と一致したイベントが用意されているならそのイベントにダイアログを追加するだけでいい。しかし戦闘中に掛け声を発させたいという場合は、「戦闘中」という状況を指すイベントがないためイベントと条件を組み合わせる必要がある。


条件


セリフの発生条件として設定できる項目としてConditions、それから右上の項目がある。
ダイアログ全体、または各セリフに条件をつけることで状況を絞り込んだり分岐したりさせることが出来る。
ほとんどのConditionsは==0(条件と不一致)または==1(条件を一致)を指定する。複数のConditionsを指定した場合はその全てを満たす場合という条件になる。


セリフの追加例と設定方法

セリフを追加したい状況使用するイベント名条件備考
戦闘に勝利したときEV_DEFEATED_SQUAD戦闘が終了する最後の一撃を与えたキャラクターが発する。
戦闘中EV_I_SEE_ALLY_PLAYERDC_IN_COMBAT==1仲間キャラを見た時、という条件上仲間が居ないと発生しない。
EV_I_SEE_ENEMY_PLAYERでいいと思うかもしれないが、理由は不明だが実際の発生頻度が少ない。
気絶から復帰したときEV_GET_UP_PEACE気絶からの復帰(その時点で戦闘が終了している場合)
EV_GET_UP_FIGHT気絶からの復帰(その時点で戦闘が継続している場合)
EV_GET_UP_UNNECCESSARY_FIGHT死んだふりからの復帰
他者の治療を開始EV_HEALNG_OTHER_STARTtarget 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_PLAYERDC_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_LOCKPICKNPCが犯罪をすることは少ないのでこのイベントがこれ以外の時に発生するかは不明
敵の追跡を諦めたとき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_TAGT_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 factionTARGETの所属が指定した勢力である
target raceTARGETが指定した種族を含む種族グループに属しているmy raceと同様の判定
target has itemTARGETが指定したアイテムを持っている部隊員のいずれかが持っていれば判定一致となる。
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」というダイアログにまとめられていることが多いので、そのダイアログに追加してもいい。


シェアボタン: このページをSNSに投稿するのに便利です。

コメント

返信元返信をやめる

※ 悪質なユーザーの書き込みは制限します。

最新を表示する
名無し
ID:ZmNjYzliM

spanclassを使って改行なしにすることができたので見づらかったのを修正しました。

返信
2022-02-02 17:55:28

名無し
ID:MzRmZmUwO

安定版がver.1.0.55になってからEventsの並び順が変わったみたい
これまでみたいに項目ごとじゃなくてABC順になってる

返信
2021-12-18 23:30:24

名無し
ID:NmE5OTVlY

>> 返信元

しばらくEV_LAUNCH_ATTACKにセリフを指定してプレイしてみましたが、発言を確認できませんでした。
パラディンの例ではEV_I_SEE_ENEMY_PLAYERにも同じダイアログが設定されてるようなのでそちらのイベントが発生しているのか、あるいはNPCとプレイヤーキャラではイベントの発生条件が違うのかもしれません。

返信
2021-11-18 23:06:32

名無し
ID:M2Q2NTE3N

>> 返信元

寝袋で寝てた隠密暗殺系キャラの懐を餓えた野盗が漁って何事もなく食料盗んで去っていったのを何度か見たので多分プレイヤーキャラでは発動しないと思われ。

返信
2021-11-11 00:41:43

名無し
ID:MmUxMzI4N

>> 返信元

プレイヤーキャラがベッドで寝ているときに窃盗AIを持つNPCが持ち物を盗もうとして失敗したっていう極めてまれな状況下でのみ言うかもしれないので自作のMODユニークには一応追加してあるけど、ぶっちゃけ見たことはない…。まあNPCキャラ向けかも

返信
2021-11-10 00:02:37

名無し
ID:N2UyNDJjY

>> 返信元

ありがとうございます。大体追加しましたが、EV_ALMOST_WOKE_UPはプレイヤーキャラが言う状況はあるんでしょうか?

返信
2021-10-31 17:13:30

名無し
ID:MmU4ZGVlY

>> 返信元

ここのページにも書いてあるけど、「特定の誰かに向けて話しかける」みたいなことは出来ないから、無理やりそういうことをやろうとして失敗してるとかじゃないかな…
もう少し詳しく状況を述べていただかないことには何とも
ダイアログは複雑だしステルス変更も多いから「理論上このように設定すれば動くはずだが何故かうまくいかない」ということも多々ある
なので、何をどうしたか事細かに説明しないと特定しづらいよ

返信
2021-10-27 03:24:43

名無し
ID:ZWMzODE3Y

>> 返信元

ビープだけしか指定できないなんてことは無いと思います…たとえば「Misc biome entry」にはグリフィンをはじめとして色々なキャラのis character指定がありますし、私の自作キャラクターでも認識しました。
このページに書いてあるようなダイアログや条件指定の決まりから外れてしまっていて正しく動いていないのではないでしょうか?

返信
2021-10-27 00:47:04

名無し
ID:Mjg5Mjk4Y

ちょうどダイアログを弄っていたので助かります
ところでis characterを弄ってみたんですが特定のユニークに指定したのですがうまくいきません
ゲーム中でもビープにしか使われてない仕様だと思いますが、やはり彼が特別だからということでしょうか?

返信
2021-10-26 17:21:29

名無し
ID:YzE4MmZmO

EV_SPEECH_INTERRUPTED~
そのキャラが何か喋ってるときに攻撃を受けると言うらしい。例としてスケルトンの観光ガイド中に攻撃を受けると発生
ただし別に喋ってなくても単に攻撃を受けたときにも言ったりする。なんなら狙われた(アイコンが赤く点滅した)だけでも言うことがある。違いはよく分からない

あんまり連投するのもあれなのでプレイヤーセリフに役立ちそうなものを重点的に解説してみた
今回挙げなかったEventsもいくつかは使い方を知ってるから尋ねてくれれば答えられるかも

返信
2021-10-26 12:32:24

名無し
ID:YzE4MmZmO

EV_ALMOST_WOKE_UP
キャラAがベッドに寝ているときにキャラBが窃盗やステルスKOなどを試みたが失敗した。そのときAがこのセリフを言う。「テディ?テディ?」
EV_EATING_CROPS
ラプターが畑の作物を食い荒らし始めたときのブチ切れセリフ
EV_KIDNAPPING_ALLY
同盟関係にあるキャラが誘拐されかけているとき。解放した奴隷がまた攫われたときなどにも発生するので使い勝手が良くない
EV_GIVE_UP_CHASE
追跡を諦めたとき。プレイヤーも一応言うが滅多にお目にかかれない

返信
2021-10-26 12:15:29

名無し
ID:YzE4MmZmO

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
近くで鍵開けしている者がいるときのコメント?敵が自拠点のドアを叩き壊そうとしているときに発生を確認

返信
2021-10-26 12:05:25

名無し
ID:YzE4MmZmO

とりあえず私が知ってる限りの情報を書いてみます

・target raceやmy raceなどは種族の大カテゴリであるrace groupをチェックしている。厳密に種族を指定したい場合はmy subraceのほうで。target subraceは無いので相手の厳密な種族の判定はできない
・コンディションのDC_IS_SAME_RACE_AS_MEもrace group判定
・戦闘時のダイアログはEV_LAUNCH_ATTACK(launch attack=攻撃開始)でいけそう ※未検証
パラディンの「またお前か!?」とかのお馴染みのセリフがここに関連付けられている

返信
2021-10-26 11:46:40

名無し
ID:NWNiMzcyZ

複雑で分からないところが多いため曖昧、大雑把、間違いのある内容になっていると思いますが訂正などあればご指摘お願いします。

返信
2021-10-10 13:41:40

NG表示方式

NGID一覧