private void OnTriggerEnter(Collider other) { ArrowDamage component = other.GetComponent <ArrowDamage>(); if (component || other.gameObject.CompareTag("Weapon")) { this.HitNitrogen(10); } }
// 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); }
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; } } }
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; } }