示例#1
0
        public static uint GetHighClassFE7(uint uid)
        {
            if (uid == 0)
            {
                return(0);
            }

            //FE7までは分岐がないので、クラスのCCクラスを参照する.
            uint shien_classs_id = UnitForm.GetClassID(uid);

            if (shien_classs_id <= 0)
            {
                return(0);
            }
            if (ClassForm.isHighClass(shien_classs_id))
            {//上位クラスなので、もう CCではない
                return(shien_classs_id);
            }

            uint change_class = ClassForm.GetChangeClassID(shien_classs_id);

            if (change_class <= 0)
            {//上位のクラスが取れないので下位クラスを返す
                return(shien_classs_id);
            }

            if (ClassForm.isHighClass(change_class))
            {//上位クラスなので、もう CCではない
                return(change_class);
            }

            //上位のクラスが取れないので下位クラスを返す
            return(shien_classs_id);
        }
        public void SetParam(uint lv, uint grow, uint unitid, uint classid)
        {
            if (classid == 0)
            {
                classid = UnitForm.GetUnitIDWhereSupportClass(unitid);
            }

            GrowSimulator sim = new GrowSimulator();

            UnitForm.SetSimUnit(ref sim, unitid);
            ClassForm.SetSimClass(ref sim, classid);

            if (UnitForm.isHighClass(unitid) || ClassForm.isHighClass(classid))
            {
                lv += 10;
            }

            GrowSimulator.GrowOptionEnum growOption = GrowSimulator.GrowOptionEnum.None;
            if (grow == 1)
            {
                growOption = GrowSimulator.GrowOptionEnum.ClassGrow;
                sim.SetUnitLv1();
            }
            sim.Grow((int)lv, growOption);

            U.SelectedIndexSafety(X_SIM_HP, sim.sim_hp);
            U.SelectedIndexSafety(X_SIM_STR, sim.sim_str);
            U.SelectedIndexSafety(X_SIM_SKILL, sim.sim_skill);
            U.SelectedIndexSafety(X_SIM_SPD, sim.sim_spd);
            U.SelectedIndexSafety(X_SIM_DEF, sim.sim_def);
            U.SelectedIndexSafety(X_SIM_RES, sim.sim_res);
            U.SelectedIndexSafety(X_SIM_LUCK, sim.sim_luck);
            U.SelectedIndexSafety(X_SIM_MAGICEX_Value, sim.sim_ext_magic);
        }
示例#3
0
        public static int ClassMaxLevel(uint classs_id)
        {
            int max_level = (int)PatchUtil.GetLevelMaxCaps();

            if (ClassForm.isHighClass(classs_id))
            {//上級職は、最大LV+10として計算します.
                return(max_level + 10);
            }
            return(max_level);
        }
示例#4
0
        public static int GetCCCount(uint shien_classs_id)
        {
            if (Program.ROM.RomInfo.version <= 7)
            {     //FE7までは分岐がないので、CCクラスを参照する.
                if (ClassForm.isHighClass(shien_classs_id))
                { //上位クラスなので、もう CCではない
                    return(0);
                }
                //下位クラスなのでCCできる.
                return(1);
            }


            int ccount1 = 0;
            int ccount2 = 0;

            int                 datcount     = (int)ClassForm.DataCount();
            InputFormRef        InputFormRef = Init(null, datcount);
            List <U.AddrResult> list         = InputFormRef.MakeList();

            if (shien_classs_id > 0 && shien_classs_id < list.Count)
            {
                uint up_cc_class1 = Program.ROM.u8(list[(int)shien_classs_id].addr + 0);
                uint up_cc_class2 = Program.ROM.u8(list[(int)shien_classs_id].addr + 1);
                if (up_cc_class1 > 0 && up_cc_class1 < list.Count)
                {
                    ccount1++;
                    uint up2_cc_class1 = Program.ROM.u8(list[(int)up_cc_class1].addr + 0);
                    uint up2_cc_class2 = Program.ROM.u8(list[(int)up_cc_class1].addr + 1);
                    if (
                        (up2_cc_class1 > 0 && up2_cc_class1 < list.Count) ||
                        (up2_cc_class1 > 0 && up2_cc_class1 < list.Count)
                        )
                    {
                        ccount1++;
                    }
                }
                if (up_cc_class2 > 0 && up_cc_class2 < list.Count)
                {
                    ccount2++;
                    uint up2_cc_class1 = Program.ROM.u8(list[(int)up_cc_class2].addr + 0);
                    uint up2_cc_class2 = Program.ROM.u8(list[(int)up_cc_class2].addr + 1);
                    if (
                        (up2_cc_class1 > 0 && up2_cc_class1 < list.Count) ||
                        (up2_cc_class1 > 0 && up2_cc_class1 < list.Count)
                        )
                    {
                        ccount2++;
                    }
                }
            }
            return(Math.Max(ccount1, ccount2));
        }