public static void MakeCheckError(List <FELint.ErrorSt> errors) { InputFormRef InputFormRef = Init(null); if (InputFormRef.DataCount < 10) { errors.Add(new FELint.ErrorSt(FELint.Type.UNIT, U.NOT_FOUND , R._("ユニットデータが極端に少ないです。破損している可能性があります。"))); } uint base_pointer = Program.ROM.u32(Program.ROM.RomInfo.support_unit_pointer()); if (!U.isSafetyPointer(base_pointer)) { errors.Add(new FELint.ErrorSt(FELint.Type.UNIT, U.NOT_FOUND , R._("ユニット0x01の支援ポインタが無効です。この値は支援の起点となる値です。バニラの値から変更しないでください。"))); return; } //武器魔法混在パッチを適応しているか bool is_melee_range_fix = PatchUtil.SearchMeleeAndMagicFixPatch(); uint unit_addr = InputFormRef.BaseAddress; for (uint i = 0; i < InputFormRef.DataCount; i++, unit_addr += InputFormRef.BlockSize) { uint name = Program.ROM.u16(unit_addr + 0); FELint.CheckText(name, "NAME1", errors, FELint.Type.UNIT, unit_addr, i); uint info = Program.ROM.u16(unit_addr + 2); FELint.CheckText(info, "DETAIL3", errors, FELint.Type.UNIT, unit_addr, i); uint id = Program.ROM.u8(unit_addr + 4); if (name == 0 && id == 0) {//ただの使っていないデータ } else { FELint.CheckID(id, i + 1, errors, FELint.Type.UNIT, unit_addr, i); } if (is_melee_range_fix == false) {//武器魔法混在パッチがないので、混在のチェックをします if (isMeleeMagicMixAddr(unit_addr)) { errors.Add(new FELint.ErrorSt(FELint.Type.UNIT, unit_addr , R._("武器レベルで、近接と魔法を混在させています。\r\n混在を可能にするパッチを当てていない状態で、近接と魔法を混在すると、戦闘アニメが正しく動作しません。"), i)); } } uint support_pointer = Program.ROM.u32(unit_addr + 44); SupportUnitForm.MakeCheckErrorAddr(errors, support_pointer, FELint.Type.UNIT, unit_addr, i); } }
public void MeleeAndMagicFix() { if (this.InputFormRef != null && this.InputFormRef.IsUpdateLock) { return; } if (PatchUtil.SearchMeleeAndMagicFixPatch()) { return; } bool useMelee = (B20.Value > 0 || B21.Value > 0 || B22.Value > 0 || B23.Value > 0); bool useMagic = (B24.Value > 0 || B25.Value > 0 || B26.Value > 0 || B27.Value > 0); if (useMelee && useMagic) { HowDoYouLikePatchForm.CheckAndShowPopupDialog(HowDoYouLikePatchForm.TYPE.MeleeAndMagicFix_By_Unit); } }
public static void MakeCheckError(List <FELint.ErrorSt> errors) { InputFormRef InputFormRef = Init(null); if (InputFormRef.DataCount < 10) { errors.Add(new FELint.ErrorSt(FELint.Type.UNIT, U.NOT_FOUND , R._("ユニットデータが極端に少ないです。破損している可能性があります。"))); } //武器魔法混在パッチを適応しているか bool is_melee_range_fix = PatchUtil.SearchMeleeAndMagicFixPatch(); uint unit_addr = InputFormRef.BaseAddress; for (uint i = 0; i < InputFormRef.DataCount; i++, unit_addr += InputFormRef.BlockSize) { uint name = Program.ROM.u16(unit_addr + 0); FELint.CheckText(name, "NAME1", errors, FELint.Type.UNIT, unit_addr, i); uint info = Program.ROM.u16(unit_addr + 2); FELint.CheckText(info, "DETAIL3", errors, FELint.Type.UNIT, unit_addr, i); uint id = Program.ROM.u8(unit_addr + 4); if (name == 0 && id == 0) {//ただの使っていないデータ } else { FELint.CheckID(id, i + 1, errors, FELint.Type.UNIT, unit_addr, i); } if (is_melee_range_fix == false) {//武器魔法混在パッチがないので、混在のチェックをします if (isMeleeMagicMixAddr(unit_addr)) { errors.Add(new FELint.ErrorSt(FELint.Type.UNIT, unit_addr , R._("武器レベルで、近接と魔法を混在させています。\r\n混在を可能にするパッチを当てていない状態で、近接と魔法を混在すると、戦闘アニメが正しく動作しません。"), i)); } } } }
public static void MakeCheckError(List <FELint.ErrorSt> errors) { InputFormRef InputFormRef = Init(null); if (InputFormRef.DataCount < 10) { errors.Add(new FELint.ErrorSt(FELint.Type.CLASS, U.NOT_FOUND , R._("クラスデータが極端に少ないです。破損している可能性があります。"))); } bool isFE6 = Program.ROM.RomInfo.version() == 6; //武器魔法混在パッチを適応しているか bool is_melee_range_fix = PatchUtil.SearchMeleeAndMagicFixPatch(); uint class_addr = InputFormRef.BaseAddress; for (uint i = 0; i < InputFormRef.DataCount; i++, class_addr += InputFormRef.BlockSize) { uint name = Program.ROM.u16(class_addr + 0); FELint.CheckText(name, "NAME1", errors, FELint.Type.CLASS, class_addr, i); uint info = Program.ROM.u16(class_addr + 2); FELint.CheckText(info, "DETAIL3", errors, FELint.Type.CLASS, class_addr, i); uint id = Program.ROM.u8(class_addr + 4); if (name == 0 && id == 0) {//ただの使っていないデータ } else {//IDチェック FELint.CheckID(id, i, errors, FELint.Type.CLASS, class_addr); } if (is_melee_range_fix == false) {//武器魔法混在パッチがないので、混在のチェックをします bool mix; if (isFE6) { mix = (ClassFE6Form.isMeleeMagicMix(class_addr)); } else { mix = (isMeleeMagicMix(class_addr)); } if (mix) { errors.Add(new FELint.ErrorSt(FELint.Type.CLASS, class_addr , R._("武器レベルで、近接と魔法を混在させています。\r\n混在を可能にするパッチを当てていない状態で、近接と魔法を混在すると、戦闘アニメが正しく動作しません。"), i)); } } //移動速度が0or1かどうかチェックする uint movespeed = Program.ROM.u8(class_addr + 7); if (movespeed >= 2) { errors.Add(new FELint.ErrorSt(FELint.Type.CLASS, class_addr , R._("「移動速度」に2以上が設定されています。「移動速度」が、2以上になっているユニットは移動した時に正しく描画されません。"), i)); } } }