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."); }
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); } }