/* // Raptor Stress // */ machine RaptorStress { state StressInit { action SetRageIcon(true) action SetRampageTime(300.0, true) action LockMachine(true) action SetRandomTimerBetween(4, 15.0, 17.0) transition IsSteerStuck() { action SetStuckFlag(true) goto StressStart } transition { goto StressStart } } state StressStart { action SendEnclosureEvent("stress") action SetAutoMovementBlend(true) action ClearTarget() action SetFlockImpulse(false) transition { goto SetWander } } state SetWander { action StartLook("LookProximity", 0.5) transition SetWander() { action SetSpeedModifier(1.0) action SetRunMode(true) goto WanderAcquireTarget } } state WanderAcquireTarget { transition GetRampageTime() <= 0.0 { goto StressSleep } transition IsDead() { goto StressExit } transition HasArrived() { goto SetWander } transition AcquireHuman() { goto WanderTargetCheck } action AcquireClosestAliveUnit() transition HasTarget() { goto WanderTargetCheck } /* transition GetVariable("water") < 0.4 { direct goto AcquireWater } */ transition IsTimerUp(4) == false { goto WanderAcquireTarget } transition AcquireBuilding() { action SetRandomTimerBetween(4, 40.0, 45.0) call RaptorBuilding SetWander } transition AcquireFence(50, false) { action SendEnclosureEvent("attack_Structure") goto FaceFence } } state AcquireWater { transition AcquireWaterPoint(false) { goto SeekWater } transition AcquireFence(15, false) { action SendEnclosureEvent("attack_Structure") goto FaceFence } transition { goto WanderAcquireTarget } } /*-------------------------------*/ state TargetCheck { transition IsTargetDead() { goto SetWander } transition IsTargetHuman() { call RaptorVistorAttack SetWander } transition IsTargetSmall() { call RaptorAttack SetWander } transition CanLatchTarget() { call RaptorHunt SetWander } transition { goto SetWander } } state WanderTargetCheck { transition GetRampageTime() <= 0.0 { goto StressSleep } transition IsDead() { goto StressExit } transition IsTargetDead() { goto WanderAcquireTarget } transition IsTargetHuman() { call RaptorVistorAttack SetWander } transition IsTargetSmall() { call RaptorAttack SetWander } transition CanLatchTarget() { call RaptorHunt SetWander } transition { goto WanderAcquireTarget } } /*-------------------------------*/ state FaceFence { transition { action SetRandomTimerBetween(4, 30.0, 35.0) call RaptorFence SetWander } action StopLook() action FaceTarget() transition { action SetRandomTimerBetween(2, 8.0, 10.0) goto FaceTargetWait } } state FaceTargetWait { transition HasArrived() { action SetStandStill() goto MinDistanceCheck } transition IsTimerUp(2) { action SetStandStill() goto MinDistanceCheck } } state MinDistanceCheck { transition InTargetProximityRadius(9.0, true) { action SetSpeedModifierWalk(1.0) action SetWalkBackMode(true) action StepBackFromTarget(20.0) action SetRandomTimerBetween(3, 4.0, 5.0) goto MinDistanceStep } transition { goto SeekFence } } state MinDistanceStep { transition InTargetProximityRadius(11.0, false) == false { action SetWalkBackMode(false) action SetLockFacing(false) goto SeekFence } transition IsTimerUp(3) { action SetWalkBackMode(false) action SetLockFacing(false) goto SeekFence } } state SeekFence { action SetSpeedModifierWalk(1.0) action SetRunMode(false) transition { goto SeekStart } } state SeekStart { action RamFence(true, 20.0) action SetSpeedModifierWalk(1.0) action SetRunMode(false) transition SeekTarget(true, false) { action StopLook() goto RamWait } } /*-------------------------------*/ state RamWait { transition InTargetProximityRadius(2.0, true) { direct goto JumpFenceStart } transition HasArrived() { direct goto JumpFenceStart } } state JumpFenceStart { action StopAllUserAnimations() action SetAutoMovementBlend(false) action PlayAnim("leap", "st", false) action SetAutoLinkAnimOff("leap", "st", true) ;//action LeapFence(5.0) transition { goto JumpWait } } state JumpWait { transition HasSteerEffect() == false { action SetAutoMovementBlend(true) goto SetWander } } /*-------------------------------*/ state SeekWater { transition SeekWaterPoint() { goto SeekWaterLoop } transition { goto SetWander } } state SeekWaterLoop { transition GetRampageTime() <= 0.0 { goto StressSleep } transition IsDead() { goto StressExit } transition IsInWaterArea() { action FaceWaterPoint() goto FaceWater } transition HasArrived() { action FaceWaterPoint() goto FaceWater } transition AcquireFence(8, false) { goto FaceFence } transition AcquireWaterPoint(false) { goto SeekWaterClose } } state SeekWaterClose { transition SeekWaterPoint() { goto SeekWaterCloseLoop } transition { goto SetWander } } state SeekWaterCloseLoop { transition GetRampageTime() <= 0.0 { goto StressSleep } transition IsDead() { goto StressExit } transition IsInWaterArea() { action FaceWaterPoint() goto FaceWater } transition HasArrived() { action FaceWaterPoint() goto FaceWater } transition AcquireFence(8, false) { goto FaceFence } } state FaceWater { transition GetRampageTime() <= 0.0 { goto StressSleep } transition IsDead() { goto StressExit } transition HasArrived() { goto Drink } } state Drink { action SendEnclosureEvent("drinking") action StopAllRandomAnimations() action SetStandStill() action StopLook() action PlayAnim("drink", "st", false) transition { goto DrinkWait } } state DrinkWait { transition IsAnimPlaying("drink", "lp", false) == true { action SetRandomTimerBetween(1, 3.0, 5.0) goto DrinkLoop } } state DrinkLoop { action UpdateDeltaVariable("Water", 0.02) action UpdateDeltaVariable("Stress", -0.05) transition IsTimerUp(1) { goto DrinkBreak } } state DrinkBreak { action StopAnimState("drink") transition { goto DrinkBreakStart } } state DrinkBreakStart { action StartLook("LookProximity", 0.5) action AddRandomAnimation("tail", "flck_lp", 3.0, 5.0) transition IsIdleLocked() == false { action SetRandomTimerBetween(1, 4.0, 6.0) goto DrinkBreakLoop } } state DrinkBreakLoop { transition GetRampageTime() <= 0.0 { goto StressSleep } transition IsDead() { goto StressExit } transition GetVariable("water") > 0.7 { goto SetWander } transition IsTimerUp(1) { goto Drink } } ;//----------------------------------------------------------------- state StressSleep { action StopAllRandomAnimations() action SetStandStill() action StopLook() action SetRandomTimerBetween(1, 3.0, 4.0) action SetRandomTimerBetween(3, 5.0, 10.0) action LockMachine(true) transition { goto StressSleepInit } } state StressSleepInit { transition IsNextDrive("Sedated") { action SetRampageTime(0.0, false) goto StressExit } transition IsTimerUp(1) { action SetRampageTime(0.0, false) action InitStressHealthDecr(0.5) action SetAutoMovementBlend(false) action PlayAnim("fall", "st", false) ;//action SetRandomTimerBetween(1, 280.0, 300.0) action SetRampageSleepTimer(1) action SetRandomTimerBetween(2, 3.0, 3.0) goto FallLoopWait } } state FallLoopWait { transition IsAnimPlaying("fall", "st") == false { goto SleepWait } transition IsTimerUp(2) { goto SleepWait } } state SleepWait { ;//transition UpdateRampageHealth() == false action UpdateRampageHealth(false) transition IsNextDrive("Dead") { direct goto SleepDead } transition IsNextDrive("Sedated") { action SetRampageTime(0.0, false) goto StressExit } transition IsTimerUp(1) { action StopAnimState("fall") goto SleepEnd } transition IsTimerUp(3) { action PlayDistressedSound(); action SetRandomTimerBetween(3, 20.0, 35.0) goto SleepWait } } state SleepDead { transition IsAnimPlaying("fall", "brth_lp", false) { action SetAutoLinkAnimOff("fall", "brth_lp", true) action StopAnimState("fall") action SetLockLastPose("fall", "brth_lp", true) action LockDeadPose() goto StressExitEnd } transition IsAnimPlaying("fall", "st", false) { action SetAutoLinkAnimOff("fall", "st", true) action StopAnimState("fall") action SetLockLastPose("fall", "st", true) action LockDeadPose() goto StressExitEnd } transition IsAnimPlaying("fall", "lp", false) { action SetAutoLinkAnimOff("fall", "lp", true) action StopAnimState("fall") action SetLockLastPose("fall", "lp", true) action LockDeadPose() goto StressExitEnd } transition { ;// hmmmm... action StopAnimState("fall") goto SleepEnd } } state SleepEnd { transition IsAnimStatePlaying("fall", false) == false { action SetAutoMovementBlend(true) action LockMachine(false) goto StressExit } } ;//----------------------------------------------------------------- exitstart state StressExit { action StopAnimState("drink") action StopAnimState("fall") transition { goto StressEndWait } } state StressEndWait { transition IsAnimStatePlaying("drink", true) == true { goto StressEndWait } transition IsAnimStatePlaying("fall", false) == false { action SetRandomTimerBetween(1, 20.0, 30.0) goto StressEndIdleWait } } state StressEndIdleWait { transition IsIdleLocked() == false { direct goto StressExitEndInit } transition IsTimerUp(1) { direct goto StressExitEndInit } } state StressExitEndInit { transition IsDeadPoseLocked() == false { action StopLook() action SetAutoMovementBlend(true) goto StressExitEnd } transition IsDeadPoseLocked() { goto StressExitEnd } } exitend state StressExitEnd { action SetLockFacing(false) action SetWalkBackMode(false) action SetRageIcon(false) action SetFlockImpulse(true) action LockMachine(false) action SetStuckFlag(false) } }