物理と魔法別の会心率(クリティカル率)の設定したいと思っています。
例えば、物理だけに会心率が高くなる装備アクセサリー、魔法だけに会心率が高くなるステートといったものを作りたいのです。
検索してみると、MV版は紹介されているようですが、MZ版は見当たりませんでした。
viewtopic.php?t=6970
そういう設定ができるものはありますでしょうか。
あと、もし追加機能として、物理の会心の場合のみダメージが1.5倍になるステートとかがあれば、なおいいのですが。
【解決済み】物理と魔法別の会心率(クリティカル率)の設定
-
- 記事: 109
- 登録日時: 2018年2月25日(日) 12:47
【解決済み】物理と魔法別の会心率(クリティカル率)の設定
最後に編集したユーザー kamometrain [ 2025年2月24日(月) 23:47 ], 累計 1 回
-
- 記事: 109
- 登録日時: 2018年2月25日(日) 12:47
Re: 物理と魔法別の会心率(クリティカル率)の設定
kamometrain さんが書きました:物理と魔法別の会心率(クリティカル率)の設定したいと思っています。
例えば、物理だけに会心率が高くなる装備アクセサリー、魔法だけに会心率が高くなるステートといったものを作りたいのです。
検索してみると、MV版は紹介されているようですが、MZ版は見当たりませんでした。
viewtopic.php?t=6970
そういう設定ができるものはありますでしょうか。
最後に編集したユーザー kamometrain [ 2025年2月23日(日) 22:20 ], 累計 3 回
Re: 物理と魔法別の会心率(クリティカル率)の設定
コードを検める限りそちらのプラグインをMZに転用しても問題無いと思いますよ。
自分が実装しても概ね似たような設計になりますね。
独自特徴の追加はゲーム起動直後に済ませた方が良いと思いますけど、支障無い範囲でしょう。
警告を消したい場合は@plugindescの直上に@target MZを
物理会心のみ1.5倍にしたい場合は終端の})(VW_MagicCritical);の直上に以下のコードを追加してください。
自分が実装しても概ね似たような設計になりますね。
独自特徴の追加はゲーム起動直後に済ませた方が良いと思いますけど、支障無い範囲でしょう。
警告を消したい場合は@plugindescの直上に@target MZを
コード: 全て選択
@target MZ
@plugindesc 魔法クリティカル別設定プラグイン
コード: 全て選択
const _applyCritical = Game_Action.prototype.applyCritical;
Game_Action.prototype.applyCritical = function(damage) {
return this.isPhysical() ? damage * 1.5 : _applyCritical.apply(this, arguments);
};
-
- 記事: 109
- 登録日時: 2018年2月25日(日) 12:47
Re: 物理と魔法別の会心率(クリティカル率)の設定
ありがとうございます
転用できることがわかり、また、警告の消し方まで教えていただき、
助かりました。
これで解決いたしました。
<魔法クリティカルダメージ:x>
<魔法会心ダメージ:x>
<MagicCriticaldamage:x>
とかで、
1.5倍とか2倍とかダメージの倍率を変えるようにしたいのです。
きちんと書けていませんでした。
と、ここまで書いて思ったのですが、
そもそも会心のダメージを増やすステートって通常ではつくれないのですよね。
そうだとすると、魔法だけなく、物理も分けて設定しないといけないので、
難しそうですね。
転用できることがわかり、また、警告の消し方まで教えていただき、
助かりました。
これで解決いたしました。
のところですが、物理会心のみ1.5倍にしたい場合は終端の})(VW_MagicCritical);の直上に以下のコードを追加してください。
<魔法クリティカルダメージ:x>
<魔法会心ダメージ:x>
<MagicCriticaldamage:x>
とかで、
1.5倍とか2倍とかダメージの倍率を変えるようにしたいのです。
きちんと書けていませんでした。
と、ここまで書いて思ったのですが、
そもそも会心のダメージを増やすステートって通常ではつくれないのですよね。
そうだとすると、魔法だけなく、物理も分けて設定しないといけないので、
難しそうですね。
Re: 物理と魔法別の会心率(クリティカル率)の設定
改造する事自体は大して難しくも無いんですけど元が小型プラグインなので原型を留めなくなりそうですね。kamometrain さんが書きました:とかで、
1.5倍とか2倍とかダメージの倍率を変えるようにしたいのです。
きちんと書けていませんでした。
と、ここまで書いて思ったのですが、
そもそも会心のダメージを増やすステートって通常ではつくれないのですよね。
そうだとすると、魔法だけなく、物理も分けて設定しないといけないので、
難しそうですね。
思い切って最小限の仕様を残して再構成するとこんな感じですかね。
コード: 全て選択
/*:
* @target MZ
* @pluguindesc 会心設定の拡張
* @help
* 数値は全て実数で指定してください。
* <魔法会心率:x>
* 魔法会心率を加算します。
* <魔法会心回避率:x>
* 魔法会心回避率を加算します。
* <物理会心ダメージ倍率:x>
* 物理会心ダメージ倍率を設定します。ベース倍率の乗算になります。
* <魔法会心ダメージ倍率:x>
* 魔法会心ダメージ倍率を設定します。ベース倍率の乗算になります。
*
* なお、本プラグインで追加特徴データID10-11番及び
* 特殊特徴データID10-11番を使用している事に注意してください。
*
* @param baseCriticalRate
* @type number
* @default 3
* @desc クリティカル倍率のベースを設定します。
*
*/
(function () {
'use strict'
const pluginName = decodeURIComponent(document.currentScript.src).match(/^.*\/js\/plugins\/(.+)\.js$/)[1];
const parameters = PluginManager.parameters(pluginName);
const baseCriticalRate = Number(parameters['baseCriticalRate']) ?? 3;
Object.defineProperties(Game_BattlerBase.prototype, {
// Magical Critical Hit
mch: { get: function() { return this.xparam(10); }, configurable: true },
// Magical Critical Eva
mce: { get: function() { return this.xparam(11); }, configurable: true },
// Physical CRitical Rate
pcrr: { get: function() { return this.sparam(10); }, configurable: true },
// Magical CRitical Rate
mcrr: { get: function() { return this.sparam(11); }, configurable: true },
});
const _extractMetadata = DataManager.extractMetadata;
DataManager.extractMetadata = function(data) {
_extractMetadata.apply(this, arguments);
if (!('traits' in data)) return;
if (data.meta['魔法会心率']) data.traits.push( {code: 22, dataId: 10, value: Number(data.meta['魔法会心率'])} );
if (data.meta['魔法会心回避率']) data.traits.push( {code: 22, dataId: 11, value: Number(data.meta['魔法会心回避率'])} );
if (data.meta['物理会心ダメージ倍率']) data.traits.push( {code: 23, dataId: 10, value: Number(data.meta['物理会心ダメージ倍率'])} );
if (data.meta['魔法会心ダメージ倍率']) data.traits.push( {code: 23, dataId: 11, value: Number(data.meta['魔法会心ダメージ倍率'])} );
};
const _itemCri = Game_Action.prototype.itemCri;
Game_Action.prototype.itemCri = function(target) {
if(this.isMagical()) {
return this.item().damage.critical ? this.subject().mch * (1 - target.mce) : 0;
} else {
return _itemCri.apply(this, arguments);
}
};
Game_Action.prototype.applyCritical = function(damage) {
let rate = baseCriticalRate;
if (this.isPhysical()) rate *= this.subject().pcrr;
if (this.isMagical()) rate *= this.subject().mcrr;
return damage * rate;
};
})();
-
- 記事: 109
- 登録日時: 2018年2月25日(日) 12:47
Re: 物理と魔法別の会心率(クリティカル率)の設定
ありがとうございました。
作っていただいてありがとうございます。
ツクールmzでつくりはじめたところで
会心の攻撃の効果を増やしたかったので助かりました。
作っていただいてありがとうございます。
ツクールmzでつくりはじめたところで
会心の攻撃の効果を増やしたかったので助かりました。