Buff.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using FSRole;
  5. using FSEvent;
  6. using FSAssist;
  7. namespace FSBuff {
  8. public class Buff {
  9. public int Value { set; get; }
  10. public string ID;
  11. // 回合
  12. public int Round;
  13. // 叠加
  14. public int Overlay;
  15. public Role Target;
  16. public Transform transform;
  17. /*
  18. * Buff执行,当行动回合等于0时,Buff取消
  19. */
  20. public void Execute() {
  21. Debug.Log("Buff " + ID + " 执行, " + "剩余回合数 : " + Round + ", 叠加层数 : " + Overlay);
  22. if (Round == 0) {
  23. // 回合结束时,取消Buff
  24. Cancle();
  25. } else {
  26. // 各个BUFF的运行内容不同
  27. if (ID == AssistConfig.Bleed) {
  28. Debug.Log("流血 ... ");
  29. // 根据叠加层数来进行不同操作
  30. if (Overlay < 3) {
  31. // 当层数小于3时
  32. int damage = (int)Mathf.Max(Target.OriginAttr.MaxHp * 0.05f, 5);
  33. Target.GetDamage(damage);
  34. } else if (Overlay >= 3 && Overlay < 6) {
  35. // 当层数小于6时
  36. int damage = (int)Mathf.Max(Target.OriginAttr.MaxHp * 0.1f, 20);
  37. Target.GetDamage(damage);
  38. } else if (Overlay >= 6 && Overlay < 9) {
  39. // 当层数小于9时
  40. int damage = (int)Mathf.Max(Target.OriginAttr.MaxHp * 0.15f, 45);
  41. Target.GetDamage(damage);
  42. } else {
  43. // 层数大于9时
  44. int damage = (int)Mathf.Max(Target.OriginAttr.MaxHp * 0.2f, 80);
  45. Target.GetDamage(damage);
  46. if (Overlay > 9) {
  47. // 当层数小于3时
  48. int extraDamage = (int)Mathf.Max(Target.OriginAttr.MaxHp * 0.1f, 50);
  49. Target.GetDamage(extraDamage);
  50. }
  51. }
  52. } else if (ID == AssistConfig.Fracture) {
  53. Debug.Log("骨折 ... ");
  54. } else if (ID == AssistConfig.Paralysis) {
  55. Debug.Log("麻痹 ... ");
  56. }
  57. // 当叠加层数超过9层时,将会是无限回合
  58. if (Overlay > 9) {
  59. Round = int.MaxValue;
  60. }
  61. Round--;
  62. }
  63. }
  64. /*
  65. * Buff取消,从目标中移除
  66. */
  67. public void Cancle() {
  68. if (Target != null) {
  69. Target.EraseBuff(this);
  70. }
  71. }
  72. }
  73. }