private void OnTriggerStay2D(Collider2D collision) { if (collision.tag == "Player") { if (player.itemToPickup == null) { player.itemToPickup = gameObject; } GetComponent <SpriteRenderer>().material = highlightMaterial; PickUpAmmo(); player.timeSinceQPressed += Time.deltaTime; if (player.timeSinceQPressed > delay) { if (Input.GetKeyDown(KeyCode.Q) && player.itemToPickup == gameObject) { if (equippedWeaponScript.name != this.name && (secondaryWeapon == null || secondaryWeapon.name != this.name)) // The player may not have two of the same weapon { if (hotbarScript.weaponSlot1.GetComponent <Slot>().isEmpty || hotbarScript.weaponSlot2.GetComponent <Slot>().isEmpty) { hotbarScript.secondaryWeaponAmmoAmount = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().currentAmmoAmount; hotbarScript.secondaryWeaponClipSize = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().clipSize; hotbarScript.secondaryWeaponAmmoType = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().ammoType; hotbarScript.secondaryWeapon = hotbarScript.currentlyEquippedWeapon; hotbarScript.secondaryWeapon.GetComponent <Weapon>().isSilenced = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().isSilenced; hotbarScript.secondaryWeapon.GetComponent <Weapon>().hasIncreasedClipSize = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().hasIncreasedClipSize; hotbarScript.secondaryWeapon.GetComponent <Weapon>().clipSizeMultiplier = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().clipSizeMultiplier; hotbarScript.secondaryWeapon.GetComponent <Weapon>().durabilityMultiplier = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().durabilityMultiplier; } hotbarScript.EquipWeapon(weaponID); hotbarScript.AddItemToInventory(weaponID); foreach (GameObject weaponObject in hotbarScript.weaponObjects) { if (weaponObject.name == this.name) { weaponObject.GetComponent <WeaponPerks>().enabled = false; // We disable this script so that it doesn't run every time you pick up a new weapon hotbarScript.currentlyEquippedWeapon = weaponObject; hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().clipSize = clipSize; hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().currentAmmoAmount = currentAmmoAmount; hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().damage = damage; hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().fireRate = fireRate; hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().isSilenced = isSilenced; hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().hasIncreasedClipSize = hasIncreasedClipSize; hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().clipSizeMultiplier = clipSizeMultiplier; hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().inaccuracyFactor = inaccuracyFactor; hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().finalAccuracyFactor = player.playerStats.inaccuracyFactor + inaccuracyFactor; if (hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().finalAccuracyFactor < 0) { hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().finalAccuracyFactor = 0; } hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().hasAlteredDurability = hasAlteredDurability; hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().durabilityMultiplier = durabilityMultiplier; hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().durability = durability; hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().DetermineSoundName(); } } if (hotbarScript.currentlyEquippedWeapon.name == weaponSlot1.transform.GetChild(2).name) { hotbarScript.currentlyEquippedWeaponSlot = 1; GameObject.Find("AmmoText1").GetComponent <Text>().text = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().currentAmmoAmount + "/" + hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().clipSize; hotbarScript.weaponSlot1.GetComponent <Image>().color = hotbarScript.equippedColor; hotbarScript.weaponSlot2.GetComponent <Image>().color = hotbarScript.unequippedColor; } else if (hotbarScript.currentlyEquippedWeapon.name == weaponSlot2.transform.GetChild(2).name) { hotbarScript.currentlyEquippedWeaponSlot = 2; GameObject.Find("AmmoText2").GetComponent <Text>().text = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().currentAmmoAmount + "/" + hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().clipSize; hotbarScript.weaponSlot1.GetComponent <Image>().color = hotbarScript.unequippedColor; hotbarScript.weaponSlot2.GetComponent <Image>().color = hotbarScript.equippedColor; } player.timeSinceQPressed = 0f; player.itemToPickup = null; audioManager.PlaySound("Weapon Pickup"); Destroy(gameObject.transform.parent.gameObject); } else if (equippedWeaponScript.name == this.name) { GameObject weaponToDrop = Resources.Load("Prefabs/Items/WeaponDrops/" + equippedWeaponScript.name + " Item Drop") as GameObject; hotbarScript.DropWeapon(weaponToDrop, equippedWeaponScript.currentAmmoAmount, equippedWeaponScript.clipSize, equippedWeaponScript.ammoType, equippedWeaponScript.damage, equippedWeaponScript.fireRate, equippedWeaponScript.isSilenced, equippedWeaponScript.hasIncreasedClipSize, equippedWeaponScript.clipSizeMultiplier, equippedWeaponScript.inaccuracyFactor, equippedWeaponScript.durability, equippedWeaponScript.hasAlteredDurability, equippedWeaponScript.durabilityMultiplier); equippedWeaponScript.clipSize = clipSize; equippedWeaponScript.currentAmmoAmount = currentAmmoAmount; equippedWeaponScript.damage = damage; equippedWeaponScript.fireRate = fireRate; equippedWeaponScript.isSilenced = isSilenced; equippedWeaponScript.hasIncreasedClipSize = hasIncreasedClipSize; equippedWeaponScript.clipSizeMultiplier = clipSizeMultiplier; equippedWeaponScript.inaccuracyFactor = inaccuracyFactor; equippedWeaponScript.finalAccuracyFactor = player.playerStats.inaccuracyFactor + inaccuracyFactor; if (equippedWeaponScript.finalAccuracyFactor < 0) { equippedWeaponScript.finalAccuracyFactor = 0; } equippedWeaponScript.hasAlteredDurability = hasAlteredDurability; equippedWeaponScript.durabilityMultiplier = durabilityMultiplier; equippedWeaponScript.durability = durability; player.timeSinceQPressed = 0f; player.itemToPickup = null; audioManager.PlaySound("Weapon Pickup"); Destroy(gameObject.transform.parent.gameObject); } else if (secondaryWeapon != null && secondaryWeapon.name == this.name) { GameObject weaponToDrop = Resources.Load("Prefabs/Items/WeaponDrops/" + secondaryWeapon.name + " Item Drop") as GameObject; hotbarScript.DropWeapon(weaponToDrop, secondaryWeaponScript.currentAmmoAmount, secondaryWeaponScript.clipSize, secondaryWeaponScript.ammoType, secondaryWeaponScript.damage, secondaryWeaponScript.fireRate, secondaryWeaponScript.isSilenced, secondaryWeaponScript.hasIncreasedClipSize, secondaryWeaponScript.clipSizeMultiplier, secondaryWeaponScript.inaccuracyFactor, secondaryWeaponScript.durability, secondaryWeaponScript.hasAlteredDurability, secondaryWeaponScript.durabilityMultiplier); secondaryWeaponScript.clipSize = clipSize; secondaryWeaponScript.currentAmmoAmount = currentAmmoAmount; secondaryWeaponScript.damage = damage; secondaryWeaponScript.fireRate = fireRate; secondaryWeaponScript.isSilenced = isSilenced; secondaryWeaponScript.hasIncreasedClipSize = hasIncreasedClipSize; secondaryWeaponScript.clipSizeMultiplier = clipSizeMultiplier; secondaryWeaponScript.inaccuracyFactor = inaccuracyFactor; secondaryWeaponScript.finalAccuracyFactor = player.playerStats.inaccuracyFactor + inaccuracyFactor; if (secondaryWeaponScript.finalAccuracyFactor < 0) { secondaryWeaponScript.finalAccuracyFactor = 0; } secondaryWeaponScript.hasAlteredDurability = hasAlteredDurability; secondaryWeaponScript.durabilityMultiplier = durabilityMultiplier; secondaryWeaponScript.durability = durability; player.timeSinceQPressed = 0f; player.itemToPickup = null; audioManager.PlaySound("Weapon Pickup"); Destroy(gameObject.transform.parent.gameObject); } } } } }