Esempio n. 1
0
    public void SetAllyStatus(AllyStatus charaStatus)
    {
        if (!partyMembers.Contains(charaStatus))
        {
            partyMembers.Add(charaStatus);
            //プレイヤーのレベルを取得
            int playerLevel = this.GetAllyStatus()[0].GetLevel();
            //加入するキャラのステータスを初期化
            charaStatus.StatusInit();
            // 変数を初期化
            int raisedAgility          = 0;
            int raisedPower            = 0;
            int raisedStrikingStrength = 0;
            int raisedMagicPower       = 0;
            //ステータスアップのテーブル
            LevelUpData levelUpData                 = charaStatus.GetLevelUpData();
            List <int>  agilityRisingTable          = levelUpData.GetAgilityRisingTable();
            List <int>  powerRisingTable            = levelUpData.GetPowerRisingTable();
            List <int>  strikingStrengthRisingTable = levelUpData.GetStrikingStrengthRisingTable();
            List <int>  magicPowerRisingTable       = levelUpData.GetMagicPowerRisingTable();
            // プレイヤーとのレベル差分、ステータスアップを計算し反映する
            for (int i = 1; i < playerLevel; i++)
            {
                // レベルを反映
                charaStatus.SetLevel(charaStatus.GetLevel() + 1);

                raisedAgility          += agilityRisingTable[charaStatus.GetLevel() % agilityRisingTable.Count()];
                raisedPower            += powerRisingTable[charaStatus.GetLevel() % powerRisingTable.Count()];
                raisedStrikingStrength += strikingStrengthRisingTable[charaStatus.GetLevel() % strikingStrengthRisingTable.Count()];
                raisedMagicPower       += magicPowerRisingTable[charaStatus.GetLevel() % strikingStrengthRisingTable.Count];
            }

            charaStatus.StatusUpdate(raisedPower, raisedAgility, raisedStrikingStrength, raisedMagicPower);
            //HP、MPを満タンに
            charaStatus.SetHp(charaStatus.GetMaxHp());
            charaStatus.SetMp(charaStatus.GetMaxMp());
        }
    }