[
板情報
|
カテゴリランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
|
1-
101-
201-
301-
401-
501-
この機能を使うにはJavaScriptを有効にしてください
|
個人制作ゲームのネタ帳★12
104
:
名無しさん
:2024/11/19(火) 14:00:26
/*:
* @target MZ
* @plugindesc ブロック値を実装するプラグイン(参照元パラメータをメモ欄で指定可能、LUK対応)
* @author
* @help
* このプラグインは以下の機能を提供します:
* 1. ダメージ計算式で「blk」を使用可能にする(例: a.atk - b.blk)。
* 2. ブロック値を累積可能(スキルや効果で追加)。
* 3. スキルのメモ欄で参照元パラメータを指定可能(例: `<sannshoumoto def>`)。
* 4. 運(LUK)も参照可能。
* 5. 特殊なステート「ブロック値破壊」によるブロック値のリセット。
* 6. ターン終了時に「ブロック値破壊」がない限りブロック値は維持される。
*
* 【使用方法】
* - 計算式で `b.blk` を使うと、防御側のブロック値を参照します。
* - スキルやアイテムのメモ欄に `<sannshoumoto パラメータ名>` を記述。
* - 例: `<sannshoumoto def>` → スキル使用者の防御力を参照。
* - 運を参照する場合は `<sannshoumoto luk>` を記述してください。
*
* 【注意事項】
* - パラメータ名は「mhp」「atk」「def」「mat」「mdf」「agi」「luk」などを指定可能。
* - ステートIDは、デフォルトで「ブロック値破壊」が ID 10 に設定されています。
*/
(() => {
const BLOCK_RESET_STATE_ID = 10; // 「ブロック値破壊」のステートID
// ブロック値を管理するプロパティを追加
Game_BattlerBase.prototype.initialize = function() {
this._blockValue = 0; // ブロック値の初期値
};
// ブロック値を取得
Object.defineProperty(Game_BattlerBase.prototype, "blk", {
get: function() {
return this._blockValue || 0;
},
configurable: true
});
// ブロック値を加算
Game_BattlerBase.prototype.addBlock = function(value) {
this._blockValue = (this._blockValue || 0) + value;
};
// ブロック値をリセット
Game_BattlerBase.prototype.resetBlock = function() {
this._blockValue = 0;
};
// ブロック値を参照元パラメータから加算
Game_BattlerBase.prototype.addBlockFromParam = function(paramName) {
const paramValue = this[paramName] || 0;
this.addBlock(paramValue);
};
// スキルのメモ欄を解析して参照元パラメータを取得
const _Game_Action_apply = Game_Action.prototype.apply;
Game_Action.prototype.apply = function(target) {
const meta = this.item().meta.sannshoumoto;
if (meta) {
const paramName = meta.trim();
if (paramName === "luk") {
// 運(luk)の特別処理
this.subject().addBlockFromParam("luk");
} else if (this.subject()[paramName] !== undefined) {
this.subject().addBlockFromParam(paramName);
} else {
console.warn(`無効な参照パラメータ: ${paramName}`);
}
}
_Game_Action_apply.call(this, target);
};
// ターン終了時の処理を追加
const _Game_Battler_onTurnEnd = Game_Battler.prototype.onTurnEnd;
Game_Battler.prototype.onTurnEnd = function() {
if (this.isStateAffected(BLOCK_RESET_STATE_ID)) {
this.resetBlock(); // 「ブロック値破壊」のステートがあればリセット
}
_Game_Battler_onTurnEnd.call(this); // 元のターン終了処理を実行
};
})();
新着レスの表示
名前:
E-mail
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板