//エラーチェック public static void MakeCheckError(List <FELint.ErrorSt> errors) { InputFormRef N_InputFormRef = N_Init(null); bool isFE6 = (Program.ROM.RomInfo.version == 6); if (!isFE6) {//FE6の場合、パラディンなどが手斧モーションを持っていない. //そのため、FE7,FE8だけチェックします. InputFormRef InputFormRef = Init(null); List <U.AddrResult> handAxsItems = ItemForm.MakeItemListByHandAxs(); List <U.AddrResult> classList = ClassForm.MakeClassList(); for (uint cid = 1; cid < classList.Count; cid++) { uint pointer; uint class_addr = classList[(int)cid].addr; uint addr = ClassForm.GetBattleAnimeAddrWhereAddr(class_addr, out pointer); if (addr == 0) { continue; } if (!U.isSafetyOffset(addr)) { errors.Add(new FELint.ErrorSt(FELint.Type.CLASS, class_addr , R._("クラス({0})の{1}のポインタ({2})が危険です。" , classList[(int)cid].name, R._("戦闘アニメ"), U.To0xHexString(addr)), cid)); continue; } InputFormRef.ReInit(addr); MakeCheckErrorAxs(InputFormRef, N_InputFormRef , handAxsItems, classList, cid, errors); } } { if (N_InputFormRef.DataCount < 10) { errors.Add(new FELint.ErrorSt(FELint.Type.BATTLE_ANIME, U.NOT_FOUND , R._("戦闘アニメが極端に少ないです。破損している可能性があります。"))); } List <uint> seatNumberList = new List <uint>(256); uint p = N_InputFormRef.BaseAddress; for (int i = 0; i < N_InputFormRef.DataCount; i++, p += N_InputFormRef.BlockSize) { if (isFE6 && i == 0x6c) { continue; } ImageUtilOAM.MakeCheckError(errors, p, (uint)(i), seatNumberList); } } }