private static void InCompleteFollowingStages(ShBJob tempStage, int stageIndex)
 {
     for (int i = stageIndex; i < tempStage.StageList.Count; i++)
     {
         tempStage.StageList[i].Progress = ShBProgress.States.NA;
     }
 }
        public static void ProgressClass(Character character, ShBProgress shbProgress, bool CompleteBool = false)
        {
            int StageIndex = ShBInfo.StageListString.IndexOf(shbProgress.Name);
            int JobIndex   = ShBInfo.JobListString.IndexOf(shbProgress.Job);

            ShBJob tempJob = character.ShBModel.ShbJobList[JobIndex];

            if (shbProgress.Progress == ShBProgress.States.NA & StageIndex > 0)
            {
                CompletePreviousStages(character, tempJob, StageIndex);
            }
            else if (shbProgress.Progress == ShBProgress.States.Completed)
            {
                InCompleteFollowingStages(tempJob, StageIndex);
                return;
            }

            if (shbProgress.Progress == ShBProgress.States.Initiated | CompleteBool)
            {
                shbProgress.Progress = ShBProgress.States.Completed;
                AlterCounts(character, StageIndex);
            }
            else
            {
                IncompleteOtherJobs(character, StageIndex);
                switch (StageIndex)
                {
                case 0:
                    shbProgress.Progress = ShBProgress.States.Completed;
                    break;

                case 1:
                    shbProgress.Progress = ShBProgress.States.Completed;
                    break;

                case 2:
                    shbProgress.Progress = ShBProgress.States.Completed;
                    break;

                case 3:
                    shbProgress.Progress = ShBProgress.States.Completed;
                    break;

                case 4:
                    shbProgress.Progress = ShBProgress.States.Completed;
                    break;

                case 5:
                    shbProgress.Progress = ShBProgress.States.Completed;
                    break;

                default:
                    shbProgress.Progress++;
                    break;
                }
                AlterCounts(character, StageIndex);
            }
        }
 private static void CompletePreviousStages(Character character, ShBJob tempStage, int stageIndex)
 {
     for (int i = 0; i < stageIndex; i++)
     {
         if (i == 0 & tempStage.Resistance.Progress != ShBProgress.States.Completed)
         {
             DecreaseScalePowder(character);
         }
         else if (i == 1 & tempStage.AugmentedResistance.Progress != ShBProgress.States.Completed)
         {
             DecreaseMemoryCount(character);
         }
         else if (i == 2 & tempStage.Recollection.Progress != ShBProgress.States.Completed)
         {
             DecreaseBitterMemoryCount(character);
         }
         tempStage.StageList[i].Progress = ShBProgress.States.Completed;
     }
 }