HP量で効果が変動するステートについて

シャッチョ
記事: 3
登録日時: 2017年11月23日(木) 23:11

HP量で効果が変動するステートについて

投稿記事by シャッチョ » 2017年11月23日(木) 23:22

初めまして、ご教授いただければと思い質問させていただきます。

「HPが少ないほど攻撃力が上がる」ステートを作成したいのですが
何か良い方法がありましたら教えてください。
よろしくお願いいたします。

ぼた餅
記事: 187
登録日時: 2016年7月17日(日) 20:22

Re: HP量で効果が変動するステートについて

投稿記事by ぼた餅 » 2017年11月25日(土) 19:24

こんにちは、シャッチョさん。
私も似たようなものを作っていたので、よろしければ参考にどうぞ^^


<用意するもの>
PNDK_FloatingPointVariables
MultiStackState
MeetsConditionsByComment
FTKR_ExVariablesChange(必須ではないがあったほうが楽)
YEP_BaseTroopEvents(必須ではないがあったほうが楽)

<手順> ※上記プラグイン全て使用した場合です
1、「HPが少ないほど攻撃力が上がる」ステートを作成
 →特徴に攻撃力の上昇値を設定(110%くらいが無難)
 →「戦闘終了時に解除」のボックスにチェックを入れる
 →メモ欄に「<maxstack:10>」と記入
2、わかりやすい名前のコモンイベントを作成

コード: 全て選択

◆条件分岐:(アクター名)が(ステート名)になっている
  ◆変数の操作:#0001 最大HP = (アクター名)の最大HP
  ◆変数の操作:#0002 最大HPの一割 = $gameVariables.value(1) / 10
  ◆変数の操作:#0003 現在のHP = (アクター名)のHP
  ◆変数の操作:#0004 現在HPが最大値の何割か = $gameVariables.value(3) / $gameVariables.value(2)
  ◆条件分岐:現在HPが最大値の何割か ≤ 5
    ◆ステートの変更:(アクター名), - (ステート名)
    ◆ステートの変更:(アクター名), + (ステート名)
    ◆
  :分岐終了
  ◆条件分岐:現在HPが最大値の何割か ≤ 2
    ◆ステートの変更:(アクター名), - (ステート名)
    ◆ステートの変更:(アクター名), + (ステート名)
    ◆ステートの変更:(アクター名), + (ステート名)
    ◆
  :分岐終了
  ◆
:分岐終了

 →「現在HPが最大値の何割か」の分岐の数字は、HPが何割以下になったら発動するかを指定
 ※必ず発動割合が大きいほうを上に書くこと
 →付加するステートの数を増やせば増やすほど効果が重複して大きくなる

3、敵グループのバトルイベントを設定
 →ID0001のバトルイベント1ページ目を「条件:ターン0 スパン:バトル」に設定

コード: 全て選択

◆コモンイベント:(2で作ったコモンイベント)

 →ID0001のバトルイベント2ページ目を「条件:実行しない スパン:モーメント」に設定

コード: 全て選択

◆注釈:BattleManager._action
:  :&& BattleManager._action._subjectActorId === 0
:  :&& BattleManager._action._item._dataClass == "skill"
:  :&& $gameVariables.value(5) === 1
◆コモンイベント:(2で作ったコモンイベント)
◆変数の操作:#0005 行動済み = 0

 →ID0001のバトルイベント3ページ目を「条件:実行しない スパン:モーメント」に設定

コード: 全て選択

◆注釈:BattleManager._action
:  :&& BattleManager._action._subjectActorId != 0
:  :&& BattleManager._action._item._dataClass == "skill"
:  :&& $gameVariables.value(5) === 1
◆コモンイベント:(2で作ったコモンイベント)
◆変数の操作:#0005 行動済み = 0


4、3で作成したバトルイベントを全バトルで適用させる
 →「YEP_BaseTroopEvents」のパラメータで3で作成したバトルイベントを指定

5、味方/敵の攻撃時に変数を操作させる
 →「FTKR_ExVariablesChange」のパラメータで「--アイテム・スキル使用時--」の
  「Use」に「v[5] = 1」と記入
 ※v[5]は変数5「行動済み」のこと


<注意点>
・コモンイベントで設定するステートはコモンイベントごとに独立させること
※コモンイベント1で使ったステートをコモンイベント2で使ってはいけない、ということ


パッと見複雑ですが、一度なにやってるか理解すれば様々な応用が利きます。

こんな感じでどうでしょうか?
プラグインを作れず力押しの解決でごめんなさい。
シャッチョ
記事: 3
登録日時: 2017年11月23日(木) 23:11

Re: HP量で効果が変動するステートについて

投稿記事by シャッチョ » 2017年11月25日(土) 22:24

ぼた餅様 ありがとうございます!

ツクールMVを始めて、まだ日が浅いので
導入に時間がかかりそうですが
ご教授いただいた方法で完成にこぎつけたいと思います。

お忙しい中、本当にありがとうございました!
アバター
フトコロ
記事: 1029
登録日時: 2017年2月06日(月) 21:32

Re: HP量で効果が変動するステートについて

投稿記事by フトコロ » 2017年12月03日(日) 00:32

こんにちは。

プラグインを試作してみました。

●FTKR_ExTraitSetting.js
https://raw.githubusercontent.com/futokoro/RPGMaker/master/FTKR_ExTraitSetting.js

ステートの特徴の1行目に「通常能力値、攻撃力、数値はなんでもOK」を設定し
メモ欄に以下の記述を追加してください。

コード: 全て選択

<ETS_特徴:0>
数値:Math.floor((1 - a.hpRate()) * 100)
計算:+
</ETS_特徴>

これで、減少したHPの%分の数値の攻撃力を上昇させるステートになります。
例えば、残りHPが 60% の場合、攻撃力が 40 上昇します。

なお、特徴:0の「0」は、特徴欄の1行目を0とした並び順の数字です。
a.hpRate() はそのステートを受けているキャラの残りHPの比率を意味します。

なお、計算の部分で プラスを設定しているので、40が加算しますが
これを掛け算 (*) にすると、掛け算で計算されます。(上記の計算式の場合、40倍になります)

掛け算ならこんな感じですね。

コード: 全て選択

<ETS_特徴:0>
数値:1 - a.hpRate()
計算:*
</ETS_特徴>

これで、減ったHPの%分攻撃力を積算して上昇させます。
例えば、10%HPが減れば、攻撃力が 110%になります。


追記
プラグインに不具合があったので、v1.0.1に上げています。
---------------------------------------------------------------------------------------------------
プラグイン置き場(GitHub)
https://github.com/futokoro/RPGMaker/blob/master/README.md

検討中の内容は上記リンク先の「対応するかもしれないプラグインのメモ」を参照してください。
シャッチョ
記事: 3
登録日時: 2017年11月23日(木) 23:11

Re: HP量で効果が変動するステートについて

投稿記事by シャッチョ » 2017年12月03日(日) 13:32

>フトコロ様
 素晴らしいプラグインを作成いただき、本当にありがとうございます!
 ぜひ使わせていただきます!!

“MV:質問” へ戻る