【解決済み!】ステートの付与確率をスクリプトで設定したい!

アバター
ピータンパン
記事: 76
登録日時: 2020年1月15日(水) 22:40

【解決済み!】ステートの付与確率をスクリプトで設定したい!

投稿記事by ピータンパン » 2021年7月15日(木) 09:12

お世話サマです!

スキルの特徴につけるステートには付与確率が選べると思いますが
それをスキルのコモンイベントでスクリプトから確率付与するにはどのようにしたら良いでしょうか!?

BattleManager._subject._actorIdで現在行動中のActorIDが取れることは分かったのですが
$gameActors.actor(BattleManager._subject._actorId).addState($gameVariables.value(1));
というスクリプトだと、付与率が引数に含まれていないため、どのように条件分けするか分かりません!
最後に編集したユーザー ピータンパン on 2021年7月19日(月) 15:06 [ 編集 1 回目 ]

名無し蛙
記事: 310
登録日時: 2015年11月23日(月) 02:46

Re: ステートの付与確率をスクリプトで設定したい!

投稿記事by 名無し蛙 » 2021年7月15日(木) 15:54

どうもこんにちは
回答の前に2,3訂正したいんですけど
ピータンパン さんが書きました:スキルの特徴につけるステートには付与確率が選べると思いますが
特徴ではなく使用効果の事ですかね
この二つは基本的に併用する事はないとはいえ別の機構なので用語は正確にお願いします

ピーターパン さんが書きました:BattleManager._subject._actorIdで現在行動中のActorIDが取れることは分かったのですが
$gameActors.actor(BattleManager._subject._actorId).addState($gameVariables.value(1));
BattleManager._subjectが現在行動中のバトラー、._actorIdがそれが持つアクターIDの事なので
$gameActors.actor(BattleManager._subject._actorId)とBattleManager._subjectは同じ実体を指します。
つまり二度手間なので後者を使用した方が良いです。

それでイマイチ用例が分からないんですけど
スキルの使用者自身に確率でステート付与したい、という事ですか?
最も単純な方法は自前で確率計算する事だと思います。
Math.random()という関数を使えば「0以上1未満」の範囲内の乱数を返すので例えば

コード: 全て選択

if ( Math.random() < 0.8 ) {
    BattleManager._subject.addState($gameVariables.value(1));
}

というコードを書けば80%の確率でステート付与します。

追記で
この件とは直接関係ない使用効果「コモンイベント」の仕様なんですけど
正確に言えばコモンイベントを実行する効果ではなくコモンイベントを予約する効果です。
何が違うのかと言うと使用効果「コモンイベント」が設定されたスキルで敵を倒すなど
戦闘終了に直結する結果が発生するとコモンイベントはリザルト後のマップ画面遷移直後に実行されます。
どのような使い方をするかは知りませんけどこの点はご留意ください。
アバター
ピータンパン
記事: 76
登録日時: 2020年1月15日(水) 22:40

Re: ステートの付与確率をスクリプトで設定したい!

投稿記事by ピータンパン » 2021年7月19日(月) 15:06

名無し蛙様!

ありがとうございます!!
できました!!

Math.random()ってこういう風にも使えるんですね!
addStateと書いてしまったので紛らわしかったですが
x%の確率で蘇生(戦闘不能解除)ってのをやりたかったので、おかげさまで実現できました!
予約と実行の部分も細かく教えていただいてありがとうございます!
今回この点は問題なかったようです!

名無し蛙 様!
今後ともどうかよろしくお願いします!!

“MV:質問” へ戻る