Example #1
0
    //コンストラクタ
    public Job(JobName jobname, JobLevel jobLevel, List <Skill> skills, List <JobName> classChangeDestination,
               List <WeaponType> weaponTypes, JobStatusDto statusDto, GrowthRateDto growthRateDto, int move)
    {
        this.jobName = jobname;

        this.jobLevel = jobLevel;

        this.skills = skills;

        this.classChangeDestination = classChangeDestination;

        this.weaponTypes = weaponTypes;

        //ステータス
        this.statusDto = statusDto;

        //成長率補正
        this.growthRateDto = growthRateDto;

        this.move = move;
    }
Example #2
0
    //レベルアップするメソッド 直接Static型のUnitController.unitListを変更
    public List <StatusType> lvup(string lvUpUnitName, int resultExp)
    {
        //上がった要素をstring型リストに詰めて返す
        var lvUpList = new List <StatusType>();

        List <Unit> unitList    = UnitController.unitList;
        List <Unit> newUnitList = new List <Unit>();

        foreach (var unit in unitList)
        {
            //リストの中でレベルアップしたユニットが居れば
            if (unit.name == lvUpUnitName)
            {
                //データベースを名前で検索して成長率を取得
                GrowthRate growthRate = growthDatabase.FindByName(lvUpUnitName);

                //職業成長率
                GrowthRateDto growthRateDto = unit.job.growthRateDto;

                //ユニット成長率と職業成長率を合算
                int hpRate   = growthRate.hpRate + growthRateDto.jobHpRate;
                int latkRate = growthRate.latkRate + growthRateDto.jobLatkRate;
                int catkRate = growthRate.catkRate + growthRateDto.jobCatkRate;
                int agiRate  = growthRate.agiRate + growthRateDto.jobAgiRate;
                int dexRate  = growthRate.dexRate + growthRateDto.jobDexRate;
                int lukRate  = growthRate.lukRate + growthRateDto.jobLukRate;
                int ldefRate = growthRate.ldefRate + growthRateDto.jobLdefRate;
                int cdefRate = growthRate.cdefRate + growthRateDto.jobCdefRate;

                //200719 同じステが2回上がるのを防止
                bool hpUpped   = false;
                bool latkUpped = false;
                bool catkUpped = false;
                bool agiUpped  = false;
                bool dexUpped  = false;
                bool lukUpped  = false;
                bool ldefUpped = false;
                bool cdefUpped = false;

                //Lv
                unit.lv++;
                unit.exp = resultExp;

                //210225 LVのピンピン処理に追加
                lvUpList.Add(StatusType.LV);

                //2ピン補正したか否か
                //2ピン補正:上がったステが2個以下ならHPからループしなおし
                bool isRetry = false;

                //レベルアップループ 2つ以上パラメータが成長した時点でbreak
                while (true)
                {
                    //各成長判定 成長率以下の乱数なら+1
                    //HP
                    //1~100の値を作成
                    float ran = Random.Range(1.0f, 100.0f);

                    if (ran <= hpRate && !hpUpped)
                    {
                        unit.maxhp += 1;
                        lvUpList.Add(StatusType.HP);

                        hpUpped = true;
                        //2ピン補正時の時は2つパラメータが成長した時点でループ終了
                        if (lvUpList.Count > 2 && isRetry)
                        {
                            break;
                        }
                    }

                    ran = Random.Range(1.0f, 100.0f);

                    //遠距離攻撃
                    if (ran <= latkRate && !latkUpped)
                    {
                        unit.latk += 1;
                        lvUpList.Add(StatusType.LATK);
                        latkUpped = true;
                        if (lvUpList.Count > 2 && isRetry)
                        {
                            break;
                        }
                    }

                    ran = Random.Range(1.0f, 100.0f);

                    //近距離攻撃
                    if (ran <= catkRate && !catkUpped)
                    {
                        unit.catk += 1;
                        lvUpList.Add(StatusType.CATK);
                        catkUpped = true;
                        if (lvUpList.Count > 2 && isRetry)
                        {
                            break;
                        }
                    }

                    ran = Random.Range(1.0f, 100.0f);

                    //速さ
                    if (ran <= agiRate && !agiUpped)
                    {
                        unit.agi += 1;
                        lvUpList.Add(StatusType.AGI);
                        agiUpped = true;
                        if (lvUpList.Count > 2 && isRetry)
                        {
                            break;
                        }
                    }

                    ran = Random.Range(1.0f, 100.0f);

                    //技
                    if (ran <= dexRate && !dexUpped)
                    {
                        unit.dex += 1;
                        lvUpList.Add(StatusType.DEX);
                        dexUpped = true;
                        if (lvUpList.Count > 2 && isRetry)
                        {
                            break;
                        }
                    }

                    ran = Random.Range(1.0f, 100.0f);

                    //運
                    if (ran <= lukRate && !lukUpped)
                    {
                        unit.luk += 1;
                        lvUpList.Add(StatusType.LUK);
                        lukUpped = true;
                        if (lvUpList.Count > 2 && isRetry)
                        {
                            break;
                        }
                    }

                    ran = Random.Range(1.0f, 100.0f);

                    //遠距離防御
                    if (ran <= ldefRate && !ldefUpped)
                    {
                        unit.ldef += 1;
                        lvUpList.Add(StatusType.LDEF);
                        ldefUpped = true;
                        if (lvUpList.Count > 2 && isRetry)
                        {
                            break;
                        }
                    }

                    ran = Random.Range(1.0f, 100.0f);

                    //近距離防御
                    if (ran <= cdefRate && !cdefUpped)
                    {
                        unit.cdef += 1;
                        lvUpList.Add(StatusType.CDEF);
                        cdefUpped = true;
                        if (lvUpList.Count > 2 && isRetry)
                        {
                            break;
                        }
                    }

                    //2つ以上パラメータが成長していたらループ終了
                    if (lvUpList.Count > 2)
                    {
                        break;
                    }

                    //下まで来たら2ピン補正に入る
                    isRetry = true;
                }
                newUnitList.Add(unit);
            }
            else
            {
                //レベルアップしたユニット以外はそのまま
                newUnitList.Add(unit);
            }
        }

        return(lvUpList);
    }