スキル習得時に発動する効果 - roratorio-hub/ratorio GitHub Wiki
りんりんニャンカーベルのようにスキル習得時に発動する効果は *.dat.js
ファイルだけを編集しても実現出来ない
item.dat.js
や card.dat.js
を適切に追加したうえで foot.js
または chara.js
に個別のロジックを書く必要がある
このページではりんりんニャンカーベルを例に、スキル習得時に発動する効果の実装方法を説明する
アイテムの基本データ登録
item.dat.js
に基本的なアイテムデータを登録する
ポイントはコード199
でスキル習得時効果を指定すること
これにより習得スキル(装備効果用)
チェック欄の対象スキルが有効になる
対象スキルのIDはskill.dat.js
から拾うこと
[
5051 # アイテムID
,52 # 下段
,201 # サモナー系装備可能
,0 # DEF 0
,0 # 武器レベル 0
,0 # Slot 0
,10 # 重量 10
,100 # Lv制限 100
,"りんりんニャンカーベル"
,"リンリンニヤンカアヘル"
,"[海の魂]Lv1習得時、[マグロシールド]の固定詠唱時間 - 1秒<br>[のどを鳴らす]の習得Lvが1上がる度に追加でMaxHP + 3%"
,91 # ヒール系スキル使用時HP回復量+%
,10 # 10
,199 # スキル習得時効果
,919 # 海の魂
,199 # スキル習得時効果
,917 # のどを鳴らす
,0 # EOF
]
また、理由は後述するがアイテムIDを定数化しておくと良い
ITEM_ID_RINRIN_NYAN_KABERU = 5051;
キャラクタの能力変化を定義
キャラクタの以下の能力変化は chara.js
で定義する
- 防御属性
- ATK+
- MaxHP+
- MaxHP+%
- MaxSP+
- MaxSP+%
- 除算DEF+
- 除算DEF+%
- 除算MDEF+
- 除算MDEF+%
- HIT+
それぞれに異なるfunctionが定義されているので該当部分を見つけ出し
既に記されている別の能力を参考に新しいロジックを実装する
今回はりんりんニャンカーベル
の[のどを鳴らす]の習得Lvが1上がる度に追加でMaxHP + 3%
を実装するので
function GetStatusModifyMaxHpUp() の末尾に以下のロジックを追記する
//----------------------------------------------------------------
// 「りんりんニャンカーベル」の、スキル習得による効果
//----------------------------------------------------------------
if ((itemCount = EquipNumSearch(ITEM_ID_RINRIN_NYAN_KABERU)) > 0) { // りんりんニャンカーベル装備中
val += 3 * LearnedSkillSearch(SKILL_ID_NODOWO_NARASU) * itemCount; // のどを鳴らすが1上がる度に3%
}
item.dat.js
にITEM_ID_RINRIN_NYAN_KABERU
を定義したほうが良い理由はこのため
同様にトリガーとなるスキルにもスキルID定数が定義されているはず(されてないなら定義しましょう)
これで、りんりんニャンカーベルを装備してのどを鳴らすを1上げる度にMaxHPが3%増加する効果が実装出来た
スキルの性能変化を定義
スキルの以下の性能変化は foot.js
で定義する
- 詠唱時間-%
- 詠唱時間-秒
- 固定詠唱時間-%
- 固定詠唱時間-秒
- 強制詠唱時間-% (強制ってなに?)
- 強制詠唱時間-秒
- クールタイム-秒
- 消費SP-%
- 消費SP-
それぞれに異なるfunctionが定義されているので該当部分を見つけ出し
既に記されている別の能力を参考に新しいロジックを実装する
今回はりんりんニャンカーベル
の[海の魂]Lv1習得時、[マグロシールド]の固定詠唱時間 - 1秒
を実装するので
function GetCastFixOfSkillForCastTimeFixed() の末尾に以下のロジックを追記する
//----------------------------------------------------------------
// 「りんりんにゃんカーベル」の、「マグロシールド」短縮
//----------------------------------------------------------------
if (skillId == SKILL_ID_MAGURO_SHIELD) { // マグロシールドを評価するとき
if ((eqpnum = EquipNumSearch(ITEM_ID_RINRIN_NYAN_KABERU)) > 0) { // りんりんニャンカーベル装備中で
if (LearnedSkillSearch(SKILL_ID_UMINO_TAMASHI) >= 1) { // 海の魂Lv1習得していれば
castfix -= 1000 * eqpnum; // 固定詠唱 1000 ms 短縮
}
}
}
アイテムIDとスキルIDはそれぞれitem.dat.jsとskill.dat.jsから定数をメモして持ってくること