スキル[自己支援]の定義 - roratorio-hub/ratorio GitHub Wiki

バフスキルの定義は一貫していないように見えるので

サモナーのパッシブスキルである海の力

MaxHP+1000,MaxSP+100
ヒール系スキル使用時、HP回復量+50%
シーフード系スキルの習得レベルの合計が20以上の時、
追加でMaxHP+3000,MaxSP+300
ヒール系スキル使用時、HP回復量+100%

インクイジターのアクティブスキルである堅固な信念

「堅固な信念」状態 : MaxHP + 10%、Resが増加する。
[Lv 1] Res + 10 / 持続時間 240秒
[Lv 2] Res + 20 / 持続時間 180秒
[Lv 3] Res + 40 / 持続時間 120秒
[Lv 4] Res + 70 / 持続時間 90秒
[Lv 5] Res + 100 / 持続時間 60秒

を例にファイルを解析する

skill.dat.js

まず skill.dat.js にスキルを定義する

[1111,5,"堅固な信念"],

CSkillManager.js

つぎに CSkillManager.js を通じてスキルを選べるようにする

// ----------------------------------------------------------------
// 堅固な信念
// ----------------------------------------------------------------
SKILL_ID_KENKONA_SHINNEN = skillId;
skillData = new function() {
	this.prototype = new CSkillData();
	CSkillData.call(this);
	this.id = skillId;
	this.name = "堅固な信念";
	this.kana = "ケンコナシンネン";
	this.maxLv = 5;
	this.type = CSkillData.TYPE_ACTIVE;
	this.range = CSkillData.RANGE_SHORT;
	this.element = CSkillData.ELEMENT_VOID;
};
this.dataArray[skillId] = skillData;
skillId++;

mig.job.dat.js

つぎにどの職がその自己バフスキルを使えるのか定義する
ここでは自己支援スキルはアクティブもパッシブも同じパッシブ持続系扱いになっている
職業の定義を参照すること

hmjob.js

最後にスキルの中身を実装する
ro4に存在するのでこちらが新仕様
多くのアイテム効果はfunction ApplySpecModify()で定義されている
特性ステータスに関するアイテム効果はfunction GetXXX()で定義されている
堅固な信念はMaxHPとResに影響するのでその2箇所に記述がある

ApplySpecModify()

case ITEM_SP_MAXHP_UP:
	// 「インクイジター」スキル「堅固な信念」による効果
	if ((sklLv = UsedSkillSearch(SKILL_ID_KENKONA_SHINNEN)) > 0) {
		spVal += 10;
	}
	break;

GetRes()

// 「インクイジター」スキル「堅固な信念」による効果
if ((sklLv = UsedSkillSearch(SKILL_ID_KENKONA_SHINNEN)) > 0) {
	value += [0, 10, 20, 40, 70, 100][sklLv];
}

旧仕様

サモナーの海の力は chara.jsfoot.js に定義が分散している

chara.js

/**
* 装備等によるステータスの追加補正値を取得する(MaxHP+).
*/
function GetStatusModifyMaxHpPlus() {

...

//----------------------------------------------------------------
// 「サモナー 海の力」の、効果
//----------------------------------------------------------------
if ((sklLv = UsedSkillSearch(SKILL_ID_UMINO_CHIKARA)) > 0) {
	val += 1000;
	if (UsedSkillSearch(SKILL_ID_SEAFOOD_KEI_SHUTOKU_LEVEL_GOKEI) >= 20) {
		val += 3000;
	}
}

...

/**
* 装備等によるステータスの追加補正値を取得する(MaxSP+).
*/
function GetStatusModifyMaxSpPlus() {

...

//----------------------------------------------------------------
// 「サモナー 海の力」の、効果
//----------------------------------------------------------------
if ((sklLv = UsedSkillSearch(SKILL_ID_UMINO_CHIKARA)) > 0) {
	val += 100;
	if (UsedSkillSearch(SKILL_ID_SEAFOOD_KEI_SHUTOKU_LEVEL_GOKEI) >= 20) {
		val += 300;
	}
}

foot.js

function StAllCalc(){

...

//----------------------------------------------------------------
// 「サモナー 海の力」の、効果
//----------------------------------------------------------------
if ((sklLv = UsedSkillSearch(SKILL_ID_UMINO_CHIKARA)) > 0) {
	n_tok[91] += 50;
	if (UsedSkillSearch(SKILL_ID_SEAFOOD_KEI_SHUTOKU_LEVEL_GOKEI) >= 20) {
		n_tok[91] += 100;
	}
}