//斧使いが、手斧のモーションを持っているかテストする. static void MakeCheckErrorAxs(InputFormRef ifr , List <U.AddrResult> axsItems , List <U.AddrResult> classList , uint cid , List <FELint.ErrorSt> errors) { bool axsUser = false; List <uint> axsList = new List <uint>(); List <U.AddrResult> list = ifr.MakeList(); for (int i = 0; i < list.Count; i++) { uint b0 = Program.ROM.u8(list[i].addr); uint b1 = Program.ROM.u8(list[i].addr + 1); if (b1 == 1) { //1=種類 if (b0 == 2) { //2=斧 axsUser = true; } } else if (b1 == 0) {//0=アイテム axsList.Add(b0); } } if (axsUser == false) {//問題なし return; } //斧使い 全種類の手斧をもっているか? for (int i = 0; i < axsItems.Count; i++) { uint itemid = axsItems[i].tag; if (axsList.IndexOf(itemid) >= 0) {//もっている. continue; } //取りこぼし. //武器レベルS ? uint wlevel = ItemForm.GetItemWeaponLevelAddr(axsItems[i].addr); if (wlevel >= 250) { //上級職ではない? bool isHigh = ClassForm.isHighClassAddr(classList[(int)cid].addr); if (isHigh == false) {//上級職でないので、この武器を使えません. continue; } } if (PatchUtil.SearchCache_HandAxsWildCard() == PatchUtil.HandAxsWildCard_extends.Enable) { if (axsList.IndexOf(0x28) >= 0) {//手斧モーションで代用可 continue; } } errors.Add(new FELint.ErrorSt(FELint.Type.BATTLE_ANIME_CLASS, ifr.BaseAddress , R._("クラス({0})は、斧を利用できますが、手斧({1})の設定がありません。\r\nGBAFEでは、手斧系の武器は、アイテムごとに投げるモーションを設定する必要があります。" , classList[(int)cid].name , axsItems[i].name), cid)); } }