HMPSevere.c
class HMP3Symptom extends SymptomBase
{
protected float m_EffectDuration;
protected float m_EffectTime;
protected float m_EffectStartTime;
protected float m_Time;
protected PPERequester_HMPGhosts m_Requester;
const int EFFECT_DURATION_TIME_MIN = 6;
const int EFFECT_DURATION_TIME_MAX = 10;
const int MIN_TIME_BETWEEN_EFFECTS = 24.0;
const int MAX_TIME_BETWEEN_EFFECTS = 30.0;
//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_SymptomType = SymptomTypes.SECONDARY;
m_Priority = 0;
m_ID = SymptomIDs.SYMPTOM_HMP_SEVERE;
m_IsPersistent = false;
m_SyncToClient = true;
m_MaxCount = 1;
if (!g_Game.IsDedicatedServer())
{
Class.CastTo(m_Requester,PPERequesterBank.GetRequester(PPERequesterBank.REQ_HMP_GHOST));
}
}
override void OnUpdateClient(PlayerBase player, float deltatime)
{
m_Time += deltatime;
if (m_EffectStartTime <= 0)
{
m_EffectStartTime = Math.RandomFloatInclusive(MIN_TIME_BETWEEN_EFFECTS, MAX_TIME_BETWEEN_EFFECTS);
m_EffectDuration = Math.RandomFloatInclusive(EFFECT_DURATION_TIME_MIN, EFFECT_DURATION_TIME_MAX);
}
if (m_EffectStartTime > 0 && m_Time > m_EffectStartTime)
{
m_EffectTime += deltatime / m_EffectDuration;
m_Requester.SetPulseProgress(Math.Clamp(m_EffectTime,0,1));
if (m_EffectTime >= 1)
{
m_EffectTime = 0;
m_EffectStartTime = -1;
m_Time = 0;
}
}
}
//!gets called once on an Symptom which is being activated
override void OnGetActivatedServer(PlayerBase player)
{
if (LogManager.IsSymptomLogEnable()) Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetActivated", m_Player.ToString());
}
override void OnGetActivatedClient(PlayerBase player)
{
m_Requester.Start();
if (LogManager.IsSymptomLogEnable()) Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetActivated", m_Player.ToString());
}
override void OnGetDeactivatedServer(PlayerBase player)
{
if (LogManager.IsSymptomLogEnable()) Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetDeactivated", m_Player.ToString());
}
//!only gets called once on an active Symptom that is being deactivated
override void OnGetDeactivatedClient(PlayerBase player)
{
m_Requester.FadeOutEffect(3);
if (LogManager.IsSymptomLogEnable()) Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetDeactivated", m_Player.ToString());
}
}