Example #1
0
    private void OnTriggerEnter(Collider other)
    {
        ArrowDamage component = other.GetComponent <ArrowDamage>();

        if (component || other.gameObject.CompareTag("Weapon"))
        {
            this.HitNitrogen(10);
        }
    }
Example #2
0
    // Use this for initialization
    void Start()
    {
        //make sure the object has the VRTK script attached...
        if (GetComponent <VRTK_InteractableObject>() == null)
        {
            Debug.LogError("Team3_Interactable_Object_Extension is required to be attached to an Object that has the VRTK_InteractableObject script attached to it");
            return;
        }

        arrowDamage = arrowPrefab.GetComponent <ArrowDamage>();

        //subscribe to the event.  NOTE: the "ObectGrabbed"  this is the procedure to invoke if this object is grabbed
        GetComponent <VRTK_InteractableObject>().InteractableObjectGrabbed   += new InteractableObjectEventHandler(ObjectGrabbed);
        GetComponent <VRTK_InteractableObject>().InteractableObjectUngrabbed += new InteractableObjectEventHandler(ObjectUngrabbed);
    }
Example #3
0
 public void OnCollisionEnter(Collision collision)
 {
     if (!this.rigidBody)
     {
         return;
     }
     if (this.flintLock)
     {
         ArrowDamage componentInChildren = base.transform.GetComponentInChildren <ArrowDamage>();
         if (componentInChildren && componentInChildren.Live)
         {
             componentInChildren.CheckHit(collision.transform.position, collision.transform, collision.collider.isTrigger, collision.collider);
         }
     }
     this.calculateDamage(collision.gameObject);
     if ((collision.gameObject.CompareTag("Tree") || collision.gameObject.CompareTag("Stick") || collision.gameObject.layer == 17 || collision.gameObject.layer == 20 || collision.gameObject.layer == 25 || UnderfootSurfaceDetector.GetSurfaceType(collision.collider) != UnderfootSurfaceDetector.SurfaceType.None) && this.rigidBody.velocity.magnitude > this.speedThreshold)
     {
         if (!this.InWater && !this.effectDelay)
         {
             this.PlayEvent(this.rockOnTree);
         }
         if (!this.soundDelay)
         {
             this.enableSound();
             this.soundDelay = true;
         }
     }
     if ((collision.gameObject.CompareTag("TerrainMain") || collision.gameObject.layer == 26) && this.rigidBody.velocity.magnitude > this.speedThreshold)
     {
         if (!this.InWater && !this.effectDelay)
         {
             if (this.rockOnGround.Length > 0)
             {
                 this.PlayEvent(this.rockOnGround);
             }
             else
             {
                 this.PlayEvent(this.rockOnTree);
             }
         }
         if (!this.soundDelay)
         {
             this.enableSound();
             this.soundDelay = true;
         }
     }
     if (collision.gameObject.CompareTag("Float") && this.rigidBody.velocity.magnitude > this.speedThreshold)
     {
         if (!this.InWater && !this.effectDelay)
         {
             if (this.rockOnGround.Length > 0)
             {
                 this.PlayEvent(this.stickHitTree);
             }
             else
             {
                 this.PlayEvent(this.rockOnTree);
             }
         }
         if (!this.soundDelay)
         {
             this.enableSound();
             this.soundDelay = true;
         }
     }
 }
Example #4
0
    public bool stickArrowToNearestBone(Transform arrow)
    {
        Transform parent = arrow.parent;

        WeaponStatUpgrade.Types types      = (WeaponStatUpgrade.Types)(-1);
        ItemProperties          properties = parent.GetComponent <arrowTrajectory>()._pickup.GetComponent <PickUp>()._properties;

        if (properties != null && properties.ActiveBonus != (WeaponStatUpgrade.Types)(-1))
        {
            types = properties.ActiveBonus;
        }
        int         item      = 0;
        bool        flag      = false;
        ArrowDamage component = arrow.GetComponent <ArrowDamage>();

        if (component.crossbowBoltType)
        {
            flag = true;
        }
        GameObject gameObject;

        if (flag)
        {
            gameObject = UnityEngine.Object.Instantiate <GameObject>(this.fakeBoltPickup, parent.transform.position, parent.transform.rotation);
        }
        else if (types != WeaponStatUpgrade.Types.BoneAmmo)
        {
            if (types != WeaponStatUpgrade.Types.ModernAmmo)
            {
                gameObject = UnityEngine.Object.Instantiate <GameObject>(this.fakeArrowPickup, parent.transform.position, parent.transform.rotation);
                item       = 0;
            }
            else
            {
                gameObject = UnityEngine.Object.Instantiate <GameObject>(this.fakeArrowModernPickup, parent.transform.position, parent.transform.rotation);
                item       = 2;
            }
        }
        else
        {
            gameObject = UnityEngine.Object.Instantiate <GameObject>(this.fakeArrowBonePickup, parent.transform.position, parent.transform.rotation);
            item       = 1;
        }
        if (flag)
        {
            item = 3;
        }
        Collider component2 = gameObject.GetComponent <Collider>();

        if (component2)
        {
            component2.enabled = false;
        }
        Transform tip = gameObject.GetComponent <fakeArrowSetup>().tip;
        int       num = this.returnNearestJointMidPoint(tip);

        if (this.singleJointMode)
        {
            num = 0;
            Vector3 vector = (gameObject.transform.position - this.baseJoint.position).normalized;
            vector = this.baseJoint.position + vector * 0.2f;
            gameObject.transform.parent   = this.baseJoint;
            gameObject.transform.position = vector;
            gameObject.transform.rotation = Quaternion.LookRotation(gameObject.transform.position - this.baseJoint.position) * Quaternion.Euler(-90f, 0f, 0f);
        }
        else
        {
            Transform   transform  = this.stickToJoints[num];
            IEnumerator enumerator = this.stickToJoints[num].GetEnumerator();
            try
            {
                while (enumerator.MoveNext())
                {
                    object    obj        = enumerator.Current;
                    Transform transform2 = (Transform)obj;
                    if (!transform2.GetComponent <MonoBehaviour>())
                    {
                        transform = transform2;
                        break;
                    }
                }
            }
            finally
            {
                IDisposable disposable;
                if ((disposable = (enumerator as IDisposable)) != null)
                {
                    disposable.Dispose();
                }
            }
            Vector3 vector2 = (this.stickToJoints[num].position + transform.position) / 2f;
            Vector3 vector3 = (gameObject.transform.position - vector2).normalized;
            vector3 = vector2 + vector3 * 0.35f;
            gameObject.transform.parent   = this.stickToJoints[num];
            gameObject.transform.position = vector3;
            gameObject.transform.rotation = Quaternion.LookRotation(gameObject.transform.position - vector2) * Quaternion.Euler(-90f, 0f, 0f);
        }
        bool result = false;

        if (this.stickToJoints.Length > 0 && this.stickToJoints[num] && this.stickToJoints[num].GetComponent <headShotObject>())
        {
            result = true;
        }
        if (!this.stuckArrows.ContainsKey(gameObject.transform))
        {
            this.stuckArrows.Add(gameObject.transform, num);
            this.stuckArrowsTypeList.Add(item);
            fakeArrowSetup component3 = gameObject.GetComponent <fakeArrowSetup>();
            if (component3 && BoltNetwork.isRunning)
            {
                component3.storedIndex  = this.stuckArrows.Count - 1;
                component3.entityTarget = base.transform.root.GetComponent <BoltEntity>();
            }
            this.numStuckArrows++;
        }
        if (BoltNetwork.isRunning)
        {
            BoltEntity component4 = parent.GetComponent <BoltEntity>();
            if (component4.isAttached && component4.isOwner)
            {
                if (this.IsCreature && BoltNetwork.isServer)
                {
                    base.StartCoroutine(this.SendArrowMPDelayed(gameObject, num, types, flag));
                }
                else
                {
                    this.sendArrowMP(gameObject, num, types, flag);
                }
            }
        }
        return(result);
    }
        public override void OnEvent(PlayerHitEnemy ev)
        {
            //this needed to be changed.
            //the command would send damage using hitReal - pure damage.
            //this made clients attack ignore armor and deal too much dmg
            if (!this.ValidateSender(ev, SenderTypes.Any))
            {
                return;
            }
            if (!ev.Target)
            {
                return;
            }
            if (ev.Hit == 0)
            {
                return;
            }
            try
            {
                if (EnemyHealth.CurrentAttacker == null)
                {
                    EnemyHealth.CurrentAttacker = ev.Target;
                }
                var packed = ev.Target.networkId.PackedValue;
                if (EnemyManager.hostDictionary.ContainsKey(packed))
                {
                    var enemy = EnemyManager.hostDictionary[packed];
                    if (ev.explosion)
                    {
                        enemy.HealthScript.Explosion(-1);
                    }
                    if (ev.Burn)
                    {
                        enemy.HealthScript.Burn();
                    }
                    if (ev.getAttackerType == DamageMath.SILENTattackerType)
                    {
                        //ghost hit
                        float damage = BitConverter.ToSingle(BitConverter.GetBytes(ev.Hit), 0);
                        enemy.HitPhysicalSilent(damage);
                    }
                    else if (ev.getAttackerType == DamageMath.SILENTattackerTypeMagic)
                    {
                        //ghost hit
                        float damage = BitConverter.ToSingle(BitConverter.GetBytes(ev.Hit), 0);
                        enemy.HitMagic(damage);
                    }
                    else if (ev.getAttackerType == DamageMath.PURE)
                    {
                        float damage = BitConverter.ToSingle(BitConverter.GetBytes(ev.Hit), 0);
                        enemy.HitPure(damage);
                    }
                    else
                    {
                        if (ev.Hit > 0)
                        {
                            float damage = ev.getAttackerType >= DamageMath.CONVERTEDFLOATattackerType ? BitConverter.ToSingle(BitConverter.GetBytes(ev.Hit), 0) : ev.Hit;
                            if (ev.getAttackerType >= DamageMath.CONVERTEDFLOATattackerType)
                            {
                                ev.getAttackerType -= DamageMath.CONVERTEDFLOATattackerType;
                            }
                            //just in case i ever need this
                            //this is how to get the player object which raised the event (ev.RaisedBy.UserData as BoltEntity)
                            enemy.HealthScript.getAttackDirection(ev.getAttackerType);
                            var attackerGO = (ev.RaisedBy.UserData as BoltEntity).gameObject;
                            enemy.setup.search.switchToNewTarget(attackerGO);
                            enemy.setup.hitReceiver.getAttackDirection(ev.getAttackDirection);
                            enemy.setup.hitReceiver.getCombo(ev.getCombo);
                            enemy.HealthScript.takeDamage(ev.takeDamage);
                            enemy.HealthScript.setSkinDamage(1);
                            enemy.HitPhysical(damage);
                        }
                        else
                        {
                            ModAPI.Console.Write("The good armor reduction");
                            enemy.ReduceArmor(-ev.Hit);
                        }
                    }
                    return;
                }

                //F**k all of this spaghetti below
                lb_Bird   component           = ev.Target.GetComponent <lb_Bird>();
                Fish      componentInChildren = ev.Target.GetComponentInChildren <Fish>();
                Transform transform;
                if (componentInChildren)
                {
                    transform = componentInChildren.transform;
                }
                else if (ev.Target.GetComponent <animalHealth>())
                {
                    transform = ev.Target.transform;
                }
                else if (component)
                {
                    transform = component.transform;
                }
                else
                {
                    EnemyHealth componentInChildren2 = ev.Target.GetComponentInChildren <EnemyHealth>();
                    transform = componentInChildren2 ? componentInChildren2.transform : ev.Target.transform.GetChild(0);
                }
                if (ev.getAttacker == 10 && ev.Weapon)
                {
                    ArrowDamage componentInChildren3 = ev.Weapon.GetComponentInChildren <ArrowDamage>();
                    if (componentInChildren3.Live)
                    {
                        arrowStickToTarget componentInChildren4 = transform.GetComponentInChildren <arrowStickToTarget>();
                        Transform          target = transform;
                        if (componentInChildren4)
                        {
                            target = componentInChildren4.transform;
                        }
                        componentInChildren3.CheckHit(Vector3.zero, target, false, transform.GetComponent <Collider>());
                    }
                }
                if (ev.explosion)
                {
                    transform.SendMessage("Explosion", -1, SendMessageOptions.DontRequireReceiver);
                }
                if (ev.HitHead)
                {
                    transform.SendMessage("HitHead", SendMessageOptions.DontRequireReceiver);
                }
                if (ev.getStealthAttack)
                {
                    transform.SendMessage("getStealthAttack", SendMessageOptions.DontRequireReceiver);
                }
                float dmg = ev.getAttackerType >= DamageMath.CONVERTEDFLOATattackerType ? BitConverter.ToSingle(BitConverter.GetBytes(ev.Hit), 0) : ev.Hit;
                if (ev.hitFallDown)
                {
                    mutantHitReceiver componentInChildren5 = transform.GetComponentInChildren <mutantHitReceiver>();
                    if (componentInChildren5)
                    {
                        componentInChildren5.sendHitFallDown(dmg);
                    }
                }
                else
                {
                    if (ev.Hit > 0)
                    {
                        transform.SendMessage("getAttacker", (ev.RaisedBy.UserData as BoltEntity).gameObject, SendMessageOptions.DontRequireReceiver);
                        transform.SendMessage("getAttackerType", ev.getAttackerType, SendMessageOptions.DontRequireReceiver);
                        transform.SendMessage("getAttackDirection", ev.getAttackDirection, SendMessageOptions.DontRequireReceiver);
                        transform.SendMessage("getCombo", ev.getCombo, SendMessageOptions.DontRequireReceiver);
                        transform.SendMessage("takeDamage", ev.takeDamage, SendMessageOptions.DontRequireReceiver);
                        transform.SendMessage("setSkinDamage", UnityEngine.Random.Range(0, 3), SendMessageOptions.DontRequireReceiver);
                        transform.SendMessage("ApplyAnimalSkinDamage", ev.getAttackDirection, SendMessageOptions.DontRequireReceiver);
                        transform.SendMessage("Hit", dmg, SendMessageOptions.DontRequireReceiver);
                        if (ev.HitAxe)
                        {
                            transform.SendMessage("HitAxe", SendMessageOptions.DontRequireReceiver);
                        }
                        if (ev.Burn)
                        {
                            transform.SendMessage("Burn", SendMessageOptions.DontRequireReceiver);
                        }
                    }
                    else
                    {
                        ModAPI.Console.Write("The bad armor reduction");
                        transform.SendMessage("ReduceArmor", -dmg, SendMessageOptions.DontRequireReceiver);
                    }
                }
            }
            finally
            {
                EnemyHealth.CurrentAttacker = null;
            }
        }