特定の矢とのセット効果 - roratorio-hub/ratorio GitHub Wiki

エクストラジョーカーの効果が計算機上で発揮されないので類似効果を持つアイスフナムシとの差分を確認した
結論、特定の矢とのセット効果は itemset.dat.js で定義できない
現行の仕様では個別のロジックを書く必要がある

エクストラジョーカーの誤った定義

ラトリオHubで最初に追加を試みたデータ
アイテム説明文は正しく生成されるが聖属性耐性が 0 のまま変化しなかった
この定義では正しく計算出来ない

  • card.dat.js
CardObjNew[2892] = [2892,5,"エクストラジョーカー","",25,5,0];
CardObjNew[2893] = [2893,100,0,"",66,50,0];
  • item.dat.js
[4877,93,0,0,0,0,0,1,"銀の矢","012キンノヤ","",17,30,20,6,0],
  • itemset.dat.js
w_SE[2457] = [-2893,-2892,4877,];
CardIdToSetIdMap[2892] = [2457,];

アイスフナムシの定義

避難所の計算機で定義されていたデータ
これと同じように定義すれば正しく動作する

  • card.dat.js
[2702,5,"アイスフナムシ","[水晶の矢]と共に装備時、追加で、水属性攻撃で受けるダメージ - 50%",25,5,0],
  • item.dat.js
[4872,93,0,0,0,0,0,1,"水晶の矢","007スイシヨウノヤ","",17,30,20,1,0],
  • itemset.dat.js
2702 または 4872 に該当する記述なし

矢のセット効果はitemset.dat.jsではなくfoot.jsで書く
まず初めにセット効果を発動する矢のIDを arrow.dat.js から確認する

  • arrow.dat.js
[7,"水晶の矢","007スイシヨウノヤ",1,"",17,30,20,1,0],
[12,"銀の矢","012キンノヤ",1,"",17,30,20,6,0],

確認した矢のIDを使って foot.js に条件式を書く

  • foot.js
ARROW_ID_SUISHONO_YA = 7
CARD_ID_ICE_FUNAMUSHI = 2702

//----------------------------------------------------------------
// 「アイスフナムシ」カードの、矢との同時装備による効果
//----------------------------------------------------------------
if ((cardCount = CardNumSearch(CARD_ID_ICE_FUNAMUSHI)) > 0) {
	// 「推奨の矢」と同時装備
	if (n_A_Arrow == ARROW_ID_SUISHONO_YA) {
		n_tok[ITEM_SP_RESIST_ELM_WATER] += 50;
	}
}

エクストラジョーカーの正しい定義

この例に倣って、エクストラジョーカーの正しい定義は以下の通り
itemset.dat.js はデータ量を無駄に増やすので定義する必要は無い
セット効果の説明文はエクストラジョーカーのdescriptionに書くのが正解

  • card.dat.js
CARD_ID_EXTRA_JORKER = 2892;
CardObjNew[2892] = [2892,5,"エクストラジョーカー","",25,5,0];
  • foot.js
//----------------------------------------------------------------
// 「エクストラジョーカー」カードの、矢との同時装備による効果
//----------------------------------------------------------------
if ((cardCount = CardNumSearch(CARD_ID_EXTRA_JORKER)) > 0) {
	// 「銀の矢」と同時装備
	if (n_A_Arrow == ARROW_ID_GINNO_YA) {
		n_tok[ITEM_SP_RESIST_ELM_HOLY] += 50;
	}
}