しいたけサイクロン・アーカイブス

  1. トップ
  2. RGSS
  3. ステート付加成功率のパラメータ依存

ステート付加成功率のパラメータ依存

概要

ステートを付加の成功率をスキルやアイテムの使用者と対象者のパラメータから決定します。

仕様

スキルまたはアイテムの使用者、対象者のパラメータから成功率が決定します。
指定した使用者のパラメータの総和から対象者のパラメータの総和の差分(以下d)を使って成功率を計算します。
dが0のときはスキルまたはアイテムを設定したときのステート付加成功率となります。
成功率を出すのに使う関数(以下 f )としてatan、sigmoid、一次関数があります。
定数degを使って f(deg * d)によって成功率が計算されます。

テストゲーム

ダウンロード (1.34MB)

(注)テストゲームを行うにはRPGツクールVXAceのRTPが必要です。

スクリプト

・DataManager
DataManager

・クラス
Game_Battler

使用方法の説明

導入法

上のスクリプトたちを導入した後、本体のDataManager内のself.initのcreate_game_objectsの下にload_normal_databasetakoeff1を挿入してください。

使い方

DataManagerの$data_state_add_skillでスキルにおいての成功率の設定をします。
$data_state_add_itemでアイテムにおける成功率の設定になります。やり方はスキルの場合と同じです。
$data_state_add_normalで通常攻撃属性の成功率の設定になります。やり方はスキルの場合と同じです。
以下idは設定するスキルのidとします。
$data_state_add_skill[id][:type] で成功率を出す際に使用する関数を設定します。
1でatan(逆正接関数)、2でsigmoid関数,それ以外は1次間数を利用したものになります。
$data_state_add_skill[id][:degree] で成功率を出す際に用いる定数degを設定します。
degの値が0に近づくにつれて成功率の変動が緩やかになります。
$data_state_add_skill[id][:depend_user]に成功率に影響を与える使用者のパラメータIDを配列の形で全て入れます。
複数個ある場合はその総和を値として扱います。
$data_state_add_skill[id][:depend_target]に成功率に影響を与える対象者のパラメータIDを配列の形で全て入れます。
これも複数個ある場合はその総和を値として扱います。
$data_state_add_skill[id][:bound]で成功率の上限と下限を配列で設定します。
[上限値、下限値]の形になります。(0で成功率が0%、1で成功率が100%となります)
$data_state_add_skill[id][:point]でこの成功率計算を行うタイミングを設定します。
0で装備などによる成功率変化の前に実行、
1で装備などによる成功率変化の後に実行します。

テスター

設定をテストするツールを作ってみました。
テスター
基本定数が元のステート付加成功率、
degreeが$data_state_add_skill[id][:degree]の値、
上限、下限の値が$data_state_add_skill[id][:bound]の設定値、
描画でグラフが描画されます。
座標指定を入力するか、グラフの近くをクリックすることでグラフの値が表示されます。

広告

使用例

毒嵐というスキルを作ってみます。

敵全体の毒攻撃で基本成功率は40%、 使用者と対象者の魔力と運の和に依存するようにしてみます。追加したDataManagerのload_normal_databasetakoeff1において、個別設定以下に次の文を付け加えます。

$data_state_add_skill[id][:depend_user] = [4,7]
$data_state_add_skill[id][:depend_target] = [4,7]

まず上のようにすることで、使用者の魔力(以下a.mat)と運(以下a.luk)の和と、対象者の魔力(以下b.mat)と運(以下b.luk)の和で成功率が決まるようになります。
もう少し正確に言うと(a.mat + a.luk) - (b.mat + b.luk)の値に依存して成功率が決定します。
個別設定ではデフォルト設定と異なるようにしたい部分だけ書けばいいので、これで一応目標のスキルはできあがるのですが、
ここではもう少しいじってみます。

$data_state_add_skill[id][:degree] = 0.02

上のように$data_state_add_skill[id][:degree]を0.02とすることで(デフォルトは0.05)
(a.mat + a.luk) - (b.mat + b.luk)の値の変動に対して成功率がデフォルト設定の場合より緩やかに変化するようになります。
正確に言うと成功率評価に使う関数を f とすると f (deg * ((a.mat + a.luk) - (b.mat + b.luk)))が成功率になります。

これで(a.mat + a.luk) - (b.mat + b.luk)が0のとき、すなわち(a.mat + a.luk) = (b.mat + b.luk)のとき 成功率は40%で、(a.mat + a.luk) - (b.mat + b.luk)が大きくなるにつれて成功率は上昇し、

質問やバグなどの報告は製作ブログのコメント欄でお願いします。
ブログ

広告