Beispiel #1
0
        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);
        }
Beispiel #2
0
 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));
             }
         }
     }
 }