bloodregen.c 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. class BloodRegenMdfr: ModifierBase
  2. {
  3. override void Init()
  4. {
  5. m_TrackActivatedTime = false;
  6. m_ID = eModifiers.MDF_BLOOD_REGEN;
  7. m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
  8. m_TickIntervalActive = DEFAULT_TICK_TIME_ACTIVE;
  9. }
  10. override bool ActivateCondition(PlayerBase player)
  11. {
  12. float m_MaxBlood = player.GetMaxHealth("GlobalHealth", "Blood");
  13. if ( player.GetHealth("GlobalHealth", "Blood") <= m_MaxBlood )
  14. {
  15. return true;
  16. }
  17. else
  18. {
  19. return false;
  20. }
  21. }
  22. override void OnActivate(PlayerBase player)
  23. {
  24. }
  25. override bool DeactivateCondition(PlayerBase player)
  26. {
  27. float m_MaxBlood = player.GetMaxHealth("GlobalHealth", "Blood");
  28. if ( player.GetHealth("GlobalHealth", "Blood") >= m_MaxBlood )
  29. {
  30. return true;
  31. }
  32. else
  33. {
  34. return false;
  35. }
  36. }
  37. override void OnTick(PlayerBase player, float deltaT)
  38. {
  39. float regen_modifier_water = GetRegenModifierWater( player.GetStatWater().Get() );
  40. float regen_modifier_energy = GetRegenModifierEnergy( player.GetStatEnergy().Get() );
  41. float blood_regen_speed = PlayerConstants.BLOOD_REGEN_RATE_PER_SEC * regen_modifier_water * regen_modifier_energy;
  42. /*
  43. PrintString("regen_modifier_water" + regen_modifier_water);
  44. PrintString("regen_modifier_energy" + regen_modifier_energy);
  45. PrintString("blood_regen_speed" + blood_regen_speed);
  46. */
  47. player.AddHealth("","Blood", blood_regen_speed * deltaT );
  48. }
  49. float GetRegenModifierWater(float water)
  50. {
  51. float modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_WATER_HIGH;
  52. int water_level = m_Player.GetStatLevelWater();
  53. /*
  54. if( water < PlayerConstants.BLOOD_REGEN_THRESHOLD_WATER_MID ) {modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_WATER_MID}
  55. if( water < PlayerConstants.BLOOD_REGEN_THRESHOLD_WATER_LOW ) {modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_WATER_LOW}
  56. */
  57. if( water_level == EStatLevels.MEDIUM ) {modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_WATER_MID}
  58. if( water_level >= EStatLevels.LOW ) {modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_WATER_LOW}
  59. return modifier;
  60. }
  61. float GetRegenModifierEnergy(float energy)
  62. {
  63. float modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_ENERGY_HIGH;
  64. int energy_level = m_Player.GetStatLevelEnergy();
  65. //if( energy < PlayerConstants.BLOOD_REGEN_THRESHOLD_ENERGY_MID ) {modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_ENERGY_MID}
  66. //if( energy < PlayerConstants.BLOOD_REGEN_THRESHOLD_ENERGY_LOW ) {modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_ENERGY_LOW}
  67. if( energy_level == EStatLevels.MEDIUM ) {modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_ENERGY_MID}
  68. if( energy_level >= EStatLevels.LOW ) {modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_ENERGY_LOW}
  69. return modifier;
  70. }
  71. };