デフォルトでは攻撃をする際、得られるTPが【攻撃する敵の数】×【連続回数】×【得TP】になっていると思います。
例1:
攻撃範囲が敵全体、連続回数が1、得TP10のスキルを敵が4体いるときに発動すると、4×1×10=40となる。
例2:
攻撃範囲が敵単体、連続回数が2、得TP10のスキルを発動すると、1×2×10=20となる。
これを連続回数や敵の数に依存せず、TPを固定値増加させるにはどうすれば良いでしょうか?
どのような攻撃でも得TPの値だけ増加するようにできると最も望ましいです。
【解決済み】範囲攻撃や連続攻撃で得られるTPを一定にしたい
【解決済み】範囲攻撃や連続攻撃で得られるTPを一定にしたい
最後に編集したユーザー 紫苑もみじ [ 2019年6月28日(金) 22:58 ], 累計 1 回
Re: 範囲攻撃や連続攻撃で得られるTPを一定にしたい
多分、下記のプラグインで実現できます。
▼TP設定(茶の助様作)
TPに関する仕様を変更します。
https://plugin.fungamemake.com/archives/16332
* @param TPDamageUp
* @desc TPによる与ダメージ増加量の計算式
変化させたくない場合は、valueとだけ書き込んでください
* @default value * (100 + this.subject()._tp) / 100
この計算式を固定値にすれば良いかと思います。
▼TP設定(茶の助様作)
TPに関する仕様を変更します。
https://plugin.fungamemake.com/archives/16332
* @param TPDamageUp
* @desc TPによる与ダメージ増加量の計算式
変化させたくない場合は、valueとだけ書き込んでください
* @default value * (100 + this.subject()._tp) / 100
この計算式を固定値にすれば良いかと思います。
最後に編集したユーザー ムノクラ [ 2019年10月24日(木) 22:09 ], 累計 1 回
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
Re: 範囲攻撃や連続攻撃で得られるTPを一定にしたい
ご回答ありがとうございます!
申し訳ないのですが、私が意図しているのは「得られるTPを一定にする」動作で、「現在のTPの値を参照して攻撃力を変動させる」動作ではありません。
ですが、ご紹介頂いたスクリプトにありましたGame_Action.prototype.executeHpDamageという関数から辿ってみたところ、rpg_objects.jsにGame_Action.prototype.applyという関数を見つけました(1646行目)。
おそらくこれは1ヒット当たりの処理だと思われます。この内部にはapplyItemUserEffectという関数が使われており(1664行目)、これが攻撃時にTPを増やしている処理のようです。apply関数が攻撃回数と同じだけ呼び出されるため、TPを重複して取得する仕様になっているようです。
ですので、applyItemUserEffect関数をapply関数から削除し、apply関数の呼び出し元へ書き足せば私の目的が達成されると思うのですが、apply関数の呼び出し元が見つけられません。
apply関数の呼び出し元がわかる方がいらっしゃいましたら教えていただけると幸いです。
申し訳ないのですが、私が意図しているのは「得られるTPを一定にする」動作で、「現在のTPの値を参照して攻撃力を変動させる」動作ではありません。
ですが、ご紹介頂いたスクリプトにありましたGame_Action.prototype.executeHpDamageという関数から辿ってみたところ、rpg_objects.jsにGame_Action.prototype.applyという関数を見つけました(1646行目)。
おそらくこれは1ヒット当たりの処理だと思われます。この内部にはapplyItemUserEffectという関数が使われており(1664行目)、これが攻撃時にTPを増やしている処理のようです。apply関数が攻撃回数と同じだけ呼び出されるため、TPを重複して取得する仕様になっているようです。
ですので、applyItemUserEffect関数をapply関数から削除し、apply関数の呼び出し元へ書き足せば私の目的が達成されると思うのですが、apply関数の呼び出し元が見つけられません。
apply関数の呼び出し元がわかる方がいらっしゃいましたら教えていただけると幸いです。
-
- 記事: 17
- 登録日時: 2017年7月24日(月) 17:23
Re: 範囲攻撃や連続攻撃で得られるTPを一定にしたい
BattleManager.js内のBattleManager.invokeNormalActionから呼び出されているかと思います。
引数subjectが攻撃する側、targetが攻撃を受ける側です。
引数subjectが攻撃する側、targetが攻撃を受ける側です。
Re: 範囲攻撃や連続攻撃で得られるTPを一定にしたい
こんばんは。
特に戦闘関連のプラグインを利用する場合ですが、Game_Action.prototype.applyは複数箇所やプラグインからも呼び出されています。
それとapplyItemUserEffectはTP目的ではないので、(TP以外の)機能を追加するプラグインあり、予期せぬ挙動をするようになってしまいます。
applyItemUserEffectを書き換えて、1回のみTPを増加させる方がいいです。
これを新規プラグインとして上の方へ登録してください。
特に戦闘関連のプラグインを利用する場合ですが、Game_Action.prototype.applyは複数箇所やプラグインからも呼び出されています。
それとapplyItemUserEffectはTP目的ではないので、(TP以外の)機能を追加するプラグインあり、予期せぬ挙動をするようになってしまいます。
applyItemUserEffectを書き換えて、1回のみTPを増加させる方がいいです。
これを新規プラグインとして上の方へ登録してください。
コード: 全て選択
(function () {
'use strict';
var _Game_Action_initialize = Game_Action.prototype.initialize;
Game_Action.prototype.initialize = function(subject, forcing) {
_Game_Action_initialize.apply(this, arguments);
this._userGainTp = false;
};
Game_Action.prototype.applyItemUserEffect = function(target) {
if (!this._userGainTp) {
var value = Math.floor(this.item().tpGain * this.subject().tcr);
this.subject().gainSilentTp(value);
this._userGainTp = true;
}
};
})();
Re: 範囲攻撃や連続攻撃で得られるTPを一定にしたい
ありがとうございます!!
無事、望んだとおりの動作をしました!!
boolean変数でそういった処理をする方法は全然思いつかなかったです。参考になります。
本当にありがとうございました!!
無事、望んだとおりの動作をしました!!
boolean変数でそういった処理をする方法は全然思いつかなかったです。参考になります。
本当にありがとうございました!!