コード例 #1
0
 public void DealDamage(IDamageReceiver damageReceiver, DamagesParameters damagesParameters)
 {
     if (damageReceiver.GetDamageTag != attackTag || damageReceiver.GetDamageTag == AttackTag.Enemies || damageReceiver.GetDamageTag == AttackTag.Environment)
     {
         damageReceiver.ReceiveDamage(this, damagesParameters, null);
     }
 }
コード例 #2
0
 public override void ReceiveDamage(IDamageSource damageSource, DamagesParameters damagesParameter, ProjectileSpecialParameters projSpecialParameterss)
 {
     if (!GameManager.gameManager.Won && GameManager.gameManager.StartedFight)
     {
         base.ReceiveDamage(damageSource, damagesParameter, projSpecialParameterss);
     }
 }
コード例 #3
0
    public void DealDamage(IDamageReceiver damageReceiver, DamagesParameters damagesParameters)
    {
        damageReceiver.ReceiveDamage(this, damagesParameters, relatedProjectile.GetProjectileSpecialParameters);

        if (relatedProjectile.GetProjectileSpecialParameters.GetPiercingParameters.GetNumberOfPiercing > 0)
        {
            relatedProjectile.GetProjectileSpecialParameters.GetPiercingParameters.DecreamentPiercing();

            FeedbackObject woodProjection = GameManager.gameManager.PoolManager.GetFeedbackObject(FeedbackObjectPoolTag.WoodDestruction, PoolInteractionType.GetFromPool);
            if (woodProjection != null)
            {
                woodProjection.transform.position = transform.position;
                woodProjection.StartFeedback(2, 0.2f, specialSound);
            }
        }
        else if (relatedProjectile.GetProjectileSpecialParameters.GetSkeweringParameters.Skewering)
        {
            FeedbackObject woodProjection = GameManager.gameManager.PoolManager.GetFeedbackObject(FeedbackObjectPoolTag.WoodDestruction, PoolInteractionType.GetFromPool);
            if (woodProjection != null)
            {
                woodProjection.transform.position = transform.position;
                woodProjection.StartFeedback(2, 0.2f, specialSound);
            }
        }
        else
        {
            relatedProjectile.ExplodeOnContact();
        }
    }
コード例 #4
0
    public void ReceiveDamage(DamageTag sourceDamageTag, DamagesParameters damagesParameters)
    {
        if (sourceDamageTag != DamageTag.Environment && sourceDamageTag == damageTag)
        {
            return;
        }

        if (damagesParameters._damages == 0)
        {
            return;
        }
        if (!_isPlayer)
        {
            TimeManager.Instance.StartFreezeFrame();
        }

        OnReceivedDamages?.Invoke(currentLifeAmount - Mathf.Abs(damagesParameters._damages), -Mathf.Abs(damagesParameters._damages));

        LoseLife(damagesParameters._damages);


        if (damagesParameters._numberOfStunedTurns > 0)
        {
            //Debug.Log(name + " is stuned for " + damagesParameters._numberOfStunedTurns + " turn" + (damagesParameters._numberOfStunedTurns > 1 ? "s" : ""));
            OnReceivedStun?.Invoke(damagesParameters._numberOfStunedTurns);
        }
    }
コード例 #5
0
 public override void ReceiveDamage(IDamageSource damageSource, DamagesParameters damagesParameters, ProjectileSpecialParameters projSpecialParameters)
 {
     if (damageSource.GetDamageTag == AttackTag.Player)
     {
         if (!GameManager.gameManager.CinematicMng.CinematicProcessing)
         {
             IntroControler dialogue = dialoguesToLaunchOnFleeingEnemyHitByShot[Random.Range(0, dialoguesToLaunchOnFleeingEnemyHitByShot.Length)];
             dialogue.PlayCinematic();
         }
     }
 }
コード例 #6
0
    /// <summary>
    /// Used to receive the attack from the inputed source
    /// </summary>
    /// <param name="attackSource">The attack source that touched this attack receiver</param>
    /// <param name="attackParameters">The parameters of the received attack</param>
    public virtual void ReceiveDamage(IDamageSource damageSource, DamagesParameters damagesParameters, ProjectileSpecialParameters projSpecialParameters)
    {
        if (relatedShip.IsLifeProtected)
        {
            return;
        }

        relatedShip.LfManager.Damage(damagesParameters.GetDamageAmount, damagesParameters.GetRecoveringTime, damagesParameters.GetRecoveringType);

        #region Damage Feedback
        DamageSourceRelativePosition damageSourceRelativePosition = DamageSourceRelativePosition.Right;

        if (damageSource != null)
        {
            Vector3 attackSourceRelativePos = (damageSource.GetDamageSourcePosition - transform.position).normalized;
            Vector3 selfDirection           = relatedShip.GetShipVelocity;
            if (Vector3.Dot(attackSourceRelativePos, selfDirection.GetLeftOrthogonalVectorXZ()) > 0)
            {
                damageSourceRelativePosition = DamageSourceRelativePosition.Left;
            }
        }
        else
        {
            int random = Random.Range(0, 2);
            if (random == 1)
            {
                damageSourceRelativePosition = DamageSourceRelativePosition.Left;
            }
        }

        relatedShip.StartDamageShipAnim(damagesParameters.GetDamageAmount, damageSourceRelativePosition);
        #endregion

        if (projSpecialParameters != null)
        {
            if (projSpecialParameters.GetSpeedModifier != null)
            {
                relatedShip.ShipMvt.StartNewSpeedModifier(projSpecialParameters.GetSpeedModifier);
            }

            if (projSpecialParameters.GetSkeweringParameters.Skewering)
            {
                relatedShip.SetCurrentSkeweringProjectile(projSpecialParameters.GetSkeweringParameters.GetSourceProjectile);
            }
        }
    }
コード例 #7
0
 public void DealDamage(IDamageReceiver damageReceiver, DamagesParameters damagesParameters)
 {
     damageReceiver.ReceiveDamage(this, damagesParameters, null);
 }
コード例 #8
0
 public void ReceiveDamage(IDamageSource damageSource, DamagesParameters damagesParameters, ProjectileSpecialParameters projSpecialParameters)
 {
 }
コード例 #9
0
 public void ReceiveDamage(IDamageSource damageSource, DamagesParameters damagesParameters, ProjectileSpecialParameters projSpecialParameters)
 {
     lifeManager.Damage(damagesParameters.GetDamageAmount, damagesParameters.GetRecoveringTime, damagesParameters.GetRecoveringType);
 }
コード例 #10
0
ファイル: Obstacle.cs プロジェクト: KeldaWind/FUTFourthRepo
 private void Start()
 {
     damagesParameters   = new DamagesParameters(1, 0.3f, RecoveringType.ConsidersRecover);
     knockbackParameters = new KnockbackParameters(20, 0.15f, 0.1f, true, 0.6f, 0.3f);
 }