hmpsevere.c 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. class HMP3Symptom extends SymptomBase
  2. {
  3. protected float m_EffectDuration;
  4. protected float m_EffectTime;
  5. protected float m_EffectStartTime;
  6. protected float m_Time;
  7. protected PPERequester_HMPGhosts m_Requester;
  8. const int EFFECT_DURATION_TIME_MIN = 6;
  9. const int EFFECT_DURATION_TIME_MAX = 10;
  10. const int MIN_TIME_BETWEEN_EFFECTS = 24.0;
  11. const int MAX_TIME_BETWEEN_EFFECTS = 30.0;
  12. //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
  13. override void OnInit()
  14. {
  15. m_SymptomType = SymptomTypes.SECONDARY;
  16. m_Priority = 0;
  17. m_ID = SymptomIDs.SYMPTOM_HMP_SEVERE;
  18. m_IsPersistent = false;
  19. m_SyncToClient = true;
  20. m_MaxCount = 1;
  21. if (!GetGame().IsDedicatedServer())
  22. {
  23. Class.CastTo(m_Requester,PPERequesterBank.GetRequester(PPERequesterBank.REQ_HMP_GHOST));
  24. }
  25. }
  26. override void OnUpdateClient(PlayerBase player, float deltatime)
  27. {
  28. m_Time += deltatime;
  29. if (m_EffectStartTime <= 0)
  30. {
  31. m_EffectStartTime = Math.RandomFloatInclusive(MIN_TIME_BETWEEN_EFFECTS, MAX_TIME_BETWEEN_EFFECTS);
  32. m_EffectDuration = Math.RandomFloatInclusive(EFFECT_DURATION_TIME_MIN, EFFECT_DURATION_TIME_MAX);
  33. }
  34. if (m_EffectStartTime > 0 && m_Time > m_EffectStartTime)
  35. {
  36. m_EffectTime += deltatime / m_EffectDuration;
  37. m_Requester.SetPulseProgress(Math.Clamp(m_EffectTime,0,1));
  38. if (m_EffectTime >= 1)
  39. {
  40. m_EffectTime = 0;
  41. m_EffectStartTime = -1;
  42. m_Time = 0;
  43. }
  44. }
  45. }
  46. //!gets called once on an Symptom which is being activated
  47. override void OnGetActivatedServer(PlayerBase player)
  48. {
  49. if (LogManager.IsSymptomLogEnable()) Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetActivated", m_Player.ToString());
  50. }
  51. override void OnGetActivatedClient(PlayerBase player)
  52. {
  53. m_Requester.Start();
  54. if (LogManager.IsSymptomLogEnable()) Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetActivated", m_Player.ToString());
  55. }
  56. override void OnGetDeactivatedServer(PlayerBase player)
  57. {
  58. if (LogManager.IsSymptomLogEnable()) Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetDeactivated", m_Player.ToString());
  59. }
  60. //!only gets called once on an active Symptom that is being deactivated
  61. override void OnGetDeactivatedClient(PlayerBase player)
  62. {
  63. m_Requester.FadeOutEffect(3);
  64. if (LogManager.IsSymptomLogEnable()) Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetDeactivated", m_Player.ToString());
  65. }
  66. }