/* Galli Join Flock Callable Behaviour // */ machine GalliJoinFlock { default state Start { action SetAutoMovementBlend(true) transition { goto SetMoveMode } } state SetMoveMode { action StartLook("LookProximity", 0.5) action ClearTarget() transition { action SetSpeedModifierWalk(1.0) action SetRunMode(false) goto SetWander } } state SetWander { transition SetWander() { action SetRandomTimerBetween(1, 25.0, 30.0) goto SeekWait } transition AcquireFlockTarget(true) { direct goto CheckCanJoinTargetFlock } } state SeekWait { transition HasArrived() { goto SetWander } transition IsTimerUp(1) { goto SetWander } transition AcquireFlockTarget(true) { direct goto CheckCanJoinTargetFlock } } state CheckCanJoinTargetFlock { transition CanJoinTargetFlock() { action JoinTargetFlock() goto JoinRequest } transition { goto SeekWait } } state JoinRequest { action SetStandStill() action SetRandomTimerBetween(1, 2.0, 3.0) action PlayAnim("call", "02_lp", false) action SendEnclosureEvent("call_communicate") transition { goto Talk } } state Talk { transition IsTimerUp(1) { goto JoinFlock } } state JoinFlock { transition { goto JoinFlockEndBegin } /* transition CanJoinTargetFlock() { action JoinTargetFlock() goto JoinFlockEndBegin } transition { goto SetWander } */ } ;//////////////////////////////////////////////////////// exitstart state JoinFlockEndBegin { transition { goto JoinFlockEnd } } exitend state JoinFlockEnd { action StopLook() } }