# マニュアル: 持続効果（EffectOverTime）

**URL:** <https://guild.rpgmakerofficial.com/t/topic/2851>\
**Category:** チュートリアル\
**Tags:** manual\
**Created:** [2026 年 9 月 7 日午前 5:28 UTC](https://guild.rpgmakerofficial.com/t/topic/2851 "2026-09-07T05:28:09Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Moonling](https://sea2.discourse-cdn.com/flex002/user_avatar/guild.rpgmakerofficial.com/moonling/32/369_2.png) [@Moonling](https://guild.rpgmakerofficial.com/u/Moonling)\
**Post date:** [2026 年 9 月 7 日午前 5:28 UTC](https://guild.rpgmakerofficial.com/t/topic/2851/1 "2026-09-07T05:28:09Z")

</div>

## このマニュアルについて

このマニュアルでは、ACTION GAME MAKER の持続効果について解説を行います。一定間隔で値を変え続ける「持続効果を開始(ApplyEffectOverTime)」と、その効果を取り除く「持続効果をクリア(ClearEffectOverTime)」、掛かっている効果を書き換える「持続効果を変更(ModifyEffectOverTime)」、掛かっているかを判定する条件「持続効果が有効(EffectOverTimeActive)」の 4 つをまとめて扱います。

## ACTION GAME MAKER での持続効果の概要

持続効果は、「一定の間隔で、決まった量だけ値を変え続ける」機能です。フローのステートを占有しないため、効果が掛かっている間もオブジェクトは普段どおり動きます。

| やりたいこと | 持続効果での作り方 |
| --- | --- |
| 毒・継続ダメージ | hp を一定間隔で減らす |
| 継続回復（リジェネ） | hp を一定間隔で増やす |
| 時間で増える収入 | プロジェクト変数を一定間隔で増やす |
| 一定時間だけの強化・弱体 | 値を 1 回変えて、持続時間が切れたら元へ戻す |

これまで同じことをするには、ステートを 1 つ使ってタイマーとダメージを組む必要がありました。持続効果はそれをアクション 1 つに畳んだものです。

## 置き方

1. ビジュアルスクリプトでアクションを追加する画面を開きます。
2. 「その他アクション」から「ゲーム設定」カテゴリを選びます（「待機」「タイマーのカウント」と同じ並びにあります）。
3. 「持続効果を開始」を選びます。

条件の「持続効果が有効」は、「その他条件」の「変数」カテゴリにあります。

効果はアクションを通過した時点で始まり、そのあとステートを移動しても効果だけが残って進み続けます。止めたい場合は持続時間を設定するか、「持続効果をクリア」で取り除きます。

## 「持続効果を開始(ApplyEffectOverTime)」

### 効果名

効果を識別する名前です。 **「クリア」「変更」「持続効果が有効」はすべてこの名前で効果を探します。** また、同じ名前の効果は重ね掛け（スタック）の対象になります。

名前を空にすると識別できないため、重ね掛けにも、名前を指定したクリアの対象にもなりません。毒やデバフには必ず名前を付けてください。

### 変化させる対象の設定

- 対象の種類: 「変数」「スイッチ」「ノードのプロパティ」から選びます。
- 対象オブジェクト: 「自己」「指定のオブジェクト」「指定ロック対象オブジェクト」「親オブジェクト」「最後に接触したオブジェクト」「共有ボードのオブジェクト」「プロジェクト変数」「データベース」から選びます。
- 変数名: 変化させる変数（またはスイッチ）の名前です。 **`hp` を指定すると、変化をダメージとして扱えるようになります。**
- 対象プロパティ: 対象の種類が「ノードのプロパティ」のときに、ノードとプロパティを選びます。真偽値・整数・実数のプロパティが選べます。

「プロジェクト変数」を選ぶと、効果はオブジェクトではなくマネージャー側に置かれます。 **掛けたオブジェクトが消えても、シーンを移動しても効果は続きます。** 収入のような仕組みはこちらを使います。

スイッチと真偽値のプロパティは増減できないので、開始時に 1 回書き込み、持続時間が切れたら元へ戻す使い方になります。

### 変化のしかたの設定

- 演算子: `=` `+=` `-=` `*=` `/=` `%=` から選びます。
- 変化量の設定方法 / 変化量: 直接入力のほか、変数・データベース・共有ボードの値からも取れます。
- 変化する間隔（秒）: 何秒ごとに 1 回適用するかです。

**間隔を 0 にしたときの挙動は演算子で変わります。**

| 演算子 | 間隔 0 のときの意味 |
| --- | --- |
| `+=` `-=` | 毎フレーム適用します。変化量は「1 秒あたりの量」として扱われます |
| `*=` `/=` `=` `%=` | 開始時の 1 回だけ適用します（毎フレーム掛けると指数的に暴れるため） |

倍率で一時的に弱体化させたい場合は、この「間隔 0 ＋ 乗算」が最も素直な形になります。

### 持続時間の設定

- 持続時間の設定方法: 「無限」「秒」「回数」から選びます。
- 持続時間: 秒数、または適用する回数です。
- 開始時に 1 回適用する: オンにすると、1 間隔待たずに開始と同時に 1 回目を適用します。
- 値を毎回読み直す: オンにすると、変化量・間隔・持続時間を毎回変数から読み直します。 **掛けた時点の強さで固定したい毒はオフ、現在の値に追従させたい収入はオンにします。**
- 終了時に元の値へ戻す: オンにすると、効果が終わったときに開始する直前の値へ戻します。時間限定の強化・弱体に使います。

### 停止条件の設定

持続時間とは別に、値が条件を満たしたときにも効果を終わらせる設定です。

- 停止条件: 「なし」「値の比較」から選びます。
- 監視する値 / 比較方法 / 比較する値: 比較方法は `=` `!=` `<` `<=` `>` `>=` です。

判定は **毎フレーム** 行われます。間隔 1 秒の効果でも、条件が満たされた時点ですぐ止まります。「毒では死なせない」を作るなら、監視する値に hp、比較方法に `<=`、比較する値に 1 を指定します。

停止したときも通常の終了処理を通るため、「終了時に元の値へ戻す」はきちんと働きます。

### 重ね掛けとセーブの設定

- 重複したときの扱い: 同じ効果名が既に掛かっているときの扱いです。「重ねる」「上書き」「時間を延長する」「実行しない」から選びます。
- 最大スタック数: 同じ効果名が重なれる上限です。0 で無制限になります。
- セーブ可能: オンにすると、効果がセーブデータへ書き出され、ロード時に **残り時間ごと** 復元されます。既定はオフです。

**重ね掛けは、先頭のスタックがまとめて適用します。** 毒を 3 重に掛けても、1 秒ごとに「3 スタック分をまとめた 1 個のダメージ表示」が出ます。数字が 3 つ重なって読めなくなることはありません。

また、既にあるスタックへ合流したときは「開始時に 1 回適用する」が働きません（合流の瞬間だけ 1 回多く入ってしまうためです）。合流したスタックは、先にあったスタックの間隔に乗ります。

### ダメージとして扱う設定

対象が `hp` で、演算子が `+=` または `-=` のときだけ出る設定です。

- ダメージとして扱う: オンにすると、変数へ直接書かずにダメージの経路を通ります。
- 属性設定 / 属性: 効果の属性です。「属性設定無し」「属性タイプデータベースで指定」「属性値で指定」から選びます。
- 無敵中は効かない: オンにすると、対象が無敵の間は適用を保留し、無敵が終わってから入ります（既定オン）。
- この効果で無敵にする: オンにすると、対象に設定された無敵時間も発生させます（既定オフ）。
- ダメージ計算式 / 端数の処理 / 最小ダメージ: 「従来の計算」か「カスタム式」を選べます。カスタム式では `a.` が掛けた側、`b.` が受ける側で、`a.attack` や `b.hp` のように変数名も使えます。

**ここをオンにすると、既存の属性システムがそのまま乗ります。** 毒のドットは紫、炎のドットはオレンジ、といった色分けは属性のダメージ表示設定で決まりますし、弱点属性のダメージ 2 倍も属性ダメージ率で成立します。回復（プラス方向の変化）はダメージ表示の回復色で出ます。

## 「持続効果をクリア(ClearEffectOverTime)」

掛かっている効果を取り除きます。カットシーン中に毒で死ぬのを防ぐ、全回復のセーブポイントを作る、毒消し薬を作る、といった用途に使います。

- 効果が掛かっている対象: 効果を取り除く相手です。「プロジェクト変数」を選ぶと、収入のようにマネージャー側へ置かれた効果を取り除きます。
- 対象オブジェクトの範囲: 「単体」「すべて」から選びます（シーンで指定したときだけ意味を持ちます）。
- 取り除く効果: 「すべての効果」「効果名を指定」から選びます。
- 効果名 / 剥がすスタック数: 剥がすスタック数を 0 にすると、その効果名のすべてを取り除きます。1 にすると 1 段だけ剥がせます。

取り除くときは効果の通常の終了処理を通るため、 **「終了時に元の値へ戻す」を設定した効果は値がきちんと戻ります。**

## 「持続効果を変更(ModifyEffectOverTime)」

すでに掛かっている効果へ後から手を入れます。

- 効果が掛かっている対象 / 対象オブジェクトの範囲: クリアと同じです。
- 効果名: 変更する効果の名前です。空にするとどの効果でも対象になりますが、 **スタック数を変えるときは名前が必要です** （どのスタックを増やすのかが決まらないため）。
- 変更する項目: 「スタック数」「残っている効果時間」「変化量」「間隔」から選びます。
- 演算子 / 値の設定方法 / 値: `*=` に 2 を掛ければ 2 倍、0.5 を掛ければ半分になります。
- 最大スタック数: スタック数を増やすときの上限です。0 で無制限になります。

残っている効果時間は、経過時間ではなく持続時間のほうを動かして変えます。そのため適用した回数や間隔と食い違いません。残り時間が 0 になった効果は通常の終了処理を通るので、「終了時に元の値へ戻す」もそのまま働きます。

増やすスタックは、まだ続いているスタックを複製して作ります。 **複製元の残り時間をそのまま引き継ぐ** ので、古いスタックから作られた分は先に切れます。

無限に続く効果には残り時間がないため、「残っている効果時間」を選んでも何も起きません。

## 条件「持続効果が有効(EffectOverTimeActive)」

- 効果が掛かっている対象: 効果を探す相手です。
- 効果名: 空にするとどの効果でも対象になります。
- 判定するタイミング: 「掛かっている間」「効果が発生した瞬間」から選びます。
- スタック数の比べ方 / スタック数: 「指定数以上」「指定数と同じ」「指定数以下」から選びます。

「効果が発生した瞬間」を選ぶと、 **実際に値が変わったフレームだけ成立します。** 毒のダメージが入るたびに音を鳴らす、ヒットストップを掛ける、といった使い方ができます。重ね掛けしていても 1 回にまとまるので、音が 3 重になることはありません。

## 実用例

### 攻撃が当たった相手にスタックする毒を付与

毒は「受けた側が自分に掛ける」のが確実です。

- 敵（受ける側）のビジュアルスクリプトに「オブジェクトの攻撃判定に接触」の遷移を作ります。
- 遷移先で「持続効果を開始」を置き、次のように設定します。
  - 効果名: `poison`
  - 対象の種類: 変数 / 対象オブジェクト: 自己 / 変数名: `hp`
  - 演算子: `-=` / 変化量: 5 / 変化する間隔（秒）: 1
  - 持続時間の設定方法: 秒 / 持続時間: 5
  - 重複したときの扱い: 重ねる / 最大スタック数: 5
  - ダメージとして扱う: オン / 属性設定: 属性タイプデータベースで指定 → 毒

- 攻撃を当てるたびにスタックが増え、1 秒ごとに「スタック分をまとめた 1 個のダメージ」が紫色で出ます。

**攻撃した側から掛けたい場合** は、対象オブジェクトに「最後に接触したオブジェクト」を使います。ただしこれは **接触条件（「衝突可能なものと接触」「オブジェクトの壁判定と接触」）が記録した相手** なので、攻撃判定を当てただけでは埋まりません。接触判定も一緒に当てる作りにしてください。

### 毒のスタックを 2 倍にするスキル

- スキルのビジュアルスクリプトに「持続効果を変更」を置きます。
  - 効果が掛かっている対象: 最後に接触したオブジェクト（または共有ボードのオブジェクト）
  - 効果名: `poison`
  - 変更する項目: スタック数
  - 演算子: `*=` / 値: 2
  - 最大スタック数: 10

- 3 スタックなら 6 スタックになります。増えた分は元のスタックの残り時間を引き継ぎます。
- 上限を入れておかないと、連打で無限に増えます。 **最大スタック数は必ず入れてください。**

残り時間を半分にするデバフ短縮なら、変更する項目を「残っている効果時間」にして `*=` の 0.5 を指定します。

### 自分に 10 秒間リジェネを付与

- 回復スキルのビジュアルスクリプトに「持続効果を開始」を置きます。
  - 効果名: `regen`
  - 対象の種類: 変数 / 対象オブジェクト: 自己 / 変数名: `hp`
  - 演算子: `+=` / 変化量: 5 / 変化する間隔（秒）: 1
  - 持続時間の設定方法: 秒 / 持続時間: 10
  - 重複したときの扱い: 時間を延長する
  - ダメージとして扱う: オン / 属性設定: 属性設定無し

- 1 秒ごとに 5 回復し、10 秒で終わります。「ダメージとして扱う」をオンにしているので、回復量がダメージ表示の回復色で出ます。
- 「時間を延長する」にしておくと、掛け直しで重ならずに時間が伸びます。回復量を重ねたい場合は「重ねる」にします。

### 周囲の敵 5 体に 10 秒間、攻撃力 30% ダウンのデバフ

範囲デバフは「検索して共有ボードに記録」→「そのリストへ効果を掛ける」の 2 段で作ります。

**1. 対象を集める**

- 「オブジェクトを検索して共有ボードに記録」を置きます。
  - キー名: `DebuffTargets`（ **オブジェクト参照リスト型** のキーを用意しておきます）
  - ターゲットグループを指定: 敵のグループ
  - 距離範囲（0で無制限）: 300
  - 並び替え基準: 距離 / 並び順: 昇順（近い・小さい順）
  - 記録する件数: 5

**2. 全員へ掛ける**

- 続けて「持続効果を開始」を置きます。
  - 効果名: `atk_down`
  - 対象の種類: ノードのプロパティ
  - 対象オブジェクト: 共有ボードのオブジェクト / 共有ボードキー: `DebuffTargets`
  - 対象プロパティ: 攻撃の設定ノードの「攻撃力を変更(%)」
  - 演算子: `*=` / 変化量: 0.7 / 変化する間隔（秒）: 0
  - 持続時間の設定方法: 秒 / 持続時間: 10
  - 開始時に 1 回適用する: オン
  - 終了時に元の値へ戻す: オン

**オブジェクト参照リストのキーを指定すると、生きている全員に効果が掛かります。** 1 体だけに掛けたい場合はオブジェクト参照キー（リストでないほう）を使ってください。

「攻撃力を変更(%)」は既定が 100 で、基本設定の攻撃力に掛かる倍率です。`*=` の 0.7 で 70（＝30% ダウン）になり、10 秒後に 100 へ戻ります。

**間隔を 0 にしているのがポイントです。** 乗算は間隔 0 のとき開始時の 1 回だけ適用されるので、10 秒間ずっと 0.7 倍が掛かり続けて減っていく、ということにはなりません。

なお「終了時に元の値へ戻す」をオンにすると、 **重複したときの扱いから「重ねる」が消えます** （開始前の値をスタック間で共有できないためです）。既定は「上書き」になります。

## 注意点

- **停止条件は 1 回の適用を止められません。** hp 100・停止条件「hp が 50 以下」・ダメージ 200 の場合、200 のダメージが入って 0 になってから停止します。判定は適用と適用の間でしか行えず、ダメージ経路では属性率や計算式を通した後にしか最終ダメージが決まらないためです。閾値には余裕を持たせてください。
- **「値を毎回読み直す」のオン・オフは意味が大きく変わります。** オフだと掛けた瞬間の値で固定（毒の強さが後から変わらない）、オンだと毎回読み直し（収入が現在の値に追従する）になります。
- **無敵中はダメージ経路の適用が保留されますが、持続時間は進みます。** そのため「10 秒の毒を 10 秒の無敵でやり過ごす」が成立します。
- **「この効果で無敵にする」は既定オフのままにしてください。** オンにすると効果が入るたびに無敵時間が発生し、本物の攻撃が通らなくなります（間隔 1 秒＋無敵 1 秒で実質無敵になります）。
- **「セーブ可能」は既定オフです。** ロードで毒が復活する驚きを避けるためです。オンにすると残り時間ごと復元されます。
- 効果名が空の効果は識別できないため、クリアも変更も条件判定もできません。
- 「最後に接触したオブジェクト」は接触条件が記録した相手です。攻撃判定が当たっただけでは埋まりません。
- プロジェクト変数を対象にした効果は、掛けたオブジェクトが消えてもシーンを移動しても続きます。止めるには「持続効果をクリア」で対象に「プロジェクト変数」を指定してください。
- 「終了時に元の値へ戻す」を使う効果は重ね掛けできません（開始前の値をスタック間で共有できないためです）。
- ポーズ中は効果も止まります。
