Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / buff / fragment / Buff_Scattering.cs
@小李xl 小李xl on 15 Mar 2024 1 KB buff系统重构中
  1.  
  2. using Godot;
  3.  
  4. [Buff("Scattering", "提高武器精准度buff, 参数‘1’为提升的精准度百分比值(小数)")]
  5. public class Buff_Scattering : BuffFragment
  6. {
  7. private float _value;
  8.  
  9. public override void InitParam(float arg1)
  10. {
  11. _value = arg1;
  12. }
  13.  
  14. public override void OnPickUpItem()
  15. {
  16. Role.RoleState.CalcStartScatteringEvent += CalcStartScatteringEvent;
  17. Role.RoleState.CalcFinalScatteringEvent += CalcFinalScatteringEvent;
  18. }
  19.  
  20. public override void OnRemoveItem()
  21. {
  22. Role.RoleState.CalcStartScatteringEvent -= CalcStartScatteringEvent;
  23. Role.RoleState.CalcFinalScatteringEvent -= CalcFinalScatteringEvent;
  24. }
  25.  
  26. private void CalcStartScatteringEvent(float originValue, RefValue<float> refValue)
  27. {
  28. refValue.Value = Mathf.Max(0, refValue.Value - refValue.Value * _value);
  29. }
  30. private void CalcFinalScatteringEvent(float originValue, RefValue<float> refValue)
  31. {
  32. refValue.Value = Mathf.Max(0, refValue.Value - refValue.Value * _value);
  33. }
  34. }