/* Generic Herbivore Sick Behaviour // */ machine HerbSick { default state SickStart { action StartLook("LookProximity", 0.25) action SetAutoMovementBlend(true) action SetSick(true) action SetSpeedModifierWalk(1.0) action SetStandStill() transition { goto SickChoose } } state SickChoose { action SetRandomTimerBetween(1, 4.0, 7.0) action SetRand(0, 3) transition GetRand() == 1 { action SetAutoMovementBlend(true) goto Wander } transition GetRand() == 2 { goto PlaySickAnim } transition { action SetAutoMovementBlend(true) action SetStandStill() goto Idle } } state PlaySickAnim { transition HasTickInfestation() { goto TickInfestationStart } transition HasBumbleFoot() == false { goto Sneeze } transition { action SetAutoMovementBlend(true) goto Wander } } state Wander { transition SetWander() == true { goto WanderWait } transition IsTimerUp(1) { goto SickChoose } } state WanderWait { action UpdateDeltaVariable("health", -0.01) transition HasArrived() { goto Wander } transition IsTimerUp(1) { goto SickChoose } } state TickInfestationStart { transition IsAnimLoaded("spcl", "sctch_lp") { action SetSpeedDirect(0.0) action SetStandStill() action SetAutoMovementBlend(false) action PlayAnim("spcl", "sctch_lp", false) ;//action SetRandomTimerBetween(1, 1.5, 4.0) ;//action StopAllRandomAnimations() goto TickInfestation } transition { action SetAutoMovementBlend(true) goto SickChoose } } state TickInfestation { transition { direct goto TickInfestationEnd } /* transition IsTimerUp(1) { action StopLook() action StopAnimState("spcl") goto TickInfestationEnd } */ } state TickInfestationEnd { transition IsAnimStatePlaying("spcl", false) == false { ;//action StopAllRandomAnimations() action SetAutoMovementBlend(true) goto SickChoose } } state Sneeze { action SetStandStill() transition IsAnimLoaded("sick", "snz_lp") { action PlayAnim("sick", "snz_lp", false) goto SickSneezeWait } transition IsAnimLoaded("idle", "snz_lp") { action SetAutoMovementBlend(false) action PlayAnim("idle", "snz_lp", false) goto IdleSneezeWait } transition { goto SickChoose } } state SickSneezeWait { transition IsAnimPlaying("sick", "snz_lp", false) == false { goto SickChoose } } state IdleSneezeWait { transition IsAnimPlaying("idle", "snz_lp", false) == false { action SetAutoMovementBlend(true) goto SickChoose } } state Idle { action UpdateDeltaVariable("health", -0.01) transition IsTimerUp(1) { goto SickChoose } } ;//------------------------ Exit States Begin ---------------------- exitstart state CleanUp { transition { goto CleanUpEnd } } exitend state CleanUpEnd { action SetSpeedModifier(1.0) action SetAutoMovementBlend(true) action StopAnim("sick", "snz_lp") action StopAnim("spcl", "sctch_lp") action StopAnim("idle", "snz_lp") action StopLook() } ;//------------------------ Exit States End ---------------------- }