private void EquipmentUpdate(On.RoR2.EquipmentSlot.orig_Update orig, RoR2.EquipmentSlot self) { if (self.equipmentIndex == equipmentDef.equipmentIndex) { var selfDisplay = self.FindActiveEquipmentDisplay(); var body = self.characterBody; if (selfDisplay && body) { var bulletTracker = body.GetComponent <JarBulletTracker>(); var input = body.inputBank; if (input && bulletTracker) { //Debug.Log($"Update ChargeTime: {bulletTracker.ChargeTime}"); if (bulletTracker.ChargeTime > 0) { selfDisplay.rotation = Quaternion.Slerp(selfDisplay.rotation, RoR2.Util.QuaternionSafeLookRotation(input.aimDirection), 0.15f); orig(self); return; } } selfDisplay.rotation = Quaternion.Slerp(selfDisplay.rotation, RoR2.Util.QuaternionSafeLookRotation(Vector3.up), 0.15f); } } orig(self); }
protected override bool PerformEquipmentAction(RoR2.EquipmentSlot slot) { if (!slot.characterBody || !slot.characterBody.teamComponent) { return(false); } var body = slot.characterBody; var bodyIdentity = body.gameObject.GetComponent <NetworkIdentity>(); var bulletTracker = body.GetComponent <JarBulletTracker>(); if (!bulletTracker) { bulletTracker = body.gameObject.AddComponent <JarBulletTracker>(); bulletTracker.body = body; } var equipmentDisplayTransform = slot.FindActiveEquipmentDisplay(); if (equipmentDisplayTransform) { bulletTracker.TargetTransform = equipmentDisplayTransform; } if (bulletTracker.jarBullets.Count > 0 && bulletTracker.ChargeTime <= 0 && bulletTracker.SuckTime <= 0) { bulletTracker.ChargeTime = 1; bulletTracker.RefireTime = 0.2f; return(true); } else if (bulletTracker.jarBullets.Count <= 0 && bulletTracker.SuckTime <= 0) { bulletTracker.IsSuckingProjectiles = false; bulletTracker.SuckTime = projectileAbsorptionTime; } return(false); }