public override void OnExecute() { switch (this.BuffData.BuffWorkType) { case BuffWorkTypes.ChangeAttackValue: ConstantModifier constantModifier_AttackValue = ReferencePool.Acquire <ConstantModifier>(); constantModifier_AttackValue.ChangeValue = BuffDataCalculateHelper.CalculateCurrentData(this, this.BuffData); dataModifier = constantModifier_AttackValue; this.GetBuffTarget().GetComponent <DataModifierComponent>() .AddDataModifier(NumericType.AttackAdd.ToString(), dataModifier, NumericType.AttackAdd); break; case BuffWorkTypes.ChangeMagic: PercentageModifier constantModifier_Magic = ReferencePool.Acquire <PercentageModifier>(); constantModifier_Magic.Percentage = BuffDataCalculateHelper.CalculateCurrentData(this, this.BuffData); this.dataModifier = constantModifier_Magic; this.GetBuffTarget().GetComponent <DataModifierComponent>() .AddDataModifier(NumericType.Mp.ToString(), this.dataModifier, NumericType.Mp); break; case BuffWorkTypes.ChangeSpeed: PercentageModifier percentageModifier_Speed = ReferencePool.Acquire <PercentageModifier>(); percentageModifier_Speed.Percentage = BuffDataCalculateHelper.CalculateCurrentData(this, this.BuffData); this.dataModifier = percentageModifier_Speed; this.GetBuffTarget().GetComponent <DataModifierComponent>() .AddDataModifier(NumericType.SpeedAdd.ToString(), this.dataModifier, NumericType.SpeedAdd); break; } this.BuffState = BuffState.Running; }
public override void OnExecute() { this.m_FinalTreatValue = BuffDataCalculateHelper.CalculateCurrentData(this, this.BuffData); //TODO:进行相关治疗影响操作,例如减疗,增疗等 this.TheUnitBelongto.GetComponent <HeroDataComponent>().CurrentLifeValue += this.m_FinalTreatValue; Game.EventSystem.Run(EventIdType.ChangeMP, this.TheUnitBelongto.Id, this.m_FinalTreatValue); Log.Info($"受到了治疗,治疗量为{this.m_FinalTreatValue}"); this.BuffState = BuffState.Finished; }
public override void OnExecute() { float finalTreatValue; finalTreatValue = BuffDataCalculateHelper.CalculateCurrentData(this, this.BuffData); //TODO:进行相关治疗影响操作,例如减疗,增疗等,应该和伤害计算差不多处理(比如香炉会增加治疗量),这里暂时先只考虑受方 finalTreatValue = this.TheUnitBelongto.GetComponent <DataModifierComponent>().BaptismData("Treat", finalTreatValue); this.TheUnitBelongto.GetComponent <HeroDataComponent>().NumericComponent[NumericType.Hp] += finalTreatValue; Game.EventSystem.Run($"{EventIdType.ExcuteTreate}{this.TheUnitFrom.Id}", finalTreatValue); this.BuffState = BuffState.Finished; }
public override void OnExecute() { float finalTreatValue; finalTreatValue = BuffDataCalculateHelper.CalculateCurrentData(this, this.BuffData); //TODO:进行相关治疗影响操作,例如减疗,增疗等,应该和伤害计算差不多处理(比如香炉会增加治疗量),这里暂时先只考虑受方 //TODO:同样的治疗量这一数据也要做一个类似DamageData的数据体 finalTreatValue = this.TheUnitBelongto.GetComponent <DataModifierComponent>().BaptismData("Treat", finalTreatValue); this.TheUnitBelongto.GetComponent <HeroDataComponent>().NumericComponent.ApplyChange(NumericType.Hp, finalTreatValue); //抛出治疗事件,需要监听治疗的Buff需要监听此事件 Game.Scene.GetComponent <BattleEventSystem>().Run($"{EventIdType.ExcuteTreate}{this.TheUnitFrom.Id}", finalTreatValue); Game.Scene.GetComponent <BattleEventSystem>().Run($"{EventIdType.TakeTreate}{this.GetBuffTarget()}", finalTreatValue); this.BuffState = BuffState.Finished; }