/* // Raptor Fence Interaction // */ machine RaptorFence { default state FenceStart { action SetRandomTimerBetween(2, 100.0, 100.0) action SetAutoMovementBlend(true) action ClearTarget() action SetSpeedModifierWalk(1.0) action SetRunMode(false) action SetNumPassedParam(1) ;//action SetPassedParam(0, -2.0) action SetPassedParam(0, -8.5) transition AcquireFence(60, false) { action StopLook() ;//action SetAesPosInterp(false) goto DetermineSide } transition { goto FenceExit } } state DetermineSide { action LockMachine(false) transition DetermineFenceSide(10.0) { action SetSpeedModifier(1.0) action SetRunMode(true) goto SeekFenceSide } transition { action SetRandomTimerBetween(3, 4.0, 5.0) goto SeekFence } } state SeekFenceSide { transition HasArrived() { action SetRandomTimerBetween(3, 4.0, 5.0) goto SeekFence } } ;//--------------------------------- state SeekFence { transition CanLandOnOtherFenceSide(10.0) == false { action SetStandStill() goto FenceExit } transition SeekFenceOffset(0, -0.1) { action SetSpeedModifier(1.0) action SetRunMode(true) goto SeekFenceLoop } transition IsTimerUp(3) { goto StressDecrWander } transition IsTimerUp(2) { goto StressDecrLoop } } state SeekFenceLoop { /* transition InTargetProximityRadius(2.2, true) { action SetStandStill() action SetSpeedDirect(0.0) goto FaceFence } */ transition HasArrived() { action FaceFence() goto FaceFence } } state FaceFence { transition HasArrived() { action SetPassedParam(0, -8.5) goto SeekCloser } } state SeekCloser { ;// action SetFenceExclusion(false) action SetPassedParam(0, -8.5) transition { action SetRandomTimerBetween(3, 8.0, 10.0) goto SeekCloserInit } } state SeekCloserInit { transition SeekFenceOffset(0, 0.0) { goto SeekCloserLoop } transition IsTimerUp(3) { goto FenceStart } } state SeekCloserLoop { transition InTargetProximityRadius(8.5, true) { action SetStandStill() action SetSpeedDirect(0.0) action FaceFence() goto JumpFaceFence } transition HasArrived() { action FaceFence() goto JumpFaceFence } } state JumpFaceFence { transition HasArrived() { goto MinDistCheck } } state MinDistCheck { transition InTargetProximityRadius(8.2, false) { action SetSpeedModifierWalk(1.0) action SetWalkBackMode(true) action StepBack(4.0) action SetRandomTimerBetween(3, 4.0, 5.0) goto MinDistanceStep } transition { goto JumpFenceStart } } state MinDistanceStep { transition InTargetProximityRadius(8.4, false) == false { action SetWalkBackMode(false) action SetLockFacing(false) goto JumpFenceStart } transition IsTimerUp(3) { action SetWalkBackMode(false) action SetLockFacing(false) goto JumpFenceStart } } state JumpFenceStart { ;//action FenceLeapSnap(8.0) action FenceLeapInterp(true, 7.5) action LockMachine(true) action SetStandStill() action SetSpeedDirect(0.0) action StopAllUserAnimations() action SetAutoMovementBlend(false) action PlayAnim("climb", "01", false) action AlertFenceJumpBreakout() transition { goto ClimbStartWait } } state ClimbStartWait { transition IsAnimPlaying("climb", "01", false) == false { ;// action SetAvoidanceWorld(false) direct goto JumpChoose } } state JumpChoose { transition IsFenceElectrified() { direct goto ShockFall } transition IsTargetMedFence() { action PlayAnim("climb", "jmp_med", false, 0.0) action SetRandomTimerBetween(1, 3.8, 3.8) goto JumpWait } transition { action PlayAnim("climb", "jmp_low", false, 0.0) action SetRandomTimerBetween(1, 3.0, 3.0) goto JumpWait } } state ShockFall { action FenceLeapInterp(false, 7.5) action SetTransfromFromLocator("D", false) action StopAllUserAnimations(true) action PlayAnimInstant("hit", "lt", true) action SetStandStill() ;//action UpdateVariable("health", -30.0) action ShockDamage() ; // This failed jump counts as an attack for the enclosure analyser action SendEnclosureEvent("attack_structure") action FenceShockFall(true) action DamageFence(0.0, true, true) transition IsDead() { action SetLockLastPose("hit", "lt", true) action LockDeadPose() action SetKillCause("electric") goto ShockDeadWait } transition { goto ShockWait } } state ShockWait { transition HasSteerEffect() { goto ShockWait } transition IsAnimPlaying("hit", "lt") == false { action FenceShockFall(false) action PlayAnimInstant("getup", "lt", true) goto ShockGetupWait } } state ShockDeadWait { transition HasSteerEffect() { goto ShockDeadWait } transition IsAnimPlaying("hit", "lt") == false { action FenceShockFall(false) goto FenceExitEnd } } state ShockGetupWait { transition IsAnimPlaying("getup", "lt") == false { action SetAutoMovementBlend(true) action SetSpeedModifierWalk(1.0) action SetRunMode(false) goto StressDecr } } state JumpWait { transition IsTimerUp(1) { action SetRandomTimerBetween(1, 10000.0, 10000.0) action LeaveFence(8.0) goto JumpWait } transition IsFenceShot() { direct goto ShockFall } transition IsAnimStatePlaying("climb") == false { action FenceLeapInterp(false, 7.5) action SetTransfromFromLocator("D", true) action PlayAnimInstant("idle", "brth_lp", false) action SetStandStill() action SetAutoMovementBlend(true) ;//action SetFenceExclusion(true) action SetRandomTimerBetween(1, 2.0, 2.0) action SetPassedParam(0, -8.0) ;//action SetSpeedModifier(1.0) ;//action SetRunMode(true) action SetSpeedModifierWalk(1.0) action SetRunMode(false) goto MoveAway } } state MoveAway { /* transition LeaveFence(8.0) { action SeekSetPosition() action SetRandomTimerBetween(1, 15.0, 15.0) goto MoveAwayLoop } */ transition SeekFenceOffset(0, -1.0) { ;// action SetAvoidanceWorld(true) action SetRandomTimerBetween(1, 15.0, 15.0) goto MoveAwayLoop } action SetStandStill(); transition IsTimerUp(1) { ;// action SetAvoidanceWorld(true) action SetRandomTimerBetween(1, 4.0, 4.0) goto RandomMove } } state RandomMove { transition SeekTargetOffset(8.5, 0, false, true, true) { action SetRandomTimerBetween(1, 15.0, 15.0) goto MoveAwayLoop } transition IsTimerUp(1) { goto StressDecr } } state MoveAwayLoop { transition IsTimerUp(1) { action SetStandStill() goto StressDecr } transition InTargetProximityRadius(8.0, false) == false { action SetStandStill() goto StressDecr } transition HasArrived() { goto StressDecr } } state StressDecr { action LockMachine(false) ;// action SetAvoidanceWorld(true) ;// action SetFenceExclusion(true) transition { goto StressDecrLoop } } state StressDecrLoop { action SetRandomTimerBetween(1, 3.0, 5.0) transition { goto StressTimeDecr } } state StressTimeDecr { action UpdateDeltaVariable("Stress", -0.2) transition IsTimerUp(1) { goto StressDecrWander } } state StressDecrWander { transition SetWander() { action SetRandomTimerBetween(1, 10.0, 15.0) goto StressDecrWanderWait } } state StressDecrWanderWait { transition HasArrived() { goto FenceExit } transition IsTimerUp(1) { goto FenceExit } } ;//----------------------------------------------------------------- exitstart state FenceExit { transition IsDeadPoseLocked() == false { action StopLook() action SetAutoMovementBlend(true) goto FenceExitEnd } transition { goto FenceExitEnd } } exitend state FenceExitEnd { ;// action SetFenceExclusion(true) action ClearTarget() action SetLockFacing(false) action SetWalkBackMode(false) action LockMachine(false) ;//action SetAesPosInterp(true) } }