/* Generic Attack Vehicle Machine // // This machine should be used through the normal call mechanism // */ machine AttackVehicle { state AttackVehicleStart { transition HasTarget() == false { goto ExitStart } transition { action SetRandomTimerBetween(1, 10.0, 30.0) goto ChaseVehicle } } state ChaseVehicle { transition SeekTarget(true, false) { action SetSpeedModifier(1.2) goto SeekLoop } transition { action ClearTarget() goto ExitStart } } state SeekLoop { transition HasTarget() == false { goto ExitStart } transition InTargetProximityRadius(0.65, false) { direct goto SeekFacingCheck } transition HasArrived() { direct goto SeekFacingCheckArrived } transition IsTimerUp(1) { goto HungerRoar } } state SeekFacingCheck { transition IsFacingTargetUnit() { direct goto Attack } transition { action FaceTarget() goto SeekFacingAlignWait } } state SeekFacingAlignWait { transition HasTarget() == false { goto ExitStart } transition HasArrived() { direct goto ChaseVehicle } transition InTargetProximityRadius(0.66, false) == false { action SeekTarget(true, false) goto SeekLoop } } state SeekFacingCheckArrived { transition { action SeekTarget(true, false) goto SeekLoop } } state HungerRoar { action PlayAnim("call", "02_lp", false) action SendEnclosureEvent("Call_angry") transition { action SetRandomTimerBetween(1, 10.0, 30.0) goto SeekLoop } } state Attack { action StopLook() action SetRandomTimerBetween(3, 0.7, 0.7) action PlayAnim("snap", "lo_lp", false) transition { goto HitWait } } state HitWait { transition IsTimerUp(3) { direct goto HitCheck } } state HitCheck { transition InTargetProximityRadius(0.8, false) { action HurtTargetUnit(false, 1.0) goto SnapWait } transition { goto SnapWait } } state SnapWait { transition IsAnimPlaying("snap", "lo_lp", false) == false { direct goto StopCheck } } state StopCheck { transition IsTargetDead() { goto ExitStart } transition { goto ChaseVehicle } } ;//------------------------ Exit States Begin ---------------------- exitstart state ExitStart { transition { goto ExitEnd } } exitend state ExitEnd { } ;//------------------------ Exit States End ---------------------- }