private bool ReflectDamage(DamagableObject targetDamagable, ref WeaponHitInfo hit, InputDamage inputDamage) { bool reflected = targetDamagable.TryReflectDamage(); if (reflected) { if (hit.normal) { DamageParams damageParams = new DamageParams(); damageParams.SetReflrected(true); InputDamage inpDamage = new InputDamage(targetDamagable.nebulaObject, inputDamage.CreateCopy(), damageParams); cachedDamagable.ReceiveDamage(inpDamage); } } return(reflected); }
private void ApplyReflection(InputDamage inputDamage) { if ((false == inputDamage.reflected) && inputDamage.hasDamager) { var reflectValue = mBonuses.reflectionPc; if (false == Mathf.Approximately(reflectValue, 0f)) { float reflectedDamageVal = inputDamage.totalDamage * reflectValue; var attackerDamagable = inputDamage.source.Damagable(); WeaponDamage reflectedDamage = new WeaponDamage(inputDamage.weaponBaseType); reflectedDamage.SetBaseTypeDamage(reflectedDamageVal); if (attackerDamagable) { DamageParams damageParams = new DamageParams(); damageParams.SetReflrected(true); attackerDamagable.ReceiveDamage(new InputDamage(nebulaObject, reflectedDamage, damageParams)); } } } }