コンテンツにスキップ

投げ当てと副効果

このチュートリアルでこれまで作成してきたアイテムは飲んだ時にHPを回復するだけでした。 ここでは草・薬アイテムとして一般的な次の効果を実装します。

  • 飲んだ時に満腹度(FP)を少量回復する。
  • 投げ当てた時に相手の HP を回復する。ただし、このとき FP は回復しない。

リアクション、エミッター、エフェクトの関連は次のようになります。

flowchart LR
    Reaction1["Reaction#1(飲んだ)"]
    Reaction2["Reaction#2(投げ当てた)"]
    Emittor1["Emittor#1(kEmittor_ポーションA_Main)"]
    Emittor2["Emittor#2(kEmittor_ポーションA_投げ当て)"]
    Effect1["Effect#1(kEffect_ポーションA_Main)"]
    Effect2["Effect#2(kEffect_FP回復5)"]

    Reaction1 --> Emittor1
    Reaction2 --> Emittor2
    Emittor1 --> Effect1
    Emittor1 --> Effect2
    Emittor2 --> Effect1

次の要素は既に作成しています。

  • [飲んだ]リアクション
  • kEmittor_ポーションA_Main
  • kEffect_ポーションA_Main

ここでは次の要素を新たに作成し、それぞれの関連性を設定していきます。

  • [投げ当てた]リアクション
  • kEmittor_ポーションA_投げ当て
  • kEffect_FP回復5

満腹度(FP)の回復

満腹度(FP) はRPGツクールの標準パラメータではありません。MRシステム用の追加パラメータとして扱われます。追加パラメータはRPGツクールのデータベースから編集することはできません。設定ファイルでエフェクトを追加する必要があります。

data/mr/Effects.js に次のような設定を追加します。

"kEffect_FP回復5": Effect({
    parameterValues: [
        ParameterValue({
            parameterKey: "fp",    // FPを、
            type: "recovery",      // 回復する。
            formula: "500",        // 値は5%。
            silent: true,          // メッセージを表示しない。
        }),
    ],
}),

Note

パラメータの詳細は次のチュートリアルで説明します。 FPはパーセンテージでウィンドウに表示されますが、内部的には 10000 を 100% とする整数値です。

Warning

v0.8.0 では kEffect_FP回復5 は Effects.js に既に追加されています。 これを利用してもかまいません。そうでない場合、別の Key 名を使ってください。

続いて、 data/mr/Emittors.js に次の設定を追加します。

"kEmittor_ポーションA_Main": Emittor({
    targetEffectKeys: [
        "kEffect_ポーションA_Main",
        "kEffect_FP回復5",
    ],
}),

この設定は kEmittor_ポーションA_Main が発動したときに、 kEffect_ポーションA_Main(HP回復効果)kEffect_FP回復5 の2つの効果を同時に適用することを示しています。

設定したらテストプレイで動作確認してみましょう。

使用前:

使用後:

Tip

動作確認のために毎回 HP や FP を減らすのは大変です。 デバッグ機能 で説明したコンソールで次のコマンドを実行すると、それぞれプレイヤーの HP を 10、FP を 1000(10%) にできます。

MR.setPlayerParameter("hp", 10)
MR.setPlayerParameter("fp", 1000)

投げ当て

まずは投げ当て用のエミッターを追加しましょう。 data/mr/Emittors.js に次の設定を追加します。

"kEmittor_ポーションA_投げ当て": Emittor({
    targetEffectKeys: [
        "kEffect_ポーションA_Main",
    ],
}),

先ほどと異なり、こちらには FP 回復エフェクトが無い点に注意してください。

続いて、 data/mr/Entities.jskEntity_ポーションA に次の設定を追加します。

 "kEntity_ポーションA": Entity({
     reactions: [
         Reaction({
             actionKey: "kAction_Eat",
             emittorKeys: ["kEmittor_ポーションA_Main"],
             commandName: "飲む",
         }),
+        Reaction({
+            actionKey: "kAction_Collide",
+            emittorKeys: ["kEmittor_ポーションA_投げ当て"],
+        }),
    ],
 }),

設定したらテストプレイで動作確認してみましょう。

モンスターに投げ当てることで、相手の HP が回復します。