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;
        }
示例#4
0
        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;
        }