Ejemplo n.º 1
0
        /// <summary>
        /// Init properties
        /// </summary>
        protected virtual void Init()
        {
            fighter   = gameObject.GetMeleeFighter();
            colorMove = GetComponent <vItemManager.ColorMove>();
            ///Initialize all bodyMembers and weapons
            foreach (vBodyMember member in Members)
            {
                ///damage of member will be always the defaultDamage
                //member.attackObject.damage = defaultDamage;
                member.attackObject.damage.damageValue = defaultDamage.damageValue;
                if (member.bodyPart == HumanBodyBones.LeftLowerArm.ToString())
                {
                    var weapon = member.attackObject.GetComponentInChildren <vMeleeWeapon>();
                    leftWeapon = weapon;
                }
                if (member.bodyPart == HumanBodyBones.RightLowerArm.ToString())
                {
                    var weapon = member.attackObject.GetComponentInChildren <vMeleeWeapon>();
                    rightWeapon = weapon;
                }
                member.attackObject.meleeManager = this;
                member.SetActiveDamage(false);
            }

            if (leftWeapon != null)
            {
                leftWeapon.SetActiveDamage(false);
                leftWeapon.meleeManager = this;
            }
            if (rightWeapon != null)
            {
                rightWeapon.meleeManager = this;
                rightWeapon.SetActiveDamage(false);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Listener of Damage Event
        /// </summary>
        /// <param name="hitInfo"></param>
        public virtual void OnDamageHit(vHitInfo hitInfo)
        {
            vDamage damage = new vDamage(hitInfo.attackObject.damage);

            damage.sender      = transform;
            damage.reaction_id = currentReactionID;
            damage.recoil_id   = currentRecoilID;
            if (this.activeRagdoll)
            {
                damage.activeRagdoll = this.activeRagdoll;
            }
            if (this.attackName != string.Empty)
            {
                damage.attackName = this.attackName;
            }
            if (this.ignoreDefense)
            {
                damage.ignoreDefense = this.ignoreDefense;
            }
            /// Calc damage with multiplier
            /// and Call ApplyDamage of attackObject
//            damage.damageValue *= damageMultiplier > 1 ? damageMultiplier : 1;
            vItemManager.ColorMove targetColor = hitInfo.targetCollider.GetComponentInParent <vItemManager.ColorMove>();
            if (targetColor)
            {
                if (colorMove.colorAttack == targetColor.colorDefense)
                {
                    damage.damageValue = 0;
                }
                else if ((vItemManager.MoveColorEffect)(((int)colorMove.colorAttack + 1) % 4) == targetColor.colorDefense)
                {
                    damage.damageValue = 15;
                }
                else
                {
                    damage.damageValue = 5;
                }
            }
            else
            {
                Debug.Log("NOT A TARGET");
            }
            hitInfo.attackObject.ApplyDamage(hitInfo.hitBox, hitInfo.targetCollider, damage);
            onDamageHit.Invoke(hitInfo);
        }