Пример #1
0
        public void ResetSkillsProgress()
        {
            int TotalLevel = 0;
            List <GuardianSkills> SkillList = GetSkillList;

            for (int s = 0; s < SkillList.Count; s++)
            {
                TotalLevel              += SkillList[s].Level;
                SkillList[s].Level       = 0;
                SkillList[s].Progress    = 0;
                SkillList[s].MaxProgress = GuardianSkills.ReturnSkillMaxProgress(0, true);
            }
            int ExtraLevel = LastTotalSkillLevel - TotalLevel;

            if (ExtraLevel < 0)
            {
                ExtraLevel = 0;
            }
            int TotalSkillLevel = TotalLevel + ExtraLevel;

            if (GuardianCommonStatus.UseSkillProgressShare)
            {
                GetCommonStatus.LastTotalSkillLevel = TotalSkillLevel;
            }
            else
            {
                LastTotalSkillLevel = TotalSkillLevel;
            }
            Main.NewText(Name + "'s skill levels were resetted.");
        }
Пример #2
0
        public void UpdateData(Player player)
        {
            if (Base.InvalidGuardian)
            {
                return;
            }
            AddSecond();
            if (player.whoAmI != Main.myPlayer)
            {
                return;
            }
            int LevelSum = 0;
            List <GuardianSkills> SkillList = GetSkillList;

            for (int s = 0; s < SkillList.Count; s++)
            {
                if (SkillList[s].MaxProgress == 0)
                {
                    SkillList[s].MaxProgress = GuardianSkills.ReturnSkillMaxProgress(SkillList[s].Level, true);
                }
                int LastSkillIncreaseLevel = -1;
                while (SkillLevelSum > -1 && SkillList[s].Level < GuardianSkills.MaxLevel && ((!MainMod.IndividualSkillLeveling && SkillList[s].Progress >= LastSkillRateMaxValue) || (MainMod.IndividualSkillLeveling && SkillList[s].Progress >= SkillList[s].MaxProgress)))
                {
                    SkillList[s].Level++;
                    SkillList[s].Progress   -= (MainMod.IndividualSkillLeveling ? SkillList[s].MaxProgress : LastSkillRateMaxValue);
                    SkillList[s].MaxProgress = GuardianSkills.ReturnSkillMaxProgress(SkillList[s].Level, true);
                    if (SkillList[s].Level % 100 == 0)
                    {
                        LastSkillIncreaseLevel = SkillList[s].Level;
                    }
                }
                if (LastSkillIncreaseLevel > -1)
                {
                    Main.NewText(Name + " has reached " + SkillList[s].skillType.ToString() + " level " + LastSkillIncreaseLevel + ".", MainMod.SkillUpColor);
                }
                LevelSum += SkillList[s].Level;
            }
            if (LevelSum != SkillLevelSum)
            {
                SkillLevelSum         = LevelSum;
                LastSkillRateMaxValue = GuardianSkills.ReturnSkillMaxProgress(LevelSum, true);
                if (PlayerMod.HasGuardianSummoned(player, ID, ModID))
                {
                    PlayerMod.GetPlayerSummonedGuardian(player, ID, ModID).UpdateStatus = true;
                }
            }
            bool StatusUpdate = false;

            if (MainMod.UsingGuardianNecessitiesSystem)
            {
                if (WorldMod.HourChange)
                {
                    StatusUpdate = true;
                    if (Injury > 0)
                    {
                        Injury--;
                        if (PlayerMod.HasGuardianSummoned(player, ID, ModID))
                        {
                            PlayerMod.GetPlayerSummonedGuardian(player, ID, ModID).UpdateStatus = true;
                        }
                    }
                }
                if (WorldMod.DayChange)
                {
                    if (PlayerMod.HasGuardianSummoned(player, ID, ModID))
                    {
                        Injury -= 2;
                        if (PlayerMod.HasGuardianSummoned(player, ID, ModID))
                        {
                            PlayerMod.GetPlayerSummonedGuardian(player, ID, ModID).UpdateStatus = true;
                        }
                    }
                    else
                    {
                        Injury  -= 8;
                        Fatigue -= 36;
                    }
                    StatusUpdate = true;
                }
            }
            if (StatusUpdate)
            {
                if (Injury < 0)
                {
                    Injury = 0;
                }
                if (Fatigue < -32)
                {
                    Fatigue = -32;
                }
            }
            UpdateMood();
            if (ShouldScheduleVisit())
            {
                WorldMod.ScheduledVisits.Add(MyID);
            }
        }