public override bool Run() { try { if (Route()) { if (!Target.CanBeUsedAsBed) { return(false); } HeartShapedBed target = Target as HeartShapedBed; if (((target != null) && target.IsVibrating) && !Target.IsActorUsingMe(Actor)) { target.SetVibration(Actor, false); } StandardEntry(false); Definition definition = InteractionDefinition as Definition; try { if (ShouldChangeIntoSleepwear()) { GameObject container = mEntryPart.Container; if (!container.IsActorUsingMe(Actor)) { container.AddToUseList(Actor); } Actor.SwitchToOutfitWithSpin(Sim.ClothesChangeReason.GoingToBed); } else if (definition.mIsWoohoo) { GameObject container = mEntryPart.Container; if (!container.IsActorUsingMe(Actor)) { container.AddToUseList(Actor); } if (!container.IsOutside) { if (Woohooer.Settings.mNakedOutfitBed) { Actor.SwitchToOutfitWithSpin(Sim.ClothesChangeReason.GoingToBathe); Woohooer.Settings.AddChange(Actor); } else if (Woohooer.Settings.mChangeForBedWoohoo) { Actor.SwitchToOutfitWithSpin(Sim.ClothesChangeReason.GoingToBed); } } } } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(Actor, Target, e); } Target.AddBuffs(Actor); if (Actor.Posture is RelaxingPosture) { MaybePushRelax(); DoCommodityUpdates(); StandardExit(false, false); return(true); } else if (mEntryPart.RelaxOnBed(Actor, mEntryStateName)) { if (Actor.HasExitReason(ExitReason.UserCanceled)) { Actor.AddExitReason(ExitReason.CancelledByPosture); StandardExit(false, false); return(false); } DoCommodityUpdates(); MaybePushRelax(); StandardExit(false, false); return(true); } StandardExit(false, false); if (ExitImmediately) { Actor.Posture.CancelPosture(Actor); } } } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(Actor, Target, e); } return(false); }
public override bool Run() { try { if (!StartSync()) { return(false); } // Custom mReactToSocialBroadcaster = new ReactionBroadcaster(Actor, Conversation.ReactToSocialParams, SocialComponentEx.ReactToJealousEventHigh); //SocialComponent.SendCheatingEvents(Actor, Target, !Rejected); StandardEntry(false); BeginCommodityUpdates(); HeartShapedBed container = Actor.Posture.Container as HeartShapedBed; bool isVibrating = container.IsVibrating; if (IsMaster) { ReturnInstance.EnsureMaster(); StartSocial("Vibrate Bed"); InitiateSocialUI(Actor, Target); container.SetVibration(Actor, !isVibrating); if (isVibrating) { ReturnInstance.mCurrentStateMachine.RequestState(null, "Vibrate Stop"); } else { ReturnInstance.mCurrentStateMachine.RequestState(null, "Vibrate"); } FinishSocial("Vibrate Bed", true); } else { DoLoop(~(ExitReason.Replan | ExitReason.MidRoutePushRequested | ExitReason.ObjectStateChanged | ExitReason.PlayIdle | ExitReason.MaxSkillPointsReached)); } DoResume(); FinishLinkedInteraction(IsMaster); EndCommodityUpdates(!isVibrating); StandardExit(false, false); WaitForSyncComplete(); if (isVibrating) { if (RandomUtil.RandomChance(kSimGetsNegativeBuff)) { Actor.BuffManager.AddElement(BuffNames.Nauseous, Origin.FromVibratingBed); } else if (RandomUtil.RandomChance(kSimGetsPositiveBuff)) { if (Actor.TraitManager.HasAnyElement(new TraitNames[] { TraitNames.Childish, TraitNames.Insane })) { Actor.BuffManager.AddElement(BuffNames.Amused, Origin.FromVibratingBed); } else if (Actor.TraitManager.HasAnyElement(new TraitNames[] { TraitNames.PartyAnimal, TraitNames.Flirty }) || Actor.BuffManager.HasElement(BuffNames.Blizzard)) { Actor.BuffManager.AddElement(BuffNames.Excited, Origin.FromVibratingBed); } } } return(true); } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(Actor, Target, e); return(false); } }