StaminaEvents.c
class StaminaSoundEventBaseclass StaminaDownLightclass StaminaDownHeavyclass StaminaUpHeavyclass StaminaUpLightclass StaminaUpEndclass StaminaNormalDummyclass StaminaLowFilterBaseclass StaminaLowFilterUpperclass StaminaLowFilterMidclass StaminaLowFilterLower
class StaminaSoundEventBase extends PlayerSoundEventBase
{
const int MAX_VOLUME = 4;
void StaminaSoundEventBase()
{
m_Type = EPlayerSoundEventType.STAMINA;
m_HasPriorityOverTypes = EPlayerSoundEventType.STAMINA;
}
override bool HasPriorityOverCurrent(PlayerBase player, EPlayerSoundEventID other_state_id, EPlayerSoundEventType type_other)
{
return false;
}
override void OnPlay(PlayerBase player)
{
super.OnPlay(player);
MaskBase mask = MaskBase.Cast(player.GetInventory().FindAttachment(InventorySlots.GetSlotIdFromString("Mask")));
float rel_volume = 1;
if (mask)
{
if (mask.IsExternalFilterAttached() || mask.HasIntegratedFilter())
{
rel_volume = Math.Lerp(MAX_VOLUME,1,mask.GetFilterQuantity01());
}
}
if (m_SoundSetCallback)
m_SoundSetCallback.SetVolumeRelative(rel_volume);
#ifdef DIAG_DEVELOPER
if (!DiagMenu.GetBool(DiagMenuIDs.MISC_BREATH_VAPOR_LVL))//disabled in debug, do not spawn particles
return;
#endif
if ( player.CanSpawnBreathVaporEffect() )
player.SpawnBreathVaporEffect();
//!!! beware of the ifdef above , most likely you want to put your code above it, otherwise it might not get executed !!!
}
}
class StaminaDownLight extends StaminaSoundEventBase
{
void StaminaDownLight()
{
m_ID = EPlayerSoundEventID.STAMINA_DOWN_LIGHT;
m_SoundVoiceAnimEventClassID = 1;
}
}
class StaminaDownHeavy extends StaminaSoundEventBase
{
void StaminaDownHeavy()
{
m_ID = EPlayerSoundEventID.STAMINA_DOWN_HEAVY;
m_SoundVoiceAnimEventClassID = 2;
}
}
class StaminaUpHeavy extends StaminaSoundEventBase
{
void StaminaUpHeavy()
{
m_ID = EPlayerSoundEventID.STAMINA_UP_HEAVY;
m_SoundVoiceAnimEventClassID = 3;
}
}
class StaminaUpLight extends StaminaSoundEventBase
{
void StaminaUpLight()
{
m_ID = EPlayerSoundEventID.STAMINA_UP_LIGHT;
m_SoundVoiceAnimEventClassID = 4;
}
}
class StaminaUpEnd extends StaminaSoundEventBase
{
void StaminaUpEnd()
{
m_ID = EPlayerSoundEventID.STAMINA_UP_END;
m_SoundVoiceAnimEventClassID = 26;
}
override bool HasPriorityOverCurrent(PlayerBase player, EPlayerSoundEventID other_state_id, EPlayerSoundEventType type_other)
{
return false;
}
}
class StaminaNormalDummy extends StaminaSoundEventBase
{
void StaminaNormalDummy()
{
m_HasPriorityOverTypes = 0;
m_Type = EPlayerSoundEventType.DUMMY;
m_ID = EPlayerSoundEventID.STAMINA_NORMAL_DUMMY;
m_IsDummyType = true;
m_DummySoundLength = 3000;//in ms
}
}
// Low filter
class StaminaLowFilterBase extends StaminaSoundEventBase
{
void StaminaLowFilterBase()
{
m_ProcessPlaybackEvent = true;
}
}
class StaminaLowFilterUpper extends StaminaLowFilterBase
{
void StaminaLowFilterUpper()
{
m_ID = EPlayerSoundEventID.STAMINA_LOW_FILTER_UPPER;
m_SoundVoiceAnimEventClassID = 33;
}
}
class StaminaLowFilterMid extends StaminaLowFilterBase
{
void StaminaLowFilterMid()
{
m_ID = EPlayerSoundEventID.STAMINA_LOW_FILTER_MID;
m_SoundVoiceAnimEventClassID = 32;
}
}
class StaminaLowFilterLower extends StaminaLowFilterBase
{
void StaminaLowFilterLower()
{
m_ID = EPlayerSoundEventID.STAMINA_LOW_FILTER_LOWER;
m_SoundVoiceAnimEventClassID = 31;
}
}