Crystal has a Flag attribute for enums (Flag enums):
type
EGlassRNState = enum
EGlassRNState_Initial,
EGlassRNState_Weakened,
EGlassRNState_Shattering,
EGlassRNState_Shattered,
EGlassRNState_ActiveFrags
proc hasGlassShattered(mState: set[EGlassRNState]): bool =
EGlassRNState_Shattered in mState
proc hasActiveFragments(mState: set[EGlassRNState]): bool =
EGlassRNState_ActiveFrags in mState
assert hasActiveFragments({EGlassRNState_Shattered, EGlassRNState_ActiveFrags})