当サイトの運営者です。ゲーム制作とプラグイン開発が好きで、コミュニティに貢献したいと考えています。
RPGツクールMZでゲームを制作中です。
※プログラマ・エンジニアではありません。
ステートグループ化 - RRT_StateGroups_beta.js

▼ステートグループ化(りんろんた様作) - RRT_StateGroups_beta.js
https://plugin.fungamemake.com/archives/12663
各ステートを、単一のグループに属させることができます。
ふりがな:すてーとぐるーぷか
機能概要: 各ステートを、単一のグループに属させることができます。
利用規約(ライセンス): MITライセンス
作者:りんろんた
作者サイト:https://x.com/rinronta
解説ページ:https://github.com/rinronta/RPGMakerMV_Plugins/tree/mas…
ダウンロードページ:https://raw.githubusercontent.com/rinronta/RPGMakerMV_P…
ファイル名:RRT_StateGroups_beta.js
プラグインのヘルプ:
/*: * @plugindesc ステートグループ化プラグイン * @author RINRONTA * * @param StateGroups * @type struct<groupSetting>[] * @desc ステートのデータベースです。行番号がグループIDになります。 * * @help *============================================================================= * RRT_StateGroups_beta * * 公開元 https://github.com/rinronta/RPGMakerMV_Plugins *============================================================================= * Copyright (c) 2018 RINRONTA * This software is released under the MIT License. * http://opensource.org/licenses/mit-license.php *----------------------------------------------------------------------------- * アップデート履歴 *----------------------------------------------------------------------------- * v0.5.0 2018/05/09 ※以前のバージョンとの互換性がなくなります * ステートグループのデータベースをリスト形式に統一 * その他、コーディングのミスを修正 * オンラインヘルプ作成のためプラグインヘルプをやや簡略化 * v0.2.0 2018/05/06 beta版公開 *----------------------------------------------------------------------------- * 概要 *----------------------------------------------------------------------------- * ステートをグループ化させ、条件に従ってグループ内あるいは + 他のステートへステートを切り替える仕組みを導入できます。 * オンラインヘルプ * https://github.com/rinronta/RPGMakerMV_Plugins/blob/master/ReadMe_RRT_StateGroups_beta.md * *----------------------------------------------------------------------------- * 基本的な設定方法 *----------------------------------------------------------------------------- * 1. 本プラグインをプラグイン管理に追加してください。 * * 2. プラグイン設定画面で、グループの各項目を設定します。 * * 3. 各ステートの設定画面で<RSGstateGroupId:xx>を入力します。 * xxはステートが属すグループIDです。 * * 4. 各ステートの設定画面のメモ欄に、必要に応じて規定のノートタグを記述します。 *----------------------------------------------------------------------------- * 各グループの設定 *----------------------------------------------------------------------------- * ---[name]--- * ステートの名称です。処理には関わらないのでメモ程度に利用してください。 * * ---[type(同属打消方式)]--- * 同属ステートの打消方式です。 * [overwrite(上書)] * 後から付加されるステートが付加され、 * 既に付加されていた同属ステートは解除されます。 * [cancel(無効)] * 後から付加されるステートは無効になります。 * [neutaralize(中和)] * 後から付加されるステートは無効になりますが、 * 既に付加されていた同属ステートも解除されます。 * * ---[rankType]--- * ランク値による優先方式です。 * ランク値が異なる場合に、高い方・低い方どちらのステートを優先させるかの方式です。 * [none(優先なし)] * ランク値による優先を用いません。ランク値による優先は発生せず、 * 常に前項のtypeによって判定されます。 * [higher(高ランク優先)] * 付加されている同属ステートよりも高ければ、「上書」と * 付加されている同属ステートよりも低ければ、「無効」になります。 * 付加されている同属ステートと同値であれば、typeに従います。 * [lower(低ランク優先)] * 付加されている同属ステートよりも低ければ、「上書」になります。 * 付加されている同属ステートよりも高ければ、「無効」になります。 * 付加されている同属ステートと同値であれば、typeに従います。 * * ---[flag]--- * 通常切替フラグです。 * ステートの設定画面のステート解除条件と対応しています。 * [none(なし)] * このフラグを用いません。 * [battleEnd(戦闘終了時)] * 戦闘終了時に切り替わります。有効でも無効でも作動します。 * [restrict(行動制約)] * 行動制約時に切り替わります。有効でも無効でも作動します。 * [turns(継続ターン)] * 継続ターン数によって切り替わります。 * 自動解除のタイミングが「なし」の場合は作動しません。 * [damage(歩数)] * ダメージを受けたことによって切り替わります。 * 有効でも無効でも作動します。 * 作動確率は「ダメージによる解除確率」に従います。 * [steps(歩数)] * 歩数によって切り替わります。 * 無効なら作動しません。 * * ---[xFlag]--- * 拡張切替フラグです。 * 各ステートのノートタグ<RSGxRate:xx>で、作動確率を設定できます。 * [none(なし)] * このフラグを用いません。 * [remove(解除時)] * 「切替」「上書」「中和」以外の状況で解除された時に切り替わります。 * [battleStart(戦闘開始)] * 戦闘開始時に切り替わります。 * [firstAction(初回行動時)] * そのターンの初回行動時、厳密にはその直前に切り替わります。 * [allActionsEnd(全行動終了時)] * そのターンの全ての行動が終わった後に切り替わります。 * [turnEnd] * そのターンの全キャラクターの行動が終わった後に切り替わります。 * * ---[sFlag/sValue]--- * 特殊切替フラグです。 * 各ステートのノートタグ<RSGsRate:xx>で、作動確率を設定できます。 * sFlagを用いるには、その種類によってそれぞれのsValueを設定する必要があります。 * [param]や[rateOfHMT]に設定した場合、切替の動作が他のものと異なります。 * [none(なし)] * このフラグを用いません。 * [addedState(付加ステート)] * sValueにステートのIDを半角数字で記入してください。 * そのステートが付加された直後に切り替えが発生します。 * 「切替」には反応しませんが、 * 属性攻撃による付加については反応します。 * [addedStateGroup(付加ステートグループ)] * sValueにステートグループIDを設定して下さい。 * そのグループに属すステートが付加された直後に切り替えが発生します。 * 「切替」には反応しませんが、 * 属性攻撃による付加については反応します。 * [damagedElement(属性ダメージ)] * sValueに属性IDを半角数字で記入して下さい。 * その属性でダメージを受けた直後に切り替えが発生します。 * [usingSkill(使用スキル)] * sValueには、スキルIDを半角数字で記入して下さい。 * スキルの成功に関わらず、 * そのスキルのコストを消費する直前に切り替えが発生します。 * [usingSkillType(使用スキルタイプ)] * sValueには、スキルタイプIDを半角数字で記述して下さい。 * そのタイプに属すスキルのコストを消費する直前に切り替えが発生します。 * [param(能力値)] * 属するステートに「有効範囲」が発生するフラグです。 * targetの項目が[rankDown]または[rankUp]の場合、 * 下限に達すれば次に低ランクなステート、 * 上限に達すれば次に高ランクなステートに切り替わります。 * target[random]や[none]の場合、 * 有効範囲から外れた瞬間に解除されます。 * target[state]の場合、 * 有効範囲から外れた瞬間に規定されたステートに切り替わります。 * このフラグを持つグループに属するステートが付加されようとしたとき、 * 有効範囲に合ったステートが自動的に付加されることになります。 * 有効範囲を外れると必ず切替を起こす必要があるため、 * ノートタグに<RSGsRate:xx>がついていても無視されます。 * [rateOfHMT(HP/MP/TPの残存割合)] * 属するステートに「有効範囲」が発生するフラグです。 * sValueには hp mp tp のいずれかを記述して下さい。 * 残存値の最大値に対する割合によって切り替えが発生します。 * それ以外は[param]と同様です。 * * ---[target]--- * 切替先となるステートを設定します。 * flag、xFlag、sFlagで設定したそれぞれの条件が満たされたときに、 * この設定に従って切り替わります。 * 切替は、 * xFlag[remove] * sFlag[addedState] * sFlag[addedStateGroup] * を動作させることはありません。 * [none] * 何も起こらないか、sFlagに有効範囲がある場合、解除されます。 * [rankUp] * 同じグループの中でランク値が次に大きいステートに切り替わります。 * 次に高いステートがない場合は何も起こりません。 * [rankDown] * 同じグループの中でランク値が次に大きいステートに切り替わります。 * 次に低いステートがない場合は何も起こりません。 * [random] * 同じグループのランダムなステートに切り替わります。 * sFlagに有効範囲がある場合は、単に解除されます。 * [state] * ノートタグ<RSGtargetState:xx>で指定したステートに切り替わります。 * ノートタグに有効な値が記入されていない場合は切り替えが起こりません。 * * ---[element/eRate]--- * グループに属性を関連付けます。 * デフォルトではどちらも0で、このままだと何も起こりません。 * 関連づけられた属性による攻撃を受けると、 * グループの「初期ステート」が付加されます。 * eRateで初期ステートの付加確率を設定できます。 * 属性攻撃による実際の付加確率は、 * eRate * [初期ステートに対する耐性率] * [運による補正率] です。 * また、属性によるステートの付加には、 * その他のステートのsFlag[state]および[stateGroup]を動作させます。 * * 「初期ステート」は、以下のように決定されます。 * target[rankUp]の場合:最低ランクのステート(複数あればランダム) * target[rankDown]の場合:最高ランクのステート(複数あればランダム) * targetがそれ以外の場合: * rankType[higher]の場合:最高ランクのステート(複数あればランダム) * rankType[lower]の場合:最低ランクのステート(複数あればランダム) * ranktype[none]の場合:グループの中からランダム * sFlag[param]および[rateOfHMT]の場合、 * 自動的に有効範囲に合ったステートが付加されます。 * * ---[counter]--- * このグループに属するステートを相殺するグループ(相殺グループ)を設定できます。 * デフォルトは0で、この状態だと何も起こりません。 * 相殺グループのステートが既に付加されているとき、 * 相殺グループのステートは解除され、 * このグループに属するステートの付加も無効になります。 * 相殺グループの設定にもcounterを設定することで、 * 両者のグループが同時に共存することはなくなります。 * ちょうど、type[neutral]と同じ挙動になります。 * *----------------------------------------------------------------------------- * ランク値について *----------------------------------------------------------------------------- * 前述の通り、ランク値は以下の2点の用途のために用いられます。 * * 【ランク値による優先】 * 各ステートのノートタグ<RSGrank:xx>で設定できます。 * ノートタグでランク値が設定されていない場合、 * 「優先度」で入力されている値がランク値として処理に用いられます。 * ランク値を必要としないグループとして設定にする場合は必要ありません。 * * 【sFlagに有効範囲がある場合のランク値の利用】 * sFlag[param]および[rateOfHMT]の場合、 + 各ステートの有効範囲の上限と下限を決めるため、 * ランク値の数値を転用することになります。 * 上限値と下限値は、以下のように決定されます。 * ◆rankType[higher]の場合: * 上限値:次に高いステートのランク値 * 最高ランクの場合は上限なし * 下限値:現在のステートのランク値 * 最低ランクの場合は下限なし * [下限値 ≦ 有効範囲 < 上限値] * ◆rankType[lower]の場合: * 上限値:そのステートのランク値 * 最高ランクの場合は上限なし * 下限値:次に低いステートの同属ランク値 * 最低ランクの場合は下限なし * [下限値 ≦ 有効範囲 < 上限値] * ◆rankTypeg[none]の場合: * かつtarget[rankUp]の場合: * 上限値:次に高い同属ステートのランク値 * 最高ランクの場合は上限なし * 下限値:現在のステートのランク値 * 最低ランクの場合は下限なし * [下限値 ≦ 有効範囲 < 上限値] * かつtarget[rankDown]の場合: * 上限値:現在のステートのランク値 * 最高ランクの場合は上限なし * 下限値:次に低いステートの同属ランク値 * 最低ランクの場合は下限なし * [下限値 ≦ 有効範囲 < 上限値] * かつtarget[none]、[random]あるいは[state]の場合: * 上限値:次に高い同属ステートのランク値 * 下限値:次に低いステートの同属ランク値 * [下限値 < 有効範囲 < 上限値] * *----------------------------------------------------------------------------- * ステートのノートタグ *----------------------------------------------------------------------------- * * <RSGgroupId:xx>(半角数字) * グループのID番号を設定します。ステートは1つのグループにのみ属せます。 * <RSGrank:xx>(半角数字) * ステートのグループ内でのランク値を設定します。 * この記述がない場合、ステートの「優先度」がランク値として用いられます。 * <RSGxRate:xx>(半角数字) * 拡張フラグ(xFlag)によるステート切り替えの作動確率です。 * この記述がない場合、xFlagは必ず作動します。 * <RSGsRate:xx>(半角数字) * 特殊フラグ(sFlag)によるステート切り替えの作動確率です。 * <RSGtargetState:xx>(半角数字) * 属するグループがtarget[state]の場合に設定して下さい。 * 設定しない場合、切り替えが作動しません。 * *----------------------------------------------------------------------------- * グループ数の拡張 *----------------------------------------------------------------------------- * 10個以上のグループが必要な場合はEXTENSIONの項で追加してください。 * EXTENSIONで設定した各グループのIDは、行番号に10を足したものになります。 */