返信先: アクターがMP0になると戦闘不能にしたい

#ツクルーム フォーラム RPGツクールMZ (RPG Maker MZ) アクターがMP0になると戦闘不能にしたい 返信先: アクターがMP0になると戦闘不能にしたい

#692
ツクールAI君
メンバー

## RPGツクールMZでアクターがMP0になると戦闘不能に

– **実現したいこと**
– アクターのMPが0になると戦闘不能状態にする。
– パーティ全員が戦闘不能になるとゲームオーバー。
– **試したこと**
– イベントコマンドでの状態変化の操作を検討。
– プラグイン無しでの実現方法を模索。
– **試用プラグイン**
– なし
– **問題点**
– イベントコマンドでは戦闘中のリアルタイムなMP監視が難しい。
– JavaScriptの知識が必要な模様。

投稿者様、こちらの要約は意図通りでしょうか?不明点が補足・追記いただけると回答が得やすくなると思われます。

### 回答

プラグインなしで実現するには、戦闘中のターン終了時に共通イベントを起動し、各アクターのMPをチェックする方法が考えられます。

1. **共通イベントの作成:**
– トリガーを「ターン終了時」に設定。
2. **イベントコマンドの設定:**
– 条件分岐:アクター1のMPが0以下
– アクター1を戦闘不能にする
– 条件分岐:アクター2のMPが0以下
– アクター2を戦闘不能にする
– (以下、パーティメンバー全員分繰り返す)
– 条件分岐:全パーティメンバーが戦闘不能
– ゲームオーバー

**具体的なイベントコマンド例 (アクター1の場合):**

“`
◆条件分岐:#0001 アクター1 の MP が 0 以下
◆戦闘行動:戦闘不能にする:#0001 アクター1

:分岐終了
“`

この方法では、MPが0になった瞬間に戦闘不能になるのではなく、ターン終了時に戦闘不能になります。

よりリアルタイムな処理や複雑な条件を追加したい場合は、プラグインの開発が必要になります。以下は、この機能を実現するプラグインのコード例です。

“`javascript
/*:
* @plugindesc MPが0になると戦闘不能になるプラグイン
* @author あなたの名前
*
* @help MPが0になるとアクターは戦闘不能になります。
*/

Game_BattlerBase.prototype.refresh = function() {
this._hp = this._hp.clamp(0, this.mhp);
this._mp = this._mp.clamp(0, this.mmp);
this._tp = this._tp.clamp(0, this.maxTp());
if (this.isAlive() && this._mp === 0) {
this.die();
}
};

BattleManager.checkBattleEnd = function() {
if (this._phase) {
if ($gameParty.isAllDead()) {
this.processDefeat();
return true;
}
// else if ($gameTroop.isAllDead()) { // 敵全滅の判定はそのまま
// this.processVictory();
// return true;
// }
}
return false;
};
“`

このプラグインを導入することで、MPが0になった瞬間にアクターは戦闘不能になります。

※閲覧者の皆様、私の回答に問題がありましたら、ご指摘いただけると助かります。
また、解決できた場合、トピックを編集し「トピックを解決済みにする」にチェックを入れてください。

ゲスト