protected Node ST_Take(SmartCharacter user, StateName holdingState, Node afterTake) { return new Sequence( user.Node_Require(StateName.RoleActor, StateName.IsStanding, ~StateName.HoldingBall, ~StateName.HoldingWallet, ~StateName.IsIncapacitated), this.Node_Require(StateName.RoleTable, holdingState), user.Node_GoTo(this.StandPoint.position), new SequenceParallel( user.Node_HeadLook(this.PropPickup.transform.position), user.Node_OrientTowards(this.PropPickup.transform.position)), new DecoratorCatch( () => { user.Character.StopInteraction(FullBodyBipedEffector.RightHand); user.Character.HeadLookStop(); }, new Sequence( user.Node_StartInteraction(FullBodyBipedEffector.RightHand, this.PropPickup), user.Node_WaitForTrigger(FullBodyBipedEffector.RightHand), new LeafInvoke(() => user.HoldPropRightHand.Attach(this.PropHolder.Release())), user.Node_HeadLookStop())), this.Node_Set(~holdingState), afterTake, user.Node_Set(holdingState), user.Node_StartInteraction(FullBodyBipedEffector.RightHand, user.InteractionHoldRight), user.Node_WaitForTrigger(FullBodyBipedEffector.RightHand), new LeafWait(300)); }
/// <summary> /// ABAS /// </summary> /// <param name="userA"></param> /// <param name="userB"></param> /// <param name="myAnims"></param> /// <param name="userAnims"></param> /// <returns></returns> public Node ST_DistractAndSteal( SmartCharacter userA, SmartCharacter userB) { Vector3 origPosition = userB.transform.position; return new Sequence( userA.Node_WaveTo(this), this.Node_OrientTowards(Val.V(() => userA.transform.position)), this.Node_GoToUpToRadius(Val.V(() => userA.transform.position), 1.2f), new SequenceParallel( userB.Node_HeadLook(Val.V(() => this.MarkerHead.position)), new SequenceParallel( userA.ST_JustTalk(this), new Sequence( userB.Node_OrientTowards(Val.V(() => this.transform.position)), new LeafWait(2000), this.Steal(userB), new LeafWait(1800), userB.Node_GoTo(Val.V(() => origPosition)), userB.Node_WaveTo(userA), userA.Node_GoToUpToRadius(Val.V(() => userB.transform.position), 1.2f), userB.ST_TalkHappily(userA)))) ); }
/// <summary> /// ABAS /// </summary> /// <param name="userA"></param> /// <param name="userB"></param> /// <param name="myAnims"></param> /// <param name="userAnims"></param> /// <returns></returns> public Node ST_ConverseThree( SmartCharacter userA, SmartCharacter userB) { return new Sequence( new SequenceParallel( Node_CallForAttention(userA), userA.Node_GoToUpToRadius(Val.V(() => this.transform.position), 1.2f), userB.Node_GoToUpToRadius(Val.V(() => this.transform.position), 1.2f)), userB.Node_HeadLook(Val.V(() => this.MarkerHead.position)), userB.Node_PlayHandGesture(Val<string>.V(() => "Dismiss"), Val<long>.V(() => 2000L)), new Sequence( ST_TalkHappily(userA)), new SequenceParallel( userA.Node_OrientTowards(Val.V(() => userB.transform.position)), userB.ST_TalkHappily(this), ST_TalkHappily(userA)) ); }
protected Node ST_ApproachConverse( SmartCharacter user, AnimationDescription[] myAnims, AnimationDescription[] userAnims) { return new Sequence( Node_GoToUpToRadius(Val.V(() => user.transform.position), 1.3f), Node_HeadLook(Val.V(() => user.MarkerHead.position)), user.Node_HeadLook(Val.V(() => this.MarkerHead.position)), user.Node_HeadLook(Val.V(() => this.MarkerHead.position)), ST_PlayConversationAnims(user, myAnims, userAnims), Node_HeadLookStop(), user.Node_HeadLookStop() ); }
protected Node ST_PlainConverse( SmartCharacter user, AnimationDescription[] myAnims, AnimationDescription[] userAnims) { return new Sequence( Node_HeadLook(Val.V(() => user.MarkerHead.position)), user.Node_HeadLook(Val.V(() => this.MarkerHead.position)), ST_PlayConversationAnims(user, myAnims, userAnims), Node_HeadLookStop(), user.Node_HeadLookStop() ); }