示例#1
0
    public void ActionHandle(BuffHandlerVar buffHandlerVar)
    {
        Buff_DirectDamage buff = (Buff_DirectDamage)buffHandlerVar.data;

        if (!buffHandlerVar.GetBufferValue(out BufferValue_TargetUnits targetUnits))
        {
            return;
        }

        GameCalNumericTool.DamageData damageData = new GameCalNumericTool.DamageData();


        damageData.damageType  = buff.damageType;
        damageData.damageValue = buff.damageValue;
        if (buffHandlerVar.bufferValues.TryGetValue(typeof(BufferValue_DamageAddPct), out var damageAddPct))
        {
            damageData.damageValue = Mathf.RoundToInt((1 + ((BufferValue_DamageAddPct)damageAddPct).damageAddPct) * damageData.damageValue);
        }
        damageData.isCritical = false;
        SkillEffectComponent skillEffectComponent = buffHandlerVar.source.GetComponent <SkillEffectComponent>();
        var effectData = skillEffectComponent.GetEffectData(buffHandlerVar.skillId);

        if (effectData != null)
        {
            damageData.damageValue = Mathf.RoundToInt((1 + effectData.coefficientAddPct) * damageData.damageValue);
            damageData.isCritical  = effectData.critical;
        }

        if (!SkillHelper.tempData.ContainsKey((buffHandlerVar.source, buff.buffSignal)))
        {
            SkillHelper.tempData[(buffHandlerVar.source, buff.buffSignal)] = new Dictionary <Type, IBufferValue>();
示例#2
0
    public void ActionHandle(BuffHandlerVar buffHandlerVar)
    {
        Buff_EnhanceSkillEffect buff = (Buff_EnhanceSkillEffect)buffHandlerVar.data;

        if (!buffHandlerVar.GetBufferValue(out BufferValue_TargetUnits targetUnits))
        {
            return;
        }

        foreach (var v in targetUnits.targets)
        {
            SkillEffectComponent skillEffectComponent = v.GetComponent <SkillEffectComponent>();
            skillEffectComponent.AddEffectData(buff.skillId, buff.effectData);
        }
    }