| 横から失礼します。 FEシリーズはほとんどプレイしたことがなく、支援会話って何だっけ状態の私が考えた内容なので、まるで見当違いだったら申し訳ありません。
私なりに考えてみた方法です。 まず同時に出撃することで信頼度が上がる処理ですが、 以下の内容をInclude.eve辺りにコピペして、Callで呼び出してください。
信頼度加算: Global 信頼度 Local i Local 味方リスト ForEach 味方 出撃 Incr i Set 味方リスト[i] PilotID() Next ForEach 味方 出撃 For i = 1 To Count(味方リスト) If PilotID() = 味方リスト[i] Then Skip EndIf Incr 信頼度[PilotID(), 味方リスト[i]] Next Next Return
呼び出された段階で、マップ上にいる味方同士の信頼度が1上がります。 スタートイベントなどのOrganizeやLauchコマンドの後に実行してください。 ちなみに、信頼度という変数を操作しているだけなので、SetRelationは使っていません。必要なら書き加えてください。
次にインターミッションから支援会話を発生させるためのファイルを追加します。 とりあえず、Libというフォルダを作ってそこに支援会話.eveという名前で作るとします。 そのあと、シナリオのプロローグイベントに以下の記述を加えて読み込んでください。
IntermissionCommand 支援会話 Lib\支援会話.eve
支援会話.eveの内容は以下のようにします。 パイロットAとかパイロットBとかは適当にシナリオのパイロット名に書き換えてください。
プロローグ: Global 支援会話回数 Local 支援会話リスト
If (信頼度[パイロットA, パイロットB] >= 1) And (支援会話回数[パイロットA, パイロットB] = 0) Then If (Status(パイロットA) = 待機) And (Status(パイロットB) = 待機) Then Set 支援会話リスト[1] "パイロットAとパイロットBの支援会話1" EndIf EndIf If (信頼度[パイロットA, パイロットB] >= 2) And (支援会話回数[パイロットA, パイロットB] = 1) Then If (Status(パイロットA) = 待機) And (Status(パイロットB) = 待機) Then Set 支援会話リスト[2] "パイロットAとパイロットBの支援会話2" EndIf EndIf If (信頼度[パイロットA, パイロットB] >= 3) And (支援会話回数[パイロットA, パイロットB] = 2) Then If (Status(パイロットA) = 待機) And (Status(パイロットB) = 待機) Then Set 支援会話リスト[3] "パイロットAとパイロットBの支援会話3" EndIf EndIf If (信頼度[パイロットA, パイロットC] >= 1) And (支援会話回数[パイロットA, パイロットC] = 0) Then If (Status(パイロットA) = 待機) And (Status(パイロットC) = 待機) Then Set 支援会話リスト[4] "パイロットAとパイロットCの支援会話1" EndIf EndIf If (信頼度[パイロットA, パイロットC] >= 2) And (支援会話回数[パイロットA, パイロットC] = 1) Then If (Status(パイロットA) = 待機) And (Status(パイロットC) = 待機) Then Set 支援会話リスト[5] "パイロットAとパイロットCの支援会話2" EndIf EndIf If (信頼度[パイロットA, パイロットC] >= 3) And (支援会話回数[パイロットA, パイロットC] = 2) Then If (Status(パイロットA) = 待機) And (Status(パイロットC) = 待機) Then Set 支援会話リスト[6] "パイロットAとパイロットCの支援会話3" EndIf EndIf
Ask 支援会話リスト 選択してください キャンセル可
Switch 選択 Case 1 Talk (パイロットAとパイロットBの1回目の支援会話の内容) End //会話した回数を増加させておく Incr 支援会話回数[パイロットA, パイロットB] Case 2 Talk (パイロットAとパイロットBの2回目の支援会話の内容) End Incr 支援会話回数[パイロットA, パイロットB] Case 3 Talk (パイロットAとパイロットBの3回目の支援会話の内容) End Incr 支援会話回数[パイロットA, パイロットB] Case 4 Talk (パイロットAとパイロットCの1回目の支援会話の内容) End Incr 支援会話回数[パイロットA, パイロットC] Case 5 Talk (パイロットAとパイロットCの2回目の支援会話の内容) End Incr 支援会話回数[パイロットA, パイロットC] Case 6 Talk (パイロットAとパイロットCの3回目の支援会話の内容) End Incr 支援会話回数[パイロットA, パイロットC] EndSw
If Count(支援会話リスト) = 0 Then Talk システム 支援会話が可能なキャラクターがいません End EndIf
//インターミッションに戻る Continue
長い上にごちゃごちゃしてて分かりにくいと思いますが、 ざっと解説しますと、上の方のIfの分岐の塊は支援会話が発生するかの判定を行っています。 例えば、上の方にあるこの部分ですが……
If (信頼度[パイロットA, パイロットB] >= 1) And (支援会話回数[パイロットA, パイロットB] = 0) Then If (Status(パイロットA) = 待機) And (Status(パイロットB) = 待機) Then Set 支援会話リスト[1] "パイロットAとパイロットBの支援会話1" EndIf EndIf
これはまず、パイロットAとパイロットBの信頼度が1以上であること、 そしてパイロットAとパイロットBの支援会話の回数がまだ0であること、 さらにパイロットA、Bが共に待機状態であること(離脱していないこと)を判定しています。 これらの条件を全て満たした時に、支援会話リスト[1]という変数を作成します。 他のIf分岐も同様の仕組みになっています。 ここで作成された変数が、真ん中辺りのAskで選択肢として表示され、 最後にどの選択肢を選んだかでSwitchの分岐に繋がります。
もし、さらに支援会話のパターンを追加するなら、 同じようにIfの分岐を追加し、支援会話リスト[7]や支援会話リスト[8]という感じに 続き番号で変数を作成し、Switch分岐でCase 7、Case 8と対応した内容を記述してください。
ごめんなさい、かなり分かりにくいと思うので、上記と同じ内容のサンプルを用意してみました。良かったら参考にしてください。
http://www1.axfc.net/uploader/Sc/so/383313.zip&key=SRCTEST
|