12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- 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);
- }
- }
- }
- }
|