public void AfterFlagPlanted(FlagSite data)
        {
            if (data.vessel.id == Guid.Empty)
            {
                data.vessel.id = Guid.NewGuid();
            }

            VesselProtoSystem.Singleton.MessageSender.SendVesselMessage(data.vessel, true);
        }
Exemple #2
0
        public void DoPlantFlag(StringValue flagname, StringValue flagtext)
        {
            CheckEvaController();
            if (!shared.Vessel.isEVA || !kerbaleva.part.GroundContact)
            {
                return;
            }
            PlayAnimation(new StringValue("idle"));
            StopAnimation(new StringValue("idle"));
            PlayAnimation(new StringValue("flag_plant"));
            var flag = FlagSite.CreateFlag((shared.Vessel.GetWorldPos3D() + shared.Vessel.transform.forward * 0.26f - shared.Vessel.transform.up * 0.20f), shared.Vessel.transform.rotation, kerbaleva.part);

            flag.placedBy          = kerbaleva.vessel.vesselName;
            flag.PlaqueText        = flagtext.ToString();
            flag.vessel.vesselName = flagname;

            kerbaleva.part.protoModuleCrew[0].flightLog.AddEntryUnique(FlightLog.EntryType.PlantFlag, kerbaleva.vessel.orbit.referenceBody.name);
            kerbaleva.part.protoModuleCrew[0].UpdateExperience();
            int count = FlightGlobals.VesselsLoaded.Count;

            while (count-- > 0)
            {
                Vessel vessel = FlightGlobals.VesselsLoaded[count];
                if (vessel == null)
                {
                    continue;
                }
                if (!vessel.loaded)
                {
                    continue;
                }
                if (vessel == FlightGlobals.ActiveVessel)
                {
                    continue;
                }
                if (vessel.vesselType == VesselType.EVA)
                {
                    ProtoCrewMember protoCrewMember = vessel.GetVesselCrew()[0];
                    protoCrewMember.flightLog.AddEntryUnique(FlightLog.EntryType.PlantFlag, kerbaleva.vessel.orbit.referenceBody.name);
                    protoCrewMember.UpdateExperience();
                    continue;
                }
                if (vessel.situation != Vessel.Situations.LANDED)
                {
                    if (vessel.situation != Vessel.Situations.SPLASHED)
                    {
                        if (vessel.situation != Vessel.Situations.PRELAUNCH)
                        {
                            continue;
                        }
                    }
                }
                List <ProtoCrewMember> vesselCrew = vessel.GetVesselCrew();
                int count2 = vesselCrew.Count;
                while (count2-- > 0)
                {
                    ProtoCrewMember protoCrewMember2 = vesselCrew[count2];
                    protoCrewMember2.flightLog.AddEntryUnique(FlightLog.EntryType.PlantFlag, kerbaleva.vessel.orbit.referenceBody.name);
                    protoCrewMember2.UpdateExperience();
                }
            }
        }