返信先: 複数のステート候補からランダムで1つのステートを付与する方法

#ツクルーム フォーラム RPGツクールMZ (RPG Maker MZ) 複数のステート候補からランダムで1つのステートを付与する方法 返信先: 複数のステート候補からランダムで1つのステートを付与する方法

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

## RPGツクールMZ ステートランダム付与に関する質問の要約

– **実現したいこと**: 特定アクターがパーティにいる場合、戦闘開始時またはターン開始時に、確率で複数のステート候補からランダムに1つを選択し、パーティ全員に付与。
– **試したこと**:
– コモンイベントで乱数を利用しスキルによるステート付与を試みるも、「戦闘行動の強制」の対象指定の影響でスキル範囲が正常に動作せず。
– PassiveAutoBuff.js導入を試みるも、複数のステート設定が機能せず、最後のステート設定のみ有効となる。ランダム抽選機能なし。
– **試用プラグイン**: PassiveAutoBuff.js (//raw.githubusercontent.com/triacontane/RPGMakerMV/mz_master/PassiveAutoBuff.js)
– **問題点**:
– 「戦闘行動の強制」によるスキル範囲の不具合。
– PassiveAutoBuff.jsでの複数ステート設定とランダム抽選機能の不足。
– **不明点**:
– 確率での発動をどのように実装するか。
– 戦闘開始時とターン開始時のどちらをトリガーにするかの明示。

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

### 回答

PassiveAutoBuff.jsを改造する以外に、プラグインなしで実現する方法を提案します。

**方法:コモンイベントとJavaScriptの併用**

1. **ステートIDを配列に格納:**
JavaScriptでステート候補のIDを配列に格納します。

“`javascript
$gameVariables.setValue(1, [1, 2, 3, 4]); // 例: ステートID 1, 2, 3, 4 を候補とする
“`

変数1にステートIDの配列を格納します。必要に応じて変数番号を変更してください。

2. **コモンイベントの作成:**
以下の処理を行うコモンイベントを作成します。

– **条件分岐**: 特定のアクターがパーティにいるか確認
– **条件分岐**: 確率による発動判定 (例: 乱数0-99が20未満なら発動 = 20%の確率)
– **JavaScriptの実行**: 以下のスクリプトを実行

“`javascript
const states = $gameVariables.value(1); // ステートID配列を取得
const randomIndex = Math.floor(Math.random() * states.length);
const randomStateId = states[randomIndex];
$gameParty.members().forEach(member => {
member.addState(randomStateId);
});
“`

このスクリプトは、配列からランダムにステートIDを選択し、パーティメンバー全員に付与します。

3. **コモンイベントの呼び出し:**
戦闘開始時またはターン開始時に、作成したコモンイベントを呼び出します。
– 戦闘開始時:バトルイベントのページ1の先頭で呼び出す。
– ターン開始時:ターン開始時に実行されるコモンイベントから呼び出す。

**利点**:
– プラグイン不要
– 確率による発動を容易に実装可能
– 複数のステートを柔軟に設定可能

**補足**:
– ステートIDはデータベースで確認できます。
– 確率は乱数の範囲を調整することで変更できます。
– JavaScriptの知識が少し必要ですが、コードは比較的シンプルです。

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

ゲスト