faintstate.c
class FaintSymptom : SymptomBase
{
private float m_Intensity;
private float m_FadeoutDuration;
private float m_Interval;
private ref PPERequester_UnconEffects m_FaintEffect;
//this is just for the Symptom parameters set-up and is called even if the Symptom doesn't execute, don't put any gameplay code in here
override void OnInit()
{
m_Priority = 0;
m_SymptomType = SymptomTypes.SECONDARY;
m_ID = SymptomIDs.SYMPTOM_FAINT;
m_DestroyOnAnimFinish = false;
m_IsPersistent = false;
m_ServerUpdateInterval = 5.0;
m_SyncToClient = true;
if (!g_Game.IsDedicatedServer())
m_FaintEffect = PPERequester_UnconEffects.Cast(PPERequesterBank.GetRequester(PPERequester_UnconEffects));
}
override void SetParam(Param p)
{
Param2<int, ref SymptomSyncData> params = Param2<int, ref SymptomSyncData>.Cast(p);
if (params && params.param1 == SymptomIDs.SYMPTOM_FAINT)
{
if (!g_Game.IsDedicatedServer())
{
SymptomSyncData faintData = params.param2;
if (faintData.m_IntArray[0] == 1)
{
if (!m_FaintEffect.IsRequesterRunning())
{
Param1<float> vignette = new Param1<float>(0.0);
m_FaintEffect.Start(vignette);
}
m_FaintEffect.FadeInEffect(faintData.m_FloatArray[0], faintData.m_FloatArray[1]);
}
else if (faintData.m_IntArray[0] == 0)
m_FaintEffect.FadeOutEffect(faintData.m_FloatArray[0] + faintData.m_FloatArray[1]);
else if (faintData.m_IntArray[0] == 2)
{
m_FaintEffect.FadeOutEffect(0.3);
m_FaintEffect.SetRequesterUpdating(false);
}
}
}
#ifdef SERVER
g_Game.RPCSingleParam(m_Player, ERPCs.RPC_SYMPTOM_PARAM_SYNC, params, true, m_Player.GetIdentity());
#endif
}
override void OnGetActivatedClient(PlayerBase player)
{
if (LogManager.IsSymptomLogEnable())
Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetActivated", m_Player.ToString());
}
//!only gets called once on an active Symptom that is being deactivated
override void OnGetDeactivatedClient(PlayerBase player)
{
if (LogManager.IsSymptomLogEnable())
Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetDeactivated", m_Player.ToString());
}
override void OnDestructed()
{
super.OnDestructed();
if (!g_Game.IsDedicatedServer())
m_FaintEffect.Stop();
}
}