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

ソウルアセティックの天地神霊を例にあげて他者に掛けられる支援スキルの定義を説明する

空から地まで神聖な神霊の力を伝えて、自身と周辺のパーティーメンバーを 60秒間、「天地神霊」状態にし、SPを 100%回復する。
自身の城隍堂の範囲内で使用した場合、さらに自身とパーティーメンバーのAPも回復する。
「天地神霊」状態 : 近接物理・遠距離物理・全属性魔法攻撃で与えるダメージが増加する。
[Lv 1] ダメージ増加量 + 11%
[Lv 2] ダメージ増加量 + 12%
[Lv 3] ダメージ増加量 + 13%
[Lv 4] ダメージ増加量 + 14%
[Lv 5] ダメージ増加量 + 15%
[Lv 6] ダメージ増加量 + 16%
[Lv 7] ダメージ増加量 + 17%
[Lv 8] ダメージ増加量 + 18%
[Lv 9] ダメージ増加量 + 19%
[Lv 10] ダメージ増加量 + 20%

skill.dat.js

まずはスキルのインデックスを定義する

SKILL_ID_TENCHI_SHINRE = 1203;
...
[1203,10,"天地神霊"],

CSkillManager.js

次にスキルを選択出来るようにする
他者に掛けられるバフは TYPE_ACTIVERANGE_LONG であることに注意
TYPE_MAGICAL は金盾無効を判定するため?

// ----------------------------------------------------------------
// 天地神霊
// ----------------------------------------------------------------
SKILL_ID_TENCHI_SHINRE = skillId;
skillData = new function() {
	this.prototype = new CSkillData();
	CSkillData.call(this);
	this.id = skillId;
	this.name = "天地神霊";
	this.kana = "テンチシンレイ";
	this.maxLv = 10;
	this.type = CSkillData.TYPE_ACTIVE | CSkillData.TYPE_MAGICAL;
	this.range = CSkillData.RANGE_LONG;
	this.element = CSkillData.ELEMENT_VOID;
};
this.dataArray[skillId] = skillData;
skillId++;

CCharaConfYozi.js

他者に掛けられる支援スキルは mig.job.dat.js のパッシブスキル配列に組み込めない
代わりにCCharaConfYoziに書く
CONF_ID_TENCHI_SHINRE はここで初めて定義しているので宣言が見つからなくても気にしなくて良い
SKILL_ID_XXXX に合った適当な CONF_ID_XXXX を定義する

なおセーブデータの制限で合計30個以上の四次支援は定義出来ないのでいずれセーブ拡張が必要かもしれない

CCharaConfYozi.CONF_ID_TENCHI_SHINRE = confId;
confData = [
	confId,
	CConfBase.ConfText("天地神霊"),
	CConfBase.ConfControlType(CONTROL_TYPE_SELECTBOX_NUMBER),
	CConfBase.ConfDefaultValue(0),
	CConfBase.ConfMinValue(0),
	CConfBase.ConfMaxValue(10)
];
this.confDataObj[confId] = confData;
confId++;

hmjob.js

最後にスキルの効果を実装する
基本的には自己バフスキルと同じだが値の取得先が違うので g_confDataYozi[CCharaConfYozi.CONF_ID_XXXX] から現在のレベルを取ってくること


case ITEM_SP_LONGRANGE_DAMAGE_UP:
	// 四次職支援「天地神霊」による効果
	if ((bufLv = g_confDataYozi[CCharaConfYozi.CONF_ID_TENCHI_SHINRE]) > 0) {
		spVal += 10 + bufLv;
	}

case ITEM_SP_SHORTRANGE_DAMAGE_UP:
// 四次職支援「天地神霊」による効果
	if ((bufLv = g_confDataYozi[CCharaConfYozi.CONF_ID_TENCHI_SHINRE]) > 0) {
		spVal += 10 + bufLv;
	}

case ITEM_SP_MAGICAL_DAMAGE_UP_ELM_VANITY:
case ITEM_SP_MAGICAL_DAMAGE_UP_ELM_WATER:
case ITEM_SP_MAGICAL_DAMAGE_UP_ELM_EARTH:
case ITEM_SP_MAGICAL_DAMAGE_UP_ELM_FIRE:
case ITEM_SP_MAGICAL_DAMAGE_UP_ELM_WIND:
case ITEM_SP_MAGICAL_DAMAGE_UP_ELM_POISON:
case ITEM_SP_MAGICAL_DAMAGE_UP_ELM_HOLY:
case ITEM_SP_MAGICAL_DAMAGE_UP_ELM_DARK:
case ITEM_SP_MAGICAL_DAMAGE_UP_ELM_PSYCO:
case ITEM_SP_MAGICAL_DAMAGE_UP_ELM_UNDEAD:
	// 四次職支援「天地神霊」による効果
	if ((bufLv = g_confDataYozi[CCharaConfYozi.CONF_ID_TENCHI_SHINRE]) > 0) {
		spVal += 10 + bufLv;
	}

foot.js

レリギオのような特性ステータスに影響を与える支援スキルは foot.js に定義されている

// 四次職支援「レリギオ」による効果
if ((bufLv = g_confDataYozi[CCharaConfYozi.CONF_ID_RERIGIO]) > 0) {
	value = 2 * bufLv;
	wSPC_STA += value;
	wSPC_WIS += value;
	wSPC_SPL += value;
}