Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
740 lines (574 sloc) 27 KB

トップページに戻る

FTKR_SkillExpansion プラグイン

スキル拡張プラグインです。

ダウンロード: FTKR_SkillExpansion.js

目次

以下の項目の順でプラグインの使い方を説明します。

  1. 概要
  2. プラグインの登録
  3. ダメージの設定
  4. 使用効果の設定
  5. 連続回数の設定
  6. 使用条件の設定
  7. 消費コストの設定
  8. スキルの説明文の設定
  9. 属性ダメージの計算方法について
  10. その他の設定
  11. スクリプトコマンド
  12. プラグインコマンド
  13. eval値の使用者パラメータについて

概要

本プラグインを実装することで、スキルの仕様を拡張し、より詳細に設定することができるようになります。 主に以下の項目について、仕様を変更しています。

  1. スキルによって与えるダメージを、以下の仕様に変更します。 各ダメージIDのダメージは、それぞれ、別の設定値を持ち、別に計算します。
[ダメージ] = [ダメージID 0 のダメージ] + [ダメージID 1 のダメージ] +...
  1. 使用効果の対象を自由に変更できるようになり、また値に数値以外を設定することができます。

  2. 複数回攻撃するスキルの場合、攻撃毎にスキルの成功率やダメージを変更できます。

  3. スキルの使用条件に武器以外の条件を追加できます。

  4. スキルの消費コストに数値以外を設定することができます。 また、消費コストにHPを設定できます。

  5. スキルの説明文を、条件によって異なる内容を表示させることができます。

  6. 複数属性に対するダメージの計算方法を変更することができます。

また、別途配布のFTKR_SEP_ShowSkillStatus.jsと組み合わせることでスキルメニューに設定したスキルのパラメータを表示させることができます。

目次に戻る

プラグインの登録

以下のプラグインと組み合わせて使用する場合は、プラグイン管理画面で、以下の順の配置になるように登録してください。

YEP_BattleEngineCore.js
FTKR_SkillExpansion.js
FTKR_SEP_ShowSkillStatus.js

目次に戻る

ダメージの設定

本プラグインを適用することで、スキルによって与えるダメージを、以下の仕様に変更します。

[ダメージ] = [ダメージID 0 のダメージ] + [ダメージID 1 のダメージ] + ...

ダメージID毎に、攻撃と防御によるダメージ計算を行い、その結果の合計値を最終的なダメージとして相手に与えます。

例えば、「複数の属性を持ち、かつ属性毎に与えるダメージが異なるスキル」や「物理ダメージと魔法ダメージを併せ持つスキル」などを作ることができます。

ダメージIDの設定

スキルに以下のノートタグを追記することで、各ダメージIDを設定できます。

<Set Sep Damage: x>
code
</Set Sep Damage>

ダメージID毎にスキルIDを設定することで、そのスキルIDの属性、ダメージ計算式、命中タイプ、ダメージタイプを元に各ダメージIDのダメージ計算を行います。

また、そのスキルIDの使用効果や得TPについても、ダメージとともに発生します。 ダメージID0 は、ベースとなるスキルのデータベース上の設定が反映されます。

注意:ダメージIDを追加する場合は、必ずID1 から順番に追加してください。

code に使用できる項目

SkillId: y

スキルID y のスキル設定をコピーします。 基本的に、このコードを使って、各ダメージIDの設定を作成します。

ElementId: y1,y2,...

属性ID y1,y2,...で指定した属性を追加します。

DamageRate: eval

ダメージ倍率を 計算式(eval)で設定した値(%)に変更します。 この値をダメージ計算式の結果に対して積算したものがダメージになります。 設定しない場合は、プラグインパラメータ<Default Rate>の値を使用します。

CriticalRate: eval

クリティカルのダメージ倍率を 計算式(eval)で設定した値(%)に変更します。 設定しない場合は、プラグインパラメータ<Critical Rate>の値を使用します。

Trait Elements: type1,type2,...

type1,type2,... で指定した対象の特長欄の属性を追加します。 type* で指定できる文字は、Actor,Class,Weapon,Armor,States です。

Enabled: eval

対象のダメージID を計算式で設定した条件で有効にします。 設定しない場合は、常に有効です。 ダメージID 0 に対しては設定できません。 有効になっていない場合は、ダメージに反映しません。

計算式(eval)の値について

計算式は、ダメージ計算式のように、計算式を入力することで、固定値以外の値を 使用することができます。以下のコードを使用できます。

  • a.param - 使用者のパラメータを参照します。(a.atk で使用者の攻撃力)
  • s[x] - スイッチID x の状態を参照します。
  • v[x] - 変数ID x の値を参照します。
  • iv[x] - アイテムのセルフ変数ID x の値を参照します。(*1)

(*1) セルフ変数を使用する場合は、FTKR_ItemSelfVariables.jsが必要です。

入力例

ダメージID1 として、使用者のレベルが11以上かつスイッチID1がONの時に、スキルID10のスキルのダメージを追加します。 ダメージ倍率は50%、クリティカルダメージは400%に変更します。 属性や命中タイプ、計算式等は、スキルID10のものを使用します。

<Set Sep Damage: 1>
SkillId: 10
DamageRate: 50
CriticalRate: 400
Enabled: a.level > 10 && s[1]
</Set Sep Damage>

プラグインパラメータの設定項目

<Critical For Each>

クリティカルの判定を、ダメージID0 の最初の1回だけにするか、 それともダメージID毎に判定するか選べます。

<AutoAddition Damage Rate>

ダメージ倍率のコードを、ダメージ計算式に記入しなくても自動で計算する かどうか設定できます。 入力不要にした場合、ダメージ計算式の結果に対して、ダメージ倍率を 積算します。 なお、入力不要にした場合でも、ダメージ倍率のコードを計算式に記入すると 2重に計算します。

<Default Rate>

デフォルトのダメージ倍率(%)を設定できます。

<Critical Rate>

デフォルトのクリティカルのダメージ倍率(%)を設定できます。

ダメージ計算式に使用できるコード

ダメージ計算式に以下のコードも使用できます。

  • d.rate - スキルで設定したダメージ倍率値を取得します。
  • rct - 連続回数を取得できます。初回は 0 です。連続攻撃に対して、1撃毎にダメージを変えたい場合等に使用できます。

使用例)の場合

(4 * a.atk * (1 - rct * 0.2) - 2 * b.def) * d.rate * 0.01

使用者の攻撃力の4倍から相手の防御力の2倍を引いた値に、ダメージ倍率を掛けます。ただし、連続回数が設定されている場合、2回目以降は、攻撃力が20% ずつ落ちます。

目次に戻る

使用効果の設定

スキルに以下のノートタグを追記することで、使用効果の設定を変更できます。

<Set Sep Effect: x>
code
</Set Sep Effect>

使用効果のId x に対して code部で記述した設定を反映します。 使用効果のIDは、使用効果欄に設定した順番に上から 0, 1,...となります。

code に使用できる項目

Target: y

使用効果の対象を、y に変えることができます。 y に使用できるコードは以下の通りです。

  • user - 使用者
  • randomFriends - 味方からランダムで1体選択
  • randomOpponents - 敵からランダムで1体選択
Value1: eval1

使用効果の内容1を 計算式(eval1) で設定した値に変更します。 内容1は、使用効果で1つめに設定した数値です。
例) HP回復の場合、% で設定する値

Value2: eval1

使用効果の内容2を 計算式(eval1) で設定した値に変更します。 内容2は、使用効果で2つめに設定した数値です。
例) HP回復の場合、+ で設定する値

Enabled: eval2

対象の使用効果ID を 計算式(eval2) で設定した条件で有効にします。設定しない場合は、常に有効です。 有効になっていない場合は、効果が発生しません。

Display: DISPAYNAME

使用効果ID x の画面上に表示される効果名をDISPAYNAMEに変えます。%1 を使用すると、その箇所を rate値に変換します。

eval1 の値について

eval部は、ダメージ計算式のように、計算式を入力することで、固定値以外の値を 使用することができます。以下のコードを使用できます。

  • a.param - 使用者のパラメータを参照します。(a.atk で使用者の攻撃力)
  • b.param - 対象者のパラメータを参照します。
  • v[x] - 変数ID x の値を参照します。
  • hpDamage - Hpダメージ量を参照します。
  • mpDamage - Mpダメージ量を参照します。
  • e.rate - 上記タグで設定したrate値を参照します。

eval2 の値について

eval部は、ダメージ計算式のように、計算式を入力することで、固定値以外の値を 使用することができます。以下のコードを使用できます。

  • a.param - 使用者のパラメータを参照します。(a.atk で使用者の攻撃力)
  • s[x] - スイッチID x の状態を参照します。
  • v[x] - 変数ID x の値を参照します。

入力例)

使用効果の1番目に「HP回復」を追加して、以下のタグを記入することで スイッチID1またはスイッチID2がONの時に、相手に与えたダメージの20%分、 使用者が回復する効果が発生します。 また、別途配布のFTKR_SEP_ShowSkillStatus.jsによる表示名を 「HP吸収20%」に変更します。

<Set Sep Effect: 0>
Target: user
Value1: 0
Value2: hpDamagee.rate * 0.01
Rate: 20
Enabled: s[1] || s[2]
Display: HP吸収%1%
</Set Sep Effect>

目次に戻る

連続回数の設定

スキルに以下のノートタグを追記することで、連続回数の設定ができます。

<Set Sep Repeat>
code
</Set Sep Repeat>

連続回数に対して code部で記述した設定を反映します。

code に使用できる項目

Count: y

連続回数を 計算式(eval) の値に変更します。

Success Rate: eval

連続使用毎の、スキルの成功率を eval に設定します。

Rate: y

eval に使用できるコード rate の値を y に設定します。

eval の値について

eval部は、ダメージ計算式のように、計算式を入力することで、固定値以外の値を 使用することができます。以下のコードを使用できます。

  • a.param - 使用者のパラメータを参照します。(a.atk で使用者の攻撃力)
  • b.param - 対象者のパラメータを参照します。
  • v[x] - 変数ID x の値を参照します。
  • rct - 連続回数を参照します。1撃目から 0,1,... と数えます。
  • rate - 上記タグで設定したrate値を参照します。

入力例)

スキルを5回連続で使用するが、1回使用する毎に成功率が10%ずつ下がる。 1回目が100%だとすると、2回目は90%、3回目は80%、...となる。

<Set Sep Repeat>
Count: 5
Rate: 10
Success Rate: rct * rate * 0.01
</Set Sep Repeat>

目次に戻る

使用条件の設定

スキルに以下のノートタグを追記することで、使用条件の設定ができます。

<Set Sep Required>
code
</Set Sep Required>

使用条件に対して code部で記述した設定を反映します。

code に使用できる項目

WtypeId: y1,y2,...

必要武器の武器タイプID y1,y2,... を追加します。

EtypeId: y1,y2,...

スキルを使用するために、特定の装備タイプが必要になります。 必要装備タイプID y1,y2,... を追加します。

Logic: type

必要武器や装備を複数設定した場合の、論理計算方法を設定します。 type に以下のコードを設定してください。

  • and - すべて装備する必要がある
  • or - いずれか1つ装備すればよい
  • nand- 設定した装備の組合せをしてはいけない
  • nor - いずれか1つでも装備してはいけない

コードで設定しない場合は、'or'を適用します。

Condition: eval

スキルの使用条件に 計算式(eval) で設定した条件を追加します。

Forget: eval

スキルを忘れることができる条件を eval に設定する。 設定しない場合は、無条件で忘れることができます。

eval の値について

eval部は、ダメージ計算式のように、計算式を入力することで、固定値以外の値を 使用することができます。以下のコードを使用できます。

  • a.param - 使用者のパラメータを参照します。(a.atk で使用者の攻撃力)
  • s[x] - スイッチID x の状態を参照します。
  • v[x] - 変数ID x の値を参照します。

入力例)

スキルを使用するために必要な武器を、武器タイプ1,2に設定する。 ただし、武器タイプ1,2の両方を装備していなければならない。 また、使用するために、LV10以上とスイッチID1がONが必要になる。

<Set Sep Required>
WtypeId: 1,2
Logic: and
Condition: a.level >= 10 && s[1]
</Set Sep Required>

目次に戻る

消費コストの設定

スキルに以下のノートタグを追記することで、消費コストの設定を変更できます。

<Set Sep Cost>
code
</Set Sep Cost>

消費コストに対して code部で記述した設定を反映します。

code に使用できる項目

Mp: eval

消費MPを eval で設定した値に変更します。

Tp: eval

消費TPを eval で設定した値に変更します。

Hp: eval

消費HPを eval で設定した値にします。

Rate: eval

eval に使用できるコード rate の値を y に設定します。

eval の値について

eval部は、ダメージ計算式のように、計算式を入力することで、固定値以外の値を 使用することができます。以下のコードを使用できます。

  • a.param - 使用者のパラメータを参照します。(a.atk で使用者の攻撃力)
  • v[x] - 変数ID x の値を参照します。
  • rate - 上記タグで設定したrate値を参照します。

入力例)

使用者の現在MPと現在TPをすべて消費する。ただし、最低1は必要とする。

<Set Sep Cost>
Mp: Math.max(a.mp, 1)
Tp: Math.max(a.tp, 1)
</Set Sep Cost>

スキルの説明文の設定

スキルに以下のノートタグを追記することで、スキルの説明文の設定を変更できます。 スキルの説明文はID別に登録することができ、ID毎に表示条件を設定することで、 ゲーム中で表示させる説明文を変えることができます。

データベースの説明欄の記述は、ID0 に登録されます。 ID0 の表示条件は設定できず、他のIDの表示条件が満たない場合に、ID0 の説明文を 表示します。

<Set Sep Desc: x>
code
説明文1行目
説明文2行目
</Set Sep Desc>

ID x に対して code部の設定、および説明文の1行目と2行目の記述を反映します。

code に使用できる項目

Enabled: eval

ID x の説明文の表示条件を eval で設定します。 表示条件が複数のIDで重なった場合は、IDが大きい方を表示します。

eval の値について

eval部は、ダメージ計算式のように、計算式を入力することで、固定値以外の値を 使用することができます。以下のコードを使用できます。

  • a.param - 使用者のパラメータを参照します。(a.atk で使用者の攻撃力)
  • s[x] - スイッチID x の状態を参照します。
  • v[x] - 変数ID x の値を参照します。

入力例)

スイッチID1 がONの時に表示する説明文の設定。

<Set Sep Desc: 1>
Enabled: s[1]
説明文の1行目に表示される文字列です
説明文の2行目に表示される文字列です
</Set Sep Desc>

目次に戻る

属性ダメージの計算方法について

プラグインパラメータ<Element Damage Calc>の設定値により、複数の属性を持った攻撃をした場合の、防御側の有効度の計算方法を変更することができます。

変更できる計算方法は、最大、平均、累積、最小の4種類です。

<0:最大>

防御側の該当する属性有効度の最大値が最終的なダメージ倍率になります。(ツクールMVの標準方式)

例) 物理+炎の2属性攻撃で、防御側の有効度が物理50%、炎70%の場合
最終的な有効度は 70% ( = max(50%, 70%) )

<1:平均>

防御側の該当する属性有効度の平均値が最終的なダメージ倍率になります。

例) 物理+炎の2属性攻撃で、防御側の有効度が物理50%、炎70%の場合
最終的な有効度は 60% ( = (50% + 70%) / 2 )

<2:累積>

防御側の該当する属性有効度を累積した値が最終的なダメージ倍率になります。

例) 物理+炎の2属性攻撃で、防御側の有効度が物理50%、炎70%の場合
最終的な有効度は 35% ( = 50% × 70% )

<3:最小>

防御側の該当する属性有効度の最小値が最終的なダメージ倍率になります。

例) 物理+炎の2属性攻撃で、防御側の有効度が物理50%、炎70%の場合
最終的な有効度は 50% ( = min(50%, 70%) )

なお、この計算は、ダメージID毎に別に行われますので注意してください。

設定例

以下の2パターンは、防御側の有効度の設定が無ければ同じダメージですが、有効度の設定がある場合は最終的なダメージが変わります。

パターン1 ダメージID 0 のみ

  • 属性物理+炎
  • 計算式200

防御側の有効度が物理50%、炎70%の場合で最大設定の場合

200 * 70% = 140ダメージ

パターン2 ダメージID 0 と ダメージID 1

  • ID0 属性物理
  • ID0 計算式100
  • ID1 属性炎
  • ID1 計算式100

防御側の有効度が物理50%、炎70%の場合で最大設定の場合

100 * 50% + 100 * 70% = 120ダメージ

目次に戻る

その他の設定

その他に、本プラグインで設定できる項目を説明します。

[使用できるタグ] 対象:スキル

<Sep Scope Random: y>

範囲を「敵X体ランダム」に設定している場合、ランダムの対象 X を y に変更します。

プラグインパラメータの設定項目

<Make Sep For Each>

アクターがスキルを習得した時に、スキルの個別データを自動的に作成します。 別途配布のFTKR_SkillUpgradeSystem.jsを使用する場合は、'1'に設定してください。 作成したデータは、後述のプラグインコマンドによりデータの変更、リセット、削除が行なえます。

<Enabled Repeat Failure>

連続攻撃時に途中でスキルに失敗、命中しない、回避される等するとその時点で攻撃をやめるかどうか設定できます。

  • 0 - 攻撃を続けます
  • 1 - 攻撃をやめます

目次に戻る

スクリプトコマンド

以下のスクリプトコマンドによって、スキルの個別データの有無を取得できます。

$gameActors.actor(x).isMakedSepSkill(y)

指定したアクターが、スキルの個別データを持っている場合に、trueを返す。

  • x - アクターID
  • y - スキルID

目次に戻る

プラグインコマンド

以下のプラグインコマンドを使用できます。 なお、プラグインコマンドに指定する値には、数値だけでなく、ゲーム内変数を 指定することが可能です。

例) アクターIDの指定部に、変数ID1 の値を使用する場合

actor(v[1])

指定した対象のスキルパラメータを変更

指定したアクターが指定したスキルの個別データを持っていない場合は無効。

<SEP SET ACTOR(x1) SKILL(x2) PROP VALUE>
  • x1 - アクターIDを指定する。
  • x2 - スキルIDを指定する。
  • PROP VALUE - 変更したいスキルパラメータによって以下から選択する。必ず小文字を入力すること。
    • damages(y1) rate(y2) - ダメージID y1 の rate を y2 に変更する。
    • effects(y1) rate(y2) - 使用効果ID y1 の rate を y2 に変更する。
    • speed value(y) - 速度補正を y に変更する。
    • repeats rate(y) - 連続回数の rate を y に変更する。
    • repeats count(y) - 連続回数の count を y に変更する。
    • sepCost rate(y) - 消費コストの rate を y に変更する。
    • scope value(y) - 範囲を y に変更する。
    • scoperandom value(y) - ランダム対象数を y に変更する。
    • name SKILLNAME - スキル名を'SKILLNAME'に変更します。
    • name v[y] - スキル名を変数ID y に格納した文字列に変更します。

例)

<SEP SET ACTOR(1) SKILL(1) damages(0) rate(200)>

アクター1 が覚えている スキルID 1 に設定したダメージID 0 のダメージ倍率を 200 に変更。

指定したアクターのスキルの個別データをリセット

指定したアクターが指定したスキルの個別データを持っていない場合は無効。

<SEP RESET ACTOR(x1) SKILL(x2)>
  • x1 - アクターIDを指定する。
  • x2 - スキルIDを指定する。

指定したアクターのスキルの個別データを削除

指定したアクターが指定したスキルの個別データを持っていない場合は無効。 削除後は、デフォルトのスキルデータを参照する。

<SEP ERASE ACTOR(x1) SKILL(x2)>
  • x1 - アクターIDを指定する。
  • x2 - スキルIDを指定する。

指定したアクターのスキルの個別データを作成

指定したアクターが指定したスキルの個別データを持ってる場合は無効。 また、指定したスキルを覚えていない場合も無効。 作成後は、個別のスキルデータを参照する。

<SEP MAKE ACTOR(x1) SKILL(x2)>
  • x1 - アクターIDを指定する。
  • x2 - スキルIDを指定する。

目次に戻る

eval値の使用者パラメータについて

使用者パラメータとして、HPや命中などのパラメータ以外にも、アクターの さまざまな状態を取得できます。以下はその一例です。

なお、これらは 'a'を'$gameActors.actor(y)'と変えることで、 スクリプトコマンドとして使用できます。(yはアクターID)

特定の装備をしているか判定する

a.isEquipped(x)
  • x - 武器なら $dataWeapons[n], 防具なら $dataArmors[n]
  • n は武器防具のID

特定のスキルを取得しているか判定する

a.isLearnedSkill(x)
  • x - スキルID

特定のステートを受けているか判定する

a.isStateAffected(x)
  • x - ステートID

特定の強化を受けているか判定する

a.isBuffAffected(x)
  • x - 強化ID(IDの対象は以下)
    • 0 - 最大HP
    • 1 - 最大MP
    • 2 - 攻撃力
    • 3 - 防御力
    • 4 - 魔法攻撃
    • 5 - 魔法防御
    • 6 - 敏捷性
    • 7 - 運

特定の弱体を受けているか判定する

a.isDebuffAffected(x)
  • x - 弱体ID(IDの対象は強化と同じ)

目次に戻る

プラグインの更新履歴

バージョン 公開日 更新内容
ver1.4.2 2018/11/18 Yプラグインパラメータ Make Sep For Each を 1 に設定すると、コマンド記憶が無効になる不具合を修正
ver1.4.1 2018/08/13 YEP_SkillCore.js側のHPコスト消費処理の競合を回避
ver1.4.0 2018/08/05 属性ダメージ計算時に100%の属性有効度を除外できる機能を追加
ver1.3.4 2017/10/16 イベントコマンドの条件分岐で、スキルを覚えていることを正しく判定できない不具合を修正
ver1.3.3 2017/04/09 不具合修正
ver1.0.0 2017/02/18 初版公開

拡張プラグイン

以下のプラグインを使用することで、本プラグインの機能を拡張できます。

ライセンス

本プラグインはMITライセンスのもとで公開しています。

The MIT License (MIT)

目次に戻る

トップページに戻る

You can’t perform that action at this time.