public static Node MoveZones( SmartObject mover, SmartObject fromZone, SmartObject toZone) { return new Sequence( mover.Node_Set(fromZone.Id, ~RelationName.IsInZone), mover.Node_Set(toZone.Id, RelationName.IsInZone)); }
public Node TakeWallet(SmartObject user) { SmartCharacter character = (SmartCharacter)user; return new Sequence( //user.Node_Require(StateName.RoleActor, StateName.IsStanding, ~StateName.HoldingBall, ~StateName.HoldingWallet, ~StateName.HoldingDrink, ~StateName.IsIncapacitated), // this.Node_Require(StateName.RoleActor, StateName.HoldingWallet, StateName.IsIncapacitated), character.Node_GoToUpToRadius(new Val<Vector3>(this.transform.position), 1.0f), character.Node_OrientTowards(new Val<Vector3>(this.transform.position)), new LeafInvoke(() => character.HoldPropRightHand.Attach(this.HoldPropPocket.Release())), this.Node_Set(~StateName.HoldingWallet), user.Node_Set(StateName.HoldingWallet), character.Node_StartInteraction(FullBodyBipedEffector.RightHand, character.InteractionStoreWallet), character.Node_WaitForTrigger(FullBodyBipedEffector.RightHand), new LeafInvoke(() => character.HoldPropPocket.Attach(character.HoldPropRightHand.Release())), character.Node_ResumeInteraction(FullBodyBipedEffector.RightHand)); }
protected Node TakeBall(SmartObject user) { // User Casting // TODO: Ths is going to get ugly if the cast fails... SmartCharacter character = (SmartCharacter)user; return new Sequence( user.Node_Require(StateName.RoleActor, StateName.IsStanding, ~StateName.HoldingBall, ~StateName.HoldingDrink, ~StateName.HoldingWallet, ~StateName.IsIncapacitated), this.Node_Require(StateName.RoleActor, StateName.HoldingBall, StateName.IsIncapacitated), character.Node_GoToUpToRadius(new Val<Vector3>(this.transform.position), 1.0f), character.Node_OrientTowards(new Val<Vector3>(this.transform.position)), new LeafInvoke(() => character.HoldPropRightHand.Attach(this.HoldPropRightHand.Release())), this.Node_Set(~StateName.HoldingBall), user.Node_Set(StateName.HoldingBall), new SequenceParallel( this.Node_StopInteraction(FullBodyBipedEffector.RightHand), character.Node_StartInteraction(FullBodyBipedEffector.RightHand, character.InteractionHoldRight))); }