Kenshi
评价数不足
FCS:対ユニーク会話の作り方
由 Lucius 制作
ユニークNPCやユニークPCによる固有会話のノウハウを解説します。

本ガイドは、FCSによるダイアログの作成方法を知っている方を対象としています。FCSの操作やダイアログ作成の基本的なことには触れませんので、予めご了承ください。
   
奖励
收藏
已收藏
取消收藏
序章
以下のケースを題材に対ユニーク会話の実装方法を説明します。
  1. 特定PC同士の固有会話
  2. 特定NPCと特定PCの固有会話
  3. 特定NPCと特定PC複数人の固有会話
  4. 特定NPCと特定PCの固有会話(EV_PLAYER_TALK_TO_ME)
  5. 特定PC、NPCに対して第一声の内容を変える
また、本ガイドは、target raceやtarget has itemを使わない方法で解説します。
特定PC同士の固有会話
実装方法は2つあります。

1. Interjection Node
Interjection Nodeにis characterを設定すれば、MEと同じ部隊にいる特定のキャラクターを会話に参加させることができます。


ME行よりも前にInterjection Nodeを置くことも可能です。この場合は、全員揃わないと会話が始まりません。


Interjection Nodeで選出されるには、MEとの距離が一定以内である必要があります。(DC_TARGET_IN_TALKING_RANGEの約2倍)

(訂正)
Interjection Nodeによる選出後にINTERJECTORが不発する件は、ダイアログ以外が原因と思われるので、取り下げました。

2. T_TARGET_IF_PLAYER
EV_I_SEE_ALLY_PLAYERやEV_HEALING_OTHER_START等、MEとTARGETが両方ともプレイヤーとなる場合は、speakerをT_TARGET_IF_PLAYERにして、is characterを設定すれば、特定PC固有の応答が可能です。


ただし、これだけでは、最初から特定のキャラを意識した発言ができません。解決方法は、後のセクションで解説します。
特定NPCと特定PCの固有会話
この場合でも、speakerをT_TARGET_IF_PLAYERにして、is characterを設定すれば、特定のPCに固有のセリフを発言させることができます。


制限事項
ダイアログの起動可否自体は、制御できません。
また、最初から特定のキャラを意識した発言ができません。解決方法は、後のセクションで解説します。
特定NPCと特定PC複数人の固有会話
実装困難その1です。

PC側にダイアログを設定した場合、2つ問題点があります。
  • EV_I_SEE_NEUTRAL_SQUADで特定のNPCを識別できない(疑似的なら可能)
  • 同盟関係になるとEV_I_SEE_NEUTRAL_SQUADが使えない
NPC側にダイアログを設定しても、「Interjection Nodeの選出対象は、MEの部隊のみ」という制限に阻まれます。

今回は、crowd triggerを利用する方法で問題を解決させます。

実装方法
特定のNPCにEV_I_SEE_NEUTRAL_SQUAD(EV_I_SEE_ALLY_PLAYER)のダイアログを追加します。


TARGET行にcrowd triggerを設定します。


crowd triggerで起動させるダイアログのInterjection Nodeで特定のPCを選出


解説
TARGET行にcrowd triggerを設定すると、MEとTARGETが入れ替わった状態でダイアログが起動します。PC側がMEになるので、Interjection Nodeを使って特定のPC複数とNPCで会話できるようになります。

部隊メンバーが一斉に同じセリフを話すので、適切な条件を付与して一人だけ会話するようにしてください。例えば、T_ME:DC_IS_LEADER==1やis characterでユニーク指定なら必ず一人だけ会話します。ただし、条件は、最初のME行につけないと機能しません。(ROOT行に付与した条件は無視されます)

また、crowd triggerを起動した時のTARGET行のセリフは、会話ログに残りますが、キャラの頭上には表示されません。DA_FORCE_SPEECH_TIMERを使っても表示されないので、「...」にしておくのが無難です。

制限事項
  • 最初のセリフはNPCになります。
  • crowd trigger起動者の部隊メンバーが全員相手の方を向いてしまいます。動作に問題ありませんが、プレイヤーによっては、挙動がおかしくなったと思うかもしれません。
特定NPCと特定PCの固有会話(EV_PLAYER_TALK_TO_ME)
※ここで紹介する方法は、仕様外の動作を利用しています。現在の安定版1.0.55で問題なく動作していますが、将来のバージョンで機能しなくなる可能性があります。


実装困難その2です。

EV_PLAYER_TALK_TO_MEは、T_TARGET_IF_PLAYERであっても、is characterがMEを参照してしまい、特定のキャラクターで会話分岐ができません。
しかし、特定のダイアログ構成にすると、分岐可能になります。

実装方法
画像のようなダイアログ構成にすると、TARGETがis characterを満たした場合に会話が分岐します。また、is characterを使う行のspeakerは、T_TARGETではなくT_TARGET_IF_PLAYERにしてください。


実際に会話した時の内容

TARGETがビープ以外の場合


TARGETがビープの場合


解説
EV_PLAYER_TALK_TO_MEは、MEのセリフとTARGETのセリフ(選択肢)を同時に表示するというルールが存在しています。
しかし、今回用意したダイアログは、TARGET行の直後にTARGET行というルールから外れた構成になっています。
この場合、ゲーム側でフォールバックが作用し、TARGET行をMEのセリフとして処理しますが、speakerの参照先はMEとTARGETの両方となります。

この挙動を利用することで、MEが必ずFalseとなる条件(is characterにユニークキャラを指定する等)しか使えませんが、is character等をTARGETで判定可能になります。
特定のPC、NPCに対して第一声の内容を変える
実装困難その3です。

ダイアログは、最初の発言がMEであることが必須です。そのため、相手に応じて第一声を変えるには、MEの発言前にTARGETの条件を設定する必要があります。しかし、利用できるのは、一部を除くConditionsやtarget race、target has itemなどspeakerに依存しない条件に限られ、is characterは利用できません。

今回は、Word Swapsを活用して、相手に応じて第一声の内容を変化させます。

実装方法
まずは、ダイアログ本体を用意します。最初のセリフ全体をWord Swapにしておきます。


Word SwapsにT_TARGET行を追加して、is characterを設定します。


会話が始まると相手に応じて第一声の内容が変化しています。

TARGETがビープ以外の場合


TARGETがビープの場合


解説
Word Swapsにおけるis characterは、ダイアログと異なる動きをします。
  • ME行で呼び出したWord Swaps
    Word Swaps側のspeakerをT_TARGETにするとTARGETを参照して判定

  • TARGET行で呼び出したWord Swaps
    Word Swaps側のspeakerをT_TARGETにするとMEを参照して判定
    ただし、EV_PLAYER_TALK_TO_MEでは判定不可

    前回参加したEV_PLAYER_TALK_TO_ME以外のダイアログに応じて変化
これを利用して最初のME行で相手に応じたセリフに差し替え可能になります。

制限事項
  • セリフの差し替えのみで、会話分岐はしません。
  • TARGET行は、判定対象が不安定になります。
    MEに応じたセリフは、ダイアログ側で分岐させる方が安全です。
  • 余談ですが、EV_PLAYER_TALK_TO_ME以外のTARGET行は、/YOURNAME/がspeakerの名前を表示する不具合があります。

応用例
※本体 Ver 1.0.60付属のFCS Ver 2.13は、Word Swapでドラッグ&ドロップが不可能になりました。そのためFCSのダウングレードが必要となります。

画像のようなWord Swaps構成にすると、MEとTARGETの関係性に応じたセリフに差し替え可能です。


この時の/CALL_YOU/は、
  • MEがテストプレイヤーの場合
    • TARGETがビープなら「ビープ君」
    • TARGETがサッドニールなら「サッド君」
    • TARGETがクランブル・ジョンなら「爺さん」
    • TARGETがバーンなら「老師」
    • TARGETが上記以外なら「あんた」
  • MEがテストプレイヤー以外の場合なら「あなた」
というセリフが表示されます。
1 条留言
春秋蝉 2022 年 10 月 13 日 上午 3:07 
仰望高级玩家∠( °ω°)/