Ejemplo n.º 1
0
        public void Repair()
        {
            //No krashes to repair.
            if (_kerbalKrash.Krashes.Count == 0)
            {
                ScreenMessages.PostScreenMessage(part.partInfo.title + ": no damage to repair!", 4, ScreenMessageStyle.UPPER_CENTER);
                return;
            }

            //Only check trait and level requirements if trait is not "None".
            if (RequiredTrait != Trait.None.ToString())
            {
                //Get trait information.
                ProtoCrewMember trait = FlightGlobals.ActiveVessel.GetVesselCrew()[0];

                //Check if current Kerbal meets all trait requirements.
                if (trait == null || trait.experienceTrait.Title != RequiredTrait || trait.experienceLevel < RequiredLevel)
                {
                    ScreenMessages.PostScreenMessage(part.partInfo.title + " can only be repaired by a level " + RequiredLevel + "(+) " + RequiredTrait + "!", 4, ScreenMessageStyle.UPPER_CENTER);
                    return;
                }
            }

            //Repair the newest krash of this part.
            _kerbalKrash.Repair();

            ScreenMessages.PostScreenMessage(part.partInfo.title + ": repaired to " + _kerbalKrash.Damage.ToString("P"), 4, ScreenMessageStyle.UPPER_CENTER);
        }
Ejemplo n.º 2
0
        public void Repair()
        {
            //No krashes to repair.
            if (_kerbalKrash.Krashes.Count == 0)
            {
                ScreenMessages.PostScreenMessage("No damage to repair!", 4, ScreenMessageStyle.UPPER_CENTER);
                return;
            }

            //Repair the newest krash of this part.
            _kerbalKrash.Repair();

            ScreenMessages.PostScreenMessage("Repaired " + part.partInfo.title + " to " + _kerbalKrash.Damage.ToString("P"), 4, ScreenMessageStyle.UPPER_CENTER);
        }
Ejemplo n.º 3
0
        public void Repair()
        {
            //No krashes to repair.
            if (_kerbalKrash.Krashes.Count == 0)
            {
                ScreenMessages.PostScreenMessage(part.partInfo.title + ": no damage to repair!", 4, ScreenMessageStyle.UPPER_CENTER);
                return;
            }

            //Get trait information.
            ProtoCrewMember trait = FlightGlobals.ActiveVessel.GetVesselCrew()[0];

            //Only check trait and level requirements if trait is not "None".
            if (RequiredTrait != Trait.None.ToString())
            {
                //Check if current Kerbal meets all trait requirements.
                if (trait == null || trait.experienceTrait.Config.Name != RequiredTrait || trait.experienceLevel < RequiredLevel)
                {
                    //Kerbal does not have the appropriate trait (level).
                    ScreenMessages.PostScreenMessage(part.partInfo.title + " can only be repaired by a level " + RequiredLevel + "(+) " + RequiredTrait + "!", 4, ScreenMessageStyle.UPPER_CENTER);
                    return;
                }
            }

            //Calculate the repair delay for the given Kerbal's experience level.
            double delay = _maximumRepairDelay - (trait.experienceLevel * _experienceLevelScaling) - (part.vessel.missionTime - _repaired_time);

            //Check if the repair delay has passed (and vessel is not sitting on the launchpad).
            if (delay > 0 && part.vessel.missionTime > 0)
            {
                ScreenMessages.PostScreenMessage(part.partInfo.title + " can be repaired in " + delay.ToString("N0") + " seconds.", 4, ScreenMessageStyle.UPPER_CENTER);
                return;
            }

            //Repair the newest krash of this part.
            _kerbalKrash.Repair();

            //Set the last repair time.
            _repaired_time = part.vessel.missionTime;

            ScreenMessages.PostScreenMessage(part.partInfo.title + ": repaired to " + _kerbalKrash.Damage.ToString("P").PadLeft(7), 4, ScreenMessageStyle.UPPER_CENTER);
        }
        public void Repair()
        {
            //No krashes to repair.
            if (_kerbalKrash.Krashes.Count == 0)
            {
                ScreenMessages.PostScreenMessage("No damage to repair!", 4, ScreenMessageStyle.UPPER_CENTER);
                return;
            }

            //Fully repair the part.
            _kerbalKrash.Repair();

            //Remove the last krash.
            _kerbalKrash.Krashes.RemoveAt(_kerbalKrash.Krashes.Count - 1);

            //Apply all remaining krashes.
            foreach (KerbalKrashSystem.Krash krash in _kerbalKrash.Krashes)
            {
                _kerbalKrash.ApplyKrash(krash);
            }

            ScreenMessages.PostScreenMessage("Repaired to " + _kerbalKrash.Damage.ToString("P"), 4, ScreenMessageStyle.UPPER_CENTER);
        }