Exemple #1
0
        public static ListenerAction OnObjectChanged(Event evt)
        {
            if (evt.TargetObject is CarUFO)
            {
                AbductSimAEx.AddInteraction(evt.TargetObject as CarUFO);

                return(ListenerAction.Keep);
            }

            if (evt.TargetObject is RabbitHole)
            {
                if ((evt.TargetObject as RabbitHole).Guid == RabbitHoleType.Hospital)
                {
                    HaveAlienBabyHospital.AddInteraction(evt.TargetObject as RabbitHole);
                }

                return(ListenerAction.Keep);
            }

            if (evt.TargetObject is Lot)
            {
                DebugTriggerAbduction.AddInteraction(evt.TargetObject as Lot);
                HaveAlienBabyHome.AddInteraction(evt.TargetObject as Lot);

                return(ListenerAction.Keep);
            }

            return(ListenerAction.Keep);
        }
Exemple #2
0
        public static void OnWorldLoadFinished(object sender, EventArgs evtArgs)
        {
            kDebugging = Settings.mDebugging;

            foreach (Sim sim in Sims3.Gameplay.Queries.GetObjects <Sim>())
            {
                DebugInduceAlienPregnancy.AddInteraction(sim);
                ReturnAlienBabyEx.AddInteraction(sim);
            }

            /*
             * foreach (CarUFO ufo in Sims3.Gameplay.Queries.GetObjects<CarUFO>())
             * {
             *  AbductSimAEx.AddInteraction(ufo);
             * }
             */

            foreach (Lot lot in Sims3.Gameplay.Queries.GetObjects <Lot>())
            {
                DebugTriggerAbduction.AddInteraction(lot);
                HaveAlienBabyHome.AddInteraction(lot);
            }

            foreach (RabbitHole hospital in RabbitHole.GetRabbitHolesOfType(RabbitHoleType.Hospital))
            {
                HaveAlienBabyHospital.AddInteraction(hospital);
            }

            EventTracker.AddListener(EventTypeId.kChildBornOrAdopted, new ProcessEventDelegate(OnNewBaby));
            EventTracker.AddListener(EventTypeId.kBoughtObject, new ProcessEventDelegate(OnObjectChanged));
            EventTracker.AddListener(EventTypeId.kBoughtObjectInEditTownMode, new ProcessEventDelegate(OnObjectChanged));
            EventTracker.AddListener(EventTypeId.kInventoryObjectAdded, new ProcessEventDelegate(OnObjectChanged));
            EventTracker.AddListener(EventTypeId.kObjectStateChanged, new ProcessEventDelegate(OnObjectChanged));
        }
Exemple #3
0
            public void HaveTheBaby()
            {
                if (Pregnancy.mContractionBroadcast != null)
                {
                    Pregnancy.mContractionBroadcast.Dispose();
                }

                Abductee.RemoveAlarm(Pregnancy.PreggersAlarm);
                Abductee.RemoveAlarm(Pregnancy.mContractionsAlarm);
                bool flag = false;

                foreach (InteractionInstance current in Abductee.InteractionQueue.InteractionList)
                {
                    HaveAlienBabyHospital haveBabyHospital = current as HaveAlienBabyHospital;

                    if (haveBabyHospital != null)
                    {
                        haveBabyHospital.CancellableByPlayer = false;
                        haveBabyHospital.BabyShouldBeBorn    = true;
                        flag = true;
                        break;
                    }
                }

                if (!flag)
                {
                    List <RabbitHole> hospitals            = RabbitHole.GetRabbitHolesOfType(RabbitHoleType.Hospital);
                    float             distanceToBirthplace = Abductee.LotHome.GetDistanceToObject(Abductee);
                    RabbitHole        hospital             = null;

                    foreach (RabbitHole current in hospitals)
                    {
                        float distanceToHospital = current.RabbitHoleProxy.GetDistanceToObject(Abductee);

                        if (distanceToHospital < distanceToBirthplace)
                        {
                            distanceToBirthplace = distanceToHospital;
                            hospital             = current;
                        }
                    }

                    InteractionInstance instance;

                    if (hospital != null)
                    {
                        instance = HaveAlienBabyHospital.Singleton.CreateInstance(hospital, Abductee,
                                                                                  new InteractionPriority(InteractionPriorityLevel.Pregnancy), false, false);
                        (instance as HaveAlienBabyHospital).BabyShouldBeBorn = true;
                    }
                    else
                    {
                        instance = HaveAlienBabyHome.Singleton.CreateInstance(Abductee.LotHome, Abductee,
                                                                              new InteractionPriority(InteractionPriorityLevel.Pregnancy), false, false);
                    }

                    Abductee.InteractionQueue.Add(instance);
                    ActiveTopic.AddToSim(Abductee, "Recently Had Baby");
                }
            }
        public override void HaveTheBaby()
        {
            string msg = mMom.FullName + Common.NewLine +
                         "AlienPregnancy.HaveTheBaby" + Common.NewLine +
                         " - Initiating Birth Sequence" + Common.NewLine;

            if (mContractionBroadcast != null)
            {
                mContractionBroadcast.Dispose();
            }

            mMom.RemoveAlarm(PreggersAlarm);
            mMom.RemoveAlarm(mContractionsAlarm);

            msg += " - Pregnancy Alarm Removed" + Common.NewLine +
                   " - Contraction Alarm Removed" + Common.NewLine;

            if (mMom.InteractionQueue.HasInteractionOfType(HaveAlienBabyHome.Singleton))
            {
                msg += " - Already Birthing at Home";
                Common.DebugNotify(msg);

                return;
            }

            if (mMom.InteractionQueue.HasInteractionOfType(HaveAlienBabyHospital.Singleton))
            {
                msg += " - Already Birthing at Hospital";

                foreach (InteractionInstance current in mMom.InteractionQueue.InteractionList)
                {
                    HaveAlienBabyHospital haveBabyHosptial = current as HaveAlienBabyHospital;

                    if (haveBabyHosptial != null)
                    {
                        haveBabyHosptial.CancellableByPlayer = false;
                        haveBabyHosptial.BabyShouldBeBorn    = true;

                        Common.DebugNotify(msg);

                        return;
                    }
                }
            }

            msg += " - Checking for Hospitals" + Common.NewLine;

            List <RabbitHole> rabbitHoles = RabbitHole.GetRabbitHolesOfType(RabbitHoleType.Hospital);
            float             num         = mMom.LotHome.GetDistanceToObject(mMom);
            RabbitHole        rabbitHole  = null;

            foreach (RabbitHole current2 in rabbitHoles)
            {
                float distanceToObject = current2.RabbitHoleProxy.GetDistanceToObject(mMom);

                if (distanceToObject < num)
                {
                    num        = distanceToObject;
                    rabbitHole = current2;
                }
            }

            InteractionInstance instance;

            if (rabbitHole != null)
            {
                msg += " - Birthing at Hospital";

                instance = HaveAlienBabyHospital.Singleton.CreateInstance(rabbitHole, mMom,
                                                                          new InteractionPriority(InteractionPriorityLevel.Pregnancy), false, false);
                ((HaveAlienBabyHospital)instance).BabyShouldBeBorn = true;
            }
            else
            {
                msg += " - Birthing at Home";

                instance = HaveAlienBabyHome.Singleton.CreateInstance(mMom.LotHome, mMom,
                                                                      new InteractionPriority(InteractionPriorityLevel.Pregnancy), false, false);
            }

            mMom.InteractionQueue.Add(instance);
            ActiveTopic.AddToSim(mMom, "Recently Had Baby");

            Common.DebugNotify(msg);
        }