using System.Collections; using System.Collections.Generic; using UnityEngine; using FSRole; using FSEvent; using FSAssist; namespace FSBuff { public class Buff { public int Value { set; get; } public string ID; // 回合 public int Round; // 叠加 public int Overlay; public Role Target; public Transform transform; /* * Buff执行,当行动回合等于0时,Buff取消 */ public void Execute() { Debug.Log("Buff " + ID + " 执行, " + "剩余回合数 : " + Round + ", 叠加层数 : " + Overlay); if (Round == 0) { // 回合结束时,取消Buff Cancle(); } else { // 各个BUFF的运行内容不同 if (ID == AssistConfig.Bleed) { Debug.Log("流血 ... "); // 根据叠加层数来进行不同操作 if (Overlay < 3) { // 当层数小于3时 int damage = (int)Mathf.Max(Target.OriginAttr.MaxHp * 0.05f, 5); Target.GetDamage(damage); } else if (Overlay >= 3 && Overlay < 6) { // 当层数小于6时 int damage = (int)Mathf.Max(Target.OriginAttr.MaxHp * 0.1f, 20); Target.GetDamage(damage); } else if (Overlay >= 6 && Overlay < 9) { // 当层数小于9时 int damage = (int)Mathf.Max(Target.OriginAttr.MaxHp * 0.15f, 45); Target.GetDamage(damage); } else { // 层数大于9时 int damage = (int)Mathf.Max(Target.OriginAttr.MaxHp * 0.2f, 80); Target.GetDamage(damage); if (Overlay > 9) { // 当层数小于3时 int extraDamage = (int)Mathf.Max(Target.OriginAttr.MaxHp * 0.1f, 50); Target.GetDamage(extraDamage); } } } else if (ID == AssistConfig.Fracture) { Debug.Log("骨折 ... "); } else if (ID == AssistConfig.Paralysis) { Debug.Log("麻痹 ... "); } // 当叠加层数超过9层时,将会是无限回合 if (Overlay > 9) { Round = int.MaxValue; } Round--; } } /* * Buff取消,从目标中移除 */ public void Cancle() { if (Target != null) { Target.EraseBuff(this); } } } }