Exemplo n.º 1
0
 public override void ClearTarget()
 {
     base.ClearTarget();
     healthController  = null;
     meleeFighter      = null;
     character         = null;
     combateController = null;
 }
Exemplo n.º 2
0
 public override void InitTarget(Transform target)
 {
     base.InitTarget(target);
     if (target)
     {
         healthController     = target.GetComponent <vIHealthController>();
         _hadHealthController = this.healthController != null;
         meleeFighter         = target.GetComponent <vIMeleeFighter>();
         character            = target.GetComponent <vICharacter>();
         combateController    = target.GetComponent <vIControlAICombat>();
     }
 }
Exemplo n.º 3
0
        public virtual void TakeDamage(vDamage damage)
        {
            if (healthController == null && targetReceiver)
            {
                healthController = targetReceiver.GetComponent <vIHealthController>();
            }
            else if (healthController == null)
            {
                healthController = GetComponentInParent <vIHealthController>();
            }

            if (healthController != null)
            {
                var _damage = ApplyDamageModifiers(damage);
                healthController.TakeDamage(_damage);
                onReceiveDamage.Invoke(_damage);
            }
        }
Exemplo n.º 4
0
        public void OnReceiveAttack(vDamage damage, vIMeleeFighter attacker)
        {
            if (overrideReactionID)
            {
                damage.reaction_id = reactionID;
            }

            if (ragdoll && !ragdoll.iChar.isDead)
            {
                var _damage = new vDamage(damage);
                var value   = (float)_damage.damageValue;
                _damage.damageValue = (int)(value * damageMultiplier);
                ragdoll.gameObject.ApplyDamage(_damage, attacker);
                onReceiveDamage.Invoke(_damage);
            }
            else
            {
                if (healthController == null)
                {
                    healthController = GetComponentInParent <vIHealthController>();
                }

                if (healthController != null)
                {
                    var _damage = new vDamage(damage);
                    var value   = (float)_damage.damageValue;
                    _damage.damageValue = (int)(value * damageMultiplier);
                    try
                    {
                        healthController.gameObject.ApplyDamage(_damage, attacker);
                        onReceiveDamage.Invoke(_damage);
                    }
                    catch
                    {
                        this.enabled = false;
                    }
                }
            }
        }
Exemplo n.º 5
0
        public void OnReceiveAttack(vDamage damage, vIMeleeFighter attacker)
        {
            float multiplier = (useRandomValues && !fixedValues) ? Random.Range(minDamageMultiplier, maxDamageMultiplier) :
                               (useRandomValues && fixedValues) ? randomChange ? maxDamageMultiplier : minDamageMultiplier : damageMultiplier;

            if (overrideReactionID)
            {
                if (useRandomValues && !fixedValues)
                {
                    damage.reaction_id = Random.Range(minReactionID, maxReactionID);
                }
                else if (useRandomValues && fixedValues)
                {
                    damage.reaction_id = randomChange ? maxReactionID : minReactionID;
                }
                else
                {
                    damage.reaction_id = reactionID;
                }
            }

            if (ragdoll && !ragdoll.iChar.isDead)
            {
                var _damage = new vDamage(damage);
                var value   = (float)_damage.damageValue;
                _damage.damageValue = (int)(value * multiplier);
                if (multiplier == maxDamageMultiplier)
                {
                    OnGetMaxValue.Invoke();
                }
                ragdoll.gameObject.ApplyDamage(_damage, attacker);
                onReceiveDamage.Invoke(_damage);
            }
            else
            {
                if (healthController == null && targetReceiver)
                {
                    healthController = targetReceiver.GetComponent <vIHealthController>();
                }
                else if (healthController == null)
                {
                    healthController = GetComponentInParent <vIHealthController>();
                }

                if (healthController != null)
                {
                    var _damage = new vDamage(damage);
                    var value   = (float)_damage.damageValue;
                    _damage.damageValue = (int)(value * multiplier);
                    if (multiplier == maxDamageMultiplier)
                    {
                        OnGetMaxValue.Invoke();
                    }
                    try
                    {
                        healthController.gameObject.ApplyDamage(_damage, attacker);
                        onReceiveDamage.Invoke(_damage);
                    }
                    catch
                    {
                        this.enabled = false;
                    }
                }
            }
        }