ゲームを制作してて、気が付いたこと、解ったことなど。
自分の理解度を再確認するためのメモ書き。
間違ってる部分もある……と思う。いっぱい。
(本体ver.1052)
スキルの挙動に関しては、
公式追加スクリプトのcustom-skill.jsをじっくり見てみると
なんとなく解ってくる――気がする。
******
最初はスキル発動に関する記述。
var alias1 = SkillRandomizer.isCustomSkillInvokedInternal;
*同ファイル内のコメントより引用
// 発動型スキルは、SkillRandomizer.isCustomSkillInvokedInternalをオーバーライドする。
スキルランダマイザーなんちゃら~とは、なんぞ?と思ったら
singleton-skillcontrol.jsを開く。
スキルは内部的には、キーワードで管理されている。
必中などのデフォスキルは(SkillType.TRUEHIT)スキルタイプで判別されている。
だから、エディタで必中1(技で発動)とか必中2(速さで発動)とか
違うスキル名で登録しても、内部的には同一として扱われる。
例えば
連続と流星が同じ(キーワード)だと発動チェックは、どちらか一方だけになる。
(ユニットスキル(エディタ上リスト順?)>クラス>武器>アイテム>ステート……順?)
逆に言えば、同じ処理をするスキルスクリプトの
キーワード部分を別のものに変えてコピペしておくと
連続+流星も可能。
……その場合、10回攻撃(×武器の攻撃回数)になるから、攻撃回数がはんぱなくなる。
ブレンダ―持ち双撃・流星アゼリアさんなら
10ダメ*(4回*2*5)=400ダメージ(こわい!)
…あかんわ、これ。修正しないと。
攻撃回数乗算じゃなくて、加算方式にすべきか。
単純に上限値を設けるか……。
SkillRandomizer.isCustomSkillInvokedInternalを上書きして
カスタムスキルを発動させる。
ここをちょっと弄ると、相手のクラスやステート状態で発動を許可したりできる。
******
で、次がスキル本体の挙動部分。
var alias2 = AttackEvaluator.HitCritical.calculateDamage;
ダメージ2倍スキルなので、attack_order.js内の
AttackEvaluator.HitCritical.calculateDamageを変更している。
カスタムスキルの内容に合わせて、書き換える部分を探してこないといけない。
(↑これが大変。)
たとえば、「スキル発動時に相手は反撃できない」としたい時には
パッシブ側のroundCountを0にする処理を加えるといい。
******
PR