예제 #1
0
        public void UpdateRatings(PlayerSoldier soldier)
        {
            // Melee score = (Speed * STR * Melee)
            // Expected score = 16 * 16 * 15.5/8 = 1000
            // low-end = 15 * 15 * 14/8 = 850
            // high-end = 17 * 17 * 16/8 = 578
            soldier.MeleeRating =
                soldier.Strength * soldier.GetTotalSkillValue(_skillsByName["Sword"])
                / (UnityEngine.Random.Range(1.44f, 1.76f) * UnityEngine.Random.Range(1.44f, 1.76f));
            // marksman, sharpshooter, sniper
            // Ranged Score = PER * Ranged
            Skill bestRanged = soldier.GetBestSkillInCategory(SkillCategory.Ranged);

            soldier.RangedRating =
                (soldier.Dexterity + bestRanged.SkillBonus)
                / UnityEngine.Random.Range(0.144f, 0.176f);
            // Leadership Score = CHA * Leadership * Tactics
            soldier.LeadershipRating = soldier.Ego
                                       * soldier.GetTotalSkillValue(_skillsByName["Leadership"])
                                       * soldier.GetTotalSkillValue(_skillsByName["Tactics"])
                                       / (UnityEngine.Random.Range(12.6f, 15.4f) * UnityEngine.Random.Range(1.26f, 1.54f) * UnityEngine.Random.Range(1.26f, 1.54f));
            // Ancient Score = EGO * BOD
            soldier.AncientRating = soldier.Ego * soldier.Constitution
                                    / (UnityEngine.Random.Range(1.26f, 1.54f) * UnityEngine.Random.Range(2.88f, 3.52f));
            // Medical Score = INT * Medicine
            soldier.MedicalRating =
                soldier.GetTotalSkillValue(_skillsByName["Diagnosis"])
                * soldier.GetTotalSkillValue(_skillsByName["First Aid"])
                / (UnityEngine.Random.Range(0.99f, 1.21f) * UnityEngine.Random.Range(1.17f, 1.43f));
            // Tech Score =  INT * TechRapair
            soldier.TechRating =
                soldier.GetTotalSkillValue(_skillsByName["Armory (Small Arms)"])
                * soldier.GetTotalSkillValue(_skillsByName["Armory (Vehicle)"])
                / (UnityEngine.Random.Range(1.17f, 1.43f) * UnityEngine.Random.Range(1.17f, 1.43f));
            // Piety Score = Piety * Ritual * Persuade
            soldier.PietyRating =
                soldier.GetTotalSkillValue(_skillsByName["Theology (Emperor of Man)"])
                / UnityEngine.Random.Range(0.108f, 0.132f);
        }
예제 #2
0
        public void EvaluateSoldier(PlayerSoldier soldier, Date trainingFinishedYear)
        {
            UpdateRatings(soldier);

            //if (soldier.MeleeRating > 115) soldier.AddEntryToHistory(trainingFinishedYear.ToString() + ": Awarded Adamantium Sword of the Emperor badge during training");
            if (soldier.MeleeRating > 100)
            {
                soldier.AddEntryToHistory(trainingFinishedYear.ToString() + ": Awarded Gold Sword of the Emperor badge during training");
            }
            else if (soldier.MeleeRating > 95)
            {
                soldier.AddEntryToHistory(trainingFinishedYear.ToString() + ": Awarded Silver Sword of the Emperor badge during training");
            }
            else if (soldier.MeleeRating > 86)
            {
                soldier.AddEntryToHistory(trainingFinishedYear.ToString() + ": Awarded Bronze Sword of the Emperor badge during training");
            }

            if (soldier.RangedRating > 110)
            {
                soldier.AddEntryToHistory(trainingFinishedYear.ToString() + ": Awarded Gold Marksman badge during training with " + soldier.GetBestSkillInCategory(SkillCategory.Ranged).BaseSkill.Name);
            }
            else if (soldier.RangedRating > 105)
            {
                soldier.AddEntryToHistory(trainingFinishedYear.ToString() + ": Awarded Silver Marksman badge during training with " + soldier.GetBestSkillInCategory(SkillCategory.Ranged).BaseSkill.Name);
            }
            else if (soldier.RangedRating > 98)
            {
                soldier.AddEntryToHistory(trainingFinishedYear.ToString() + ": Awarded Bronze Marksman badge during training with " + soldier.GetBestSkillInCategory(SkillCategory.Ranged).BaseSkill.Name);
            }

            if (soldier.LeadershipRating > 100)
            {
                soldier.AddEntryToHistory(trainingFinishedYear.ToString() + ": Awarded Gold Voice of the Emperor badge during training");
            }
            else if (soldier.LeadershipRating > 70)
            {
                soldier.AddEntryToHistory(trainingFinishedYear.ToString() + ": Awarded Silver Voice of the Emperor badge during training");
            }
            else if (soldier.LeadershipRating > 50)
            {
                soldier.AddEntryToHistory(trainingFinishedYear.ToString() + ": Awarded Bronze Voice of the Emperor badge during training");
            }

            if (soldier.AncientRating > 125)
            {
                soldier.AddEntryToHistory(trainingFinishedYear.ToString() + ": Awarded Gold Banner of the Emperor badge during training");
            }
            else if (soldier.AncientRating > 110)
            {
                soldier.AddEntryToHistory(trainingFinishedYear.ToString() + ": Awarded Silver Banner of the Emperor badge during training");
            }
            else if (soldier.AncientRating > 95)
            {
                soldier.AddEntryToHistory(trainingFinishedYear.ToString() + ": Awarded Bronze Banner of the Emperor badge during training");
            }

            if (soldier.MedicalRating > 75)
            {
                soldier.AddEntryToHistory(trainingFinishedYear.ToString() + ": Flagged for potential training as Apothecary");
            }

            if (soldier.TechRating > 50)
            {
                soldier.AddEntryToHistory(trainingFinishedYear.ToString() + ": Flagged for potential training as Techmarine");
            }

            if (soldier.PietyRating > 90)
            {
                soldier.AddEntryToHistory(trainingFinishedYear.ToString() + ": Awarded Devout badge and declared a Novice");
            }
        }