public static void CheckPrologeEventPointerErrors(uint mapid, List <ErrorSt> errors) { List <U.AddrResult> units = EventCondForm.MakeUnitPointer(mapid); for (int i = 0; i < units.Count; i++) { uint addr = units[i].addr; uint pageSize = Program.ROM.RomInfo.eventunit_data_size(); for (; Program.ROM.u8(addr) != 0x0; addr += pageSize) { if (!U.isSafetyOffset(addr + pageSize)) { break; } uint unitGrow = Program.ROM.u8(addr + 3); uint assign = U.ParseUnitGrowAssign(unitGrow); if (assign != 0) {//自軍でないなら関係ない. continue; } uint unit_id = Program.ROM.u8(addr); if (!UnitForm.isMainUnit(unit_id)) { continue; } if (!UnitForm.isLoadClass(unit_id)) { uint class_id = Program.ROM.u8(addr + 1); if (class_id == 0) {//未入力の場合は推測します. class_id = UnitForm.GetClassID(unit_id); } if (!ClassForm.isLoadClass(class_id)) { continue; } } //条件にマッチするロードユニットを発見 return; } } if (Program.ROM.RomInfo.version() == 7) { errors.Add(new FELint.ErrorSt(EventCondForm.CONDTYPE.PLAYER_UNIT, U.NOT_FOUND , R._("序章でUnitID:0x01 or 0x02 or 0x03のロードユニットを仲間にしていません。\r\n序章で、このロードユニットを仲間に入れないと多くのイベントがフリーズします。"))); } else { errors.Add(new FELint.ErrorSt(EventCondForm.CONDTYPE.PLAYER_UNIT, U.NOT_FOUND , R._("序章でUnitID:0x01のロードユニットを仲間にしていません。\r\n序章で、このロードユニットを仲間に入れないと多くのイベントがフリーズします。"))); } }