コード例 #1
0
        private void TrainMelee(ISoldier soldier, float points)
        {
            float pointShare = points / 4;

            soldier.AddSkillPoints(_skillsByName["Sword"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Shield"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Axe"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Fist"], pointShare);
        }
コード例 #2
0
        private void TrainVehicles(ISoldier soldier, float points)
        {
            float pointShare = points / 4;

            soldier.AddSkillPoints(_skillsByName["Drive (Bike)"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Pilot (Land Speeder)"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Drive (Rhino)"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Gunnery (Bolter)"], pointShare);
        }
コード例 #3
0
        private void TrainRanged(ISoldier soldier, float points)
        {
            float pointShare = points / 5;

            soldier.AddSkillPoints(_skillsByName["Gun (Bolter)"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Gunnery (Laser)"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Gun (Flamer)"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Gun (Sniper)"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Gun (Shotgun)"], pointShare);
        }
コード例 #4
0
        public void ApplyVeteranWorkExperience(ISoldier soldier, float points)
        {
            float pointShare = points / 7.0f;

            soldier.AddSkillPoints(_skillsByName["Marine"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Power Armor"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Armory (Small Arms)"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Drive (Bike)"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Jump Pack"], pointShare);
            if (soldier.Template.IsSquadLeader)
            {
                soldier.AddSkillPoints(_skillsByName["Tactics"], pointShare);
                soldier.AddSkillPoints(_skillsByName["Leadership"], pointShare);
            }
            else
            {
                soldier.AddSkillPoints(_skillsByName["Gun (Bolter)"], pointShare);
                soldier.AddSkillPoints(_skillsByName["Sword"], pointShare);
            }
        }
コード例 #5
0
        public void ApplySoldierWorkExperience(ISoldier soldier, float points)
        {
            float powerArmorSkill = soldier.GetTotalSkillValue(_skillsByName["Power Armor"]);
            // if any gunnery, ranged, melee, or vehicle skill is below the PA skill, focus on improving PA
            float gunnerySkill = soldier.GetTotalSkillValue(soldier.GetBestSkillInCategory(SkillCategory.Gunnery).BaseSkill);
            float meleeSkill   = soldier.GetTotalSkillValue(soldier.GetBestSkillInCategory(SkillCategory.Melee).BaseSkill);
            float rangedSkill  = soldier.GetTotalSkillValue(soldier.GetBestSkillInCategory(SkillCategory.Ranged).BaseSkill);
            float vehicleSkill = soldier.GetTotalSkillValue(soldier.GetBestSkillInCategory(SkillCategory.Vehicle).BaseSkill);

            float[] floatArray = { gunnerySkill, meleeSkill, rangedSkill, vehicleSkill };
            float   totalMax   = Mathf.Max(floatArray);

            if (totalMax > powerArmorSkill)
            {
                soldier.AddSkillPoints(_skillsByName["Power Armor"], points);
            }
            else
            {
                ApplyMarineWorkExperienceByType(soldier, points);
            }
        }
コード例 #6
0
        public void ApplyScoutWorkExperience(ISoldier soldier, float points)
        {
            // scouts in reserve get training, not work experience
            float pointShare = points / 9.0f;

            soldier.AddSkillPoints(_skillsByName["Marine"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Power Armor"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Armory (Small Arms)"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Gun (Bolter)"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Gunnery (Bolter)"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Stealth"], pointShare);

            if (soldier.Template.IsSquadLeader)
            {
                soldier.AddSkillPoints(_skillsByName["Tactics"], pointShare);
                soldier.AddSkillPoints(_skillsByName["Leadership"], pointShare);
                soldier.AddSkillPoints(_skillsByName["Teaching"], pointShare);
            }
            else
            {
                soldier.AddSkillPoints(_skillsByName["Gun (Sniper)"], pointShare);
                soldier.AddSkillPoints(_skillsByName["Gun (Shotgun)"], pointShare);
                soldier.AddSkillPoints(_skillsByName["Gunnery (Bolter)"], pointShare);
            }
        }
コード例 #7
0
        public void ApplyDevastatorWorkExperience(ISoldier soldier, float points)
        {
            float pointShare = points / 9.0f;

            soldier.AddSkillPoints(_skillsByName["Marine"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Power Armor"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Armory (Small Arms)"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Gun (Bolter)"], pointShare);
            soldier.AddSkillPoints(_skillsByName["Gunnery (Bolter)"], pointShare);

            if (soldier.Template.IsSquadLeader)
            {
                soldier.AddSkillPoints(_skillsByName["Tactics"], pointShare * 2);
                soldier.AddSkillPoints(_skillsByName["Leadership"], pointShare * 2);
            }
            else
            {
                soldier.AddSkillPoints(_skillsByName["Gun (Plasma)"], pointShare);
                soldier.AddSkillPoints(_skillsByName["Gun (Flamer)"], pointShare);
                soldier.AddSkillPoints(_skillsByName["Gunnery (Rocket)"], pointShare);
                soldier.AddSkillPoints(_skillsByName["Gunnery (Laser)"], pointShare);
            }
        }