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); }
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)); }
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); }