【解決済み】MPが0になるまでHPバリアとして扱えるようにするプラグイン

うさみ
記事: 6
登録日時: 2018年10月30日(火) 14:34

【解決済み】MPが0になるまでHPバリアとして扱えるようにするプラグイン

投稿記事by うさみ » 2018年10月30日(火) 15:05

初めまして。
MPを疑似的なHPバリアとして扱えるようにするプラグインをリクエストさせて頂きます。
計算式や条件分岐などである程度似たような事まではできたのですが、細かな部分で色々と不自由な部分が残るのでプラグインで行えるのが理想的だと思いました。
1.png

HP=指揮官の体力
MP=雇っている兵士の数

添付の画像のように兵士が残っている間は指揮官にダメージは入らず、兵士が全滅したら指揮官にダメージが入るようになるイメージです。
兵士補充は拠点でのみ行える為、戦闘中に兵士数(MP)が回復する状況はありません。
MPがある間はMPがHPダメージを肩代わりしてくれて、MPが0になったら超過分も含めてHPにダメージが入るのが理想的な挙動です。
※仮にHP100、MP30の時に100のダメージを受けたらMPが0になって超過分の70ダメージがHPに入り、残りHP30となるような感じ

お手すきの方がいらっしゃいましたらお力添え頂けると嬉しいです。
最後に編集したユーザー うさみ on 2018年10月31日(水) 20:12 [ 編集 1 回目 ]

tubo
記事: 57
登録日時: 2017年10月11日(水) 16:29
お住まい: 兵庫県
連絡を取る:

Re: MPが0になるまでHPバリアとして扱えるようにするプラグイン

投稿記事by tubo » 2018年10月31日(水) 00:08

jsファイルで保存して適用してください。

コード: 全て選択

(function() {
'use strict'
const _Game_Battler_gainHp = Game_Battler.prototype.gainHp;
Game_Battler.prototype.gainHp = function(value) {
    if ($gameParty.inBattle() && value < 0 && !this._directAttack) {
        let shortage = this.mp + value;
        if (shortage < 0) {
            value = value - shortage;
            _Game_Battler_gainHp.call(this,shortage);
        }
        this.gainMp(value);
    } else {
        _Game_Battler_gainHp.call(this,value);
    }
    delete this._directAttack;
};
Game_Battler.prototype.directAttack = function() { this._directAttack = true; };
})();

計算式の前に b.directAttack()|| と追記すると直接HPに攻撃できるようにしています。
戦闘中のみ適用するようにしてありますが、普段も適用する場合は $gameParty.inBattle() && を削除してください。
うさみ
記事: 6
登録日時: 2018年10月30日(火) 14:34

Re: MPが0になるまでHPバリアとして扱えるようにするプラグイン

投稿記事by うさみ » 2018年10月31日(水) 02:10

tubo様

ご返信ありがとうございます。
さっそく制作して頂いたプラグインを導入してテストさせて頂きました!
理想通りの挙動になり、大変感謝しております。

1点だけ追加で確認をお願いしたいのが、デフォルトの仕様としてHPにダメージが入るときは画面シェイク(エネミーの場合は点滅も)が入ると思うのですが、MP減少はステータス減少と同じ扱いなので「~が減った」の文字が表示されるだけで兵士にダメージを与えてる感が薄くなってしまいます。

MP以外にステータスが減少するようなスキルは他に想定していないので、敵味方双方ともに「~の減少」の演出自体をダメージ時の演出と同じように書き換えてしまっても構わないのですが、MPダメージ時もHPにダメージが入る時と同じ演出が入るように変更する事は可能でしょうか?

ちなみに現在制作中のゲームの仕様としては↓のような感じを想定しています。
HP=指揮官体力
MP=兵士数 拠点で補充、戦闘中に回復する事は無し
TP=戦闘開始時にMAXの100からスタート、与ダメ被ダメでのTP獲得は無し、毎ターン10ずつ回復、スキルはTPを使用して発動するスキルのみ
tubo
記事: 57
登録日時: 2017年10月11日(水) 16:29
お住まい: 兵庫県
連絡を取る:

Re: MPが0になるまでHPバリアとして扱えるようにするプラグイン

投稿記事by tubo » 2018年10月31日(水) 09:34

演出のみの追加です。
プラグインに追記してください。

コード: 全て選択

const _Window_BattleLog_displayMpDamage = Window_BattleLog.prototype.displayMpDamage;
Window_BattleLog.prototype.displayMpDamage = function(target) {
    if (target.isAlive() && target.result().mpDamage !== 0 && target.result().hpDamage === 0) {
        this.push('performDamage', target);
    }
    _Window_BattleLog_displayMpDamage.call(this,target);
};
うさみ
記事: 6
登録日時: 2018年10月30日(火) 14:34

Re: MPが0になるまでHPバリアとして扱えるようにするプラグイン

投稿記事by うさみ » 2018年10月31日(水) 20:11

tubo様

追加で作成して頂いたコードを反映したところ、イメージ通りの理想的な挙動になりました。
こちらのトピックは解決済みとさせて頂きます。

この度はリクエストにお応え頂き、本当にありがとうございました。
HPに直接攻撃も出来るなど、細かな部分のお心遣いも大変ありがたかったです。
重ね重ね御礼申し上げます。

“MV:プラグイン素材のリクエスト” へ戻る