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>();
protected override void Run(ETModel.Session session, M2C_GiveDamage message) { GameCalNumericTool.DamageData[] damageDatas = new GameCalNumericTool.DamageData[message.DamageDatas.Count]; for (int i = 0; i < damageDatas.Length; i++) { damageDatas[i] = new GameCalNumericTool.DamageData(); damageDatas[i].damageType = (GameCalNumericTool.DamageType)message.DamageDatas[i].DamageType; damageDatas[i].damageValue = message.DamageDatas[i].DamageValue; } ETModel.Game.EventSystem.Run(ETModel.EventIdType.GiveDamage, message.Id, damageDatas); }