Пример #1
0
        //全データの取得
        public static void MakeAllDataLength(List <Address> list)
        {
            {
                InputFormRef InputFormRef = Init(null);
                FEBuilderGBA.Address.AddAddress(list, InputFormRef, "Item", new uint[] { 12, 16 });

                //SkillSystemsによる 特効リワーク
                PatchUtil.class_type_enum effectivenesRework = PatchUtil.SearchClassType();
                //grows mod
                PatchUtil.growth_mod_enum growthmod = PatchUtil.SearchGrowsMod();

                uint addr = InputFormRef.BaseAddress;
                for (int i = 0; i < InputFormRef.DataCount; i++, addr += InputFormRef.BlockSize)
                {
                    uint itemStatBonuses = Program.ROM.p32(addr + 12);
                    if (itemStatBonuses > 0)
                    {
                        uint vennoExtends    = Program.ROM.u8(addr + 34);
                        uint statBonusesSize = 12; //バニラは12バイト
                        if (growthmod == PatchUtil.growth_mod_enum.Vennou && vennoExtends == 1)
                        {
                            statBonusesSize = 16; //vennou拡張は16バイト
                        }
                        else if (growthmod == PatchUtil.growth_mod_enum.SkillSystems && vennoExtends == 1)
                        {
                            statBonusesSize = 20; //SkillSystemsは20バイト
                        }

                        FEBuilderGBA.Address.AddAddress(list, itemStatBonuses
                                                        , statBonusesSize
                                                        , addr + 12
                                                        , "StatBooster " + U.To0xHexString(i)
                                                        , FEBuilderGBA.Address.DataTypeEnum.BIN);
                    }

                    uint itemEffectiveness = Program.ROM.p32(addr + 16);
                    if (itemEffectiveness > 0)
                    {
                        if (effectivenesRework == FEBuilderGBA.PatchUtil.class_type_enum.SkillSystems_Rework)
                        {
                            List <U.AddrResult> arlist = ItemEffectivenessSkillSystemsReworkForm.MakeCriticalClassList((uint)itemEffectiveness);
                            FEBuilderGBA.Address.AddAddress(list, itemEffectiveness
                                                            , (uint)(arlist.Count + 1) * 4
                                                            , addr + 16
                                                            , "ItemEffectiveness " + U.To0xHexString(i)
                                                            , FEBuilderGBA.Address.DataTypeEnum.BIN);
                        }
                        else
                        {
                            List <U.AddrResult> arlist = ItemEffectivenessForm.MakeCriticalClassList((uint)itemEffectiveness);
                            FEBuilderGBA.Address.AddAddress(list, itemEffectiveness
                                                            , (uint)(arlist.Count + 1)
                                                            , addr + 16
                                                            , "ItemEffectiveness " + U.To0xHexString(i)
                                                            , FEBuilderGBA.Address.DataTypeEnum.BIN);
                        }
                    }
                }
            }
        }
Пример #2
0
 private void P16_ValueChanged(object sender, EventArgs e)
 {
     if (PatchUtil.SearchClassType() == PatchUtil.class_type_enum.SkillSystems_Rework)
     {//SkillSystemsによる 特効リワーク
         List <U.AddrResult> arlist = ItemEffectivenessSkillSystemsReworkForm.MakeCriticalClassList((uint)P16.Value);
         U.ConvertListBox(arlist, ref CLASS_LISTBOX);
     }
     else
     {
         List <U.AddrResult> arlist = ItemEffectivenessForm.MakeCriticalClassList((uint)P16.Value);
         U.ConvertListBox(arlist, ref CLASS_LISTBOX);
     }
 }