public static void React(Sim sim, Sim target, ReactionTypes reaction) { Reactor reactor = new Reactor(); reactor.Sim = sim; reactor.Target = target; reactor.Reaction = reaction; AlarmManager.Global.AddAlarm(RandomUtil.GetFloat(4f), TimeUnit.Seconds, new AlarmTimerCallback(reactor.Callback), "Reactor Callback", AlarmType.NeverPersisted, sim); }
public override bool Run() { List <ObjectListPickerInfo> Entries = ListExpressions(); string text = (string)ObjectListPickerDialog.Show("Expression", Entries); if (text != null && text != "") { ReactionTypes reaction = (ReactionTypes)Enum.Parse(typeof(ReactionTypes), text); Array reactionTypes = Enum.GetValues(typeof(ReactionTypes)); CustomOverlayData data = null; CmoPoseBox box = PoseManager.FindPoseBox(); string poseData = PoseManager.GetCurrentPose(Actor); if (poseData == null) { return(false); } Actor.LookAtManager.DisableLookAts(); PoseManager.SetCurrentPose(Actor, poseData); box.PlaySoloAnimation(Actor.SimDescription.IsHuman, Actor, poseData, true, ProductVersion.BaseGame); Actor.ResetAllAnimation(); Actor.OverlayComponent.UpdateInteractionFreeParts(AwarenessLevel.OverlayFace);//OverlayUpperbody); StateMachineClient stateMachineClient = StateMachineClient.Acquire(Actor.ObjectId, "facial_idle", AnimationPriority.kAPDefault, true); data = (CustomOverlayData)OverlayComponent.GetOverlayData(reaction, Actor); stateMachineClient.UseActorBridgeOrigins = false; stateMachineClient.SetActor("x", Actor); stateMachineClient.RemoveEventHandler(new SacsEventHandler(Actor.OverlayComponent.InteractionPartLevelCallback)); stateMachineClient.RemoveEventHandler(new SacsEventHandler(Actor.OverlayComponent.ClearInteractionPartLevelCallback)); stateMachineClient.EnterState("x", "Enter"); stateMachineClient.SetProductVersion(data.ProductVersion); stateMachineClient.RequestState("x", data.AnimClipName); //Actor.OverlayComponent.UpdateInteractionFreeParts(AwarenessLevel.OverlayFace); box.PlaySoloAnimation(Actor.SimDescription.IsHuman, Actor, poseData, true, ProductVersion.BaseGame); Actor.ResetAllAnimation(); Actor.WaitForExitReason(3.40282347E+38f, ExitReason.UserCanceled); Actor.LookAtManager.EnableLookAts(); return(true); } return(false); }
public void LoopFunc(StateMachineClient smc, LoopData ld) { if (ld.mLifeTime > kWatchPlantMaxTime) { Actor.AddExitReason(ExitReason.Finished); return; } ThoughtBalloonManager.BalloonData balloonData = new ThoughtBalloonManager.BalloonData(Target.GetThumbnailKey()); balloonData.BalloonType = ThoughtBalloonTypes.kThoughtBalloon; balloonData.mPriority = ThoughtBalloonPriority.Low; balloonData.mFlags = ThoughtBalloonFlags.ShowIfSleeping; Actor.ThoughtBalloonManager.ShowBalloon(balloonData); AcquireStateMachine("catdoginvestigate"); EnterStateMachine("catdoginvestigate", "Enter", "x"); AnimateSim("Investigate"); AnimateSim("Exit"); ReactionTypes reactionType = kReactionList[RandomUtil.GetInt(kReactionList.Length - 1)]; Actor.PlayReaction(reactionType, ReactionSpeed.ImmediateWithoutOverlay); }
public override bool Run() { try { InsectData data; Route r = Actor.RoutingComponent.CreateRoute(); r.PlanToPointRadialRange(Target.Position, 0f, InsectJig.sMaxCatchRange, RouteDistancePreference.PreferNearestToRouteDestination, RouteOrientationPreference.TowardsObject, Target.LotCurrent.LotId, null); try { if (!Actor.RoutingComponent.DoRoute(r) || Target.InUse) { return(false); } } catch (ResetException) { throw; } catch (Exception e) { Common.DebugException(Actor, Target, e); return(false); } mDummyIkJig = GlobalFunctions.CreateObjectOutOfWorld("SocialJigOnePerson") as SocialJigOnePerson; mDummyIkJig.SetForward(Actor.ForwardVector); mDummyIkJig.SetPosition(Actor.Position); mDummyIkJig.SetHiddenFlags(~HiddenFlags.Nothing); mDummyIkJig.AddToWorld(); StandardEntry(); BeginCommodityUpdates(); bool succeeded = false; try { if (InsectData.sData.TryGetValue(Target.InsectType, out data)) { mTempInsect = Sims3.Gameplay.Objects.Insect.Insect.Create(Target.InsectType); string jazzInsectParameterName = data.GetJazzInsectParameterName(); string jazzEnterStateName = data.GetJazzEnterStateName(); float catchChance = data.CatchChance; InsectRarity rarity = data.Rarity; data = null; mCurrentStateMachine = InsectData.AcquireInitAndEnterStateMachine(Actor, mTempInsect, mDummyIkJig, jazzInsectParameterName, jazzEnterStateName); if (mCurrentStateMachine != null) { Collecting collecting = Actor.SkillManager.AddElement(SkillNames.Collecting) as Collecting; if (collecting.IsBeetleCollector()) { succeeded = true; } else { succeeded = RandomUtil.RandomChance01(catchChance); } AnimateSim(succeeded ? "ExitSuccess" : "ExitFailure"); if (succeeded) { InsectTerrarium.Create(Target, Actor); } else { ReactionTypes reactionType = RandomUtil.CoinFlip() ? ReactionTypes.Annoyed : (RandomUtil.CoinFlip() ? ReactionTypes.Shrug : ReactionTypes.Angry); Actor.PlayReaction(reactionType, ReactionSpeed.NowOrLater); } } } } finally { EndCommodityUpdates(succeeded); } StandardExit(); DestroyObject(Target); return(succeeded); } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(Actor, Target, e); return(false); } }
private void CashInReaction() { ReactionTypes reactionType = RandomUtil.CoinFlip() ? ReactionTypes.Cheer : ReactionTypes.Excited; base.Actor.PlayReaction(reactionType, ReactionSpeed.Immediate); }
public override bool GroupTalkPlayResponse(ReactionTypes response) { r_internal(_Actor); return(base.GroupTalkPlayResponse(response)); }