mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
90 lines
3.1 KiB
C++
90 lines
3.1 KiB
C++
class ACE_Medical_StateMachine {
|
|
class Default {
|
|
onState = QUOTE(DFUNC(handleDefaultState));
|
|
onStateEntered = "";
|
|
onStateLeaving = "";
|
|
class Injury {
|
|
targetState = "Injured";
|
|
events[] = {'TakenInjury'};
|
|
};
|
|
class CriticalInjuryOrVitals {
|
|
targetState = "Unconscious";
|
|
events[] = {'InjuryCritical', 'CriticalVitals'};
|
|
};
|
|
class FatalInjuryOrVitals {
|
|
targetState = "Dead";
|
|
events[] = {'FatalVitals', 'InjuryFatal'};
|
|
};
|
|
};
|
|
class Injured {
|
|
onState = QUOTE(DFUNC(handleInjuredState));
|
|
onStateEntered = "";
|
|
onStateLeaving = "";
|
|
|
|
class FullHeal {
|
|
targetState = "Default";
|
|
events[] = {'FullHeal'};
|
|
};
|
|
class LastWoundTreated {
|
|
targetState = "Default";
|
|
events[] = {'LastWoundTreated'};
|
|
};
|
|
class CriticalInjuryOrVitals {
|
|
targetState = "Unconscious";
|
|
events[] = {'InjuryCritical', 'CriticalVitals'};
|
|
};
|
|
class FatalInjuryOrVitals {
|
|
targetState = "Dead";
|
|
events[] = {'FatalVitals', 'InjuryFatal'};
|
|
};
|
|
};
|
|
class Unconscious {
|
|
onState = QUOTE(DFUNC(handleUnconciousState));
|
|
onStateEntered = QUOTE(DFUNC(enteredUnconscious)); // set unconscious animation & state
|
|
onStateLeaving = QUOTE(DFUNC(leavingUnconscious)); // leave unconscious animation & state
|
|
class WakeUpFromKnockDown {
|
|
targetState = "Injured";
|
|
condition = QUOTE(_unit call FUNC(hasStableVitals));
|
|
events[] = {'MinUnconsciousTimer'};
|
|
};
|
|
class WakeUpStable {
|
|
targetState = "Injured";
|
|
condition = "unitUnconsciousTimer >= MinUnconsciousTimer";
|
|
events[] = {'VitalsWentStable'};
|
|
};
|
|
class FatalTransitions {
|
|
targetState = "Dead";
|
|
events[] = {'InjuryFatal', 'FatalVitals', 'UnconsciousTimerRanOut'};
|
|
};
|
|
};
|
|
class Dead {
|
|
onStateEntered = "(_this select 0) setDamage 1"; // killing a unit also exits the state machine for this unit
|
|
};
|
|
class Revive {
|
|
onState = QUOTE(DFUNC(handleReviveState));
|
|
onStateEntered = QUOTE(DFUNC(enteredRevive)); // set unconscious animation & state
|
|
onStateLeaving = QUOTE(DFUNC(leavingRevive)); // leave unconscious animation & state
|
|
class FullHeal {
|
|
targetState = "Default";
|
|
events[] = {'fullyHealed'};
|
|
onTransition = "";
|
|
};
|
|
class Revived {
|
|
targetState = "Injured";
|
|
events[] = {'Revived'};
|
|
onTransition = "";
|
|
};
|
|
class TimerRanOut {
|
|
targetState = "Dead";
|
|
condition = "timerValue >= maxReviveTime";
|
|
events[] = {'ReviveTimer'};
|
|
onTransition = "";
|
|
};
|
|
class FatalTransitions {
|
|
targetState = "Dead";
|
|
condition = "killOnFatalDamageInRevive && inReviveState >= 10";
|
|
events[] = {'FatalInjury'};
|
|
};
|
|
};
|
|
};
|