private void HealthComponent_TakeDamage(On.RoR2.HealthComponent.orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo)
        {
            var attacker = damageInfo.attacker;

            if (attacker)
            {
                MetronomeTrackKills MetronomeTrackKills = damageInfo.attacker.gameObject.GetComponent <MetronomeTrackKills>();
                if (MetronomeTrackKills && MetronomeTrackKills.enabled)
                {
                    damageInfo.damage *= 1 + (DamageCoefficientPerStack * MetronomeTrackKills.kills);
                }
            }
            orig(self, damageInfo);
        }
        private void GenericSkill_OnExecute(On.RoR2.GenericSkill.orig_OnExecute orig, GenericSkill self)
        {
            CharacterBody vBody = self.characterBody;

            if (vBody && vBody.inventory)
            {
                int invCount = vBody.inventory.GetItemCount(catalogIndex);

                if (invCount > 0)
                {
                    SkillLocator skillLocation = vBody.skillLocator;
                    if (skillLocation)
                    {
                        MetronomeTrackKills MetronomeTrackKills = self.gameObject.GetComponent <MetronomeTrackKills>();
                        if (MetronomeTrackKills && MetronomeTrackKills.enabled)
                        {
                            if (skillLocation.FindSkill(self.skillName)) //Updates last skill slot used
                            {
                                if (skillLocation.primary.Equals(self))
                                {
                                    MetronomeTrackKills.SetLastSkillSlot(0);
                                }
                                else if (skillLocation.secondary.Equals(self))
                                {
                                    MetronomeTrackKills.SetLastSkillSlot(1);
                                }
                                else if (skillLocation.utility.Equals(self))
                                {
                                    MetronomeTrackKills.SetLastSkillSlot(2);
                                }
                                else if (skillLocation.special.Equals(self))
                                {
                                    MetronomeTrackKills.SetLastSkillSlot(3);
                                }
                                //else { _logger.LogError("Metronome: Invalid Skill Slot ["+self+"] accessed!"); }
                            }
                        }
                    }
                }
            }
            orig(self);
        }
        private void CharacterBody_OnInventoryChanged(On.RoR2.CharacterBody.orig_OnInventoryChanged orig, CharacterBody self) //Update Max Kills
        {
            orig(self);
            var InventoryCount = GetCount(self);
            MetronomeTrackKills metronomeTrackKills = self.gameObject.GetComponent <MetronomeTrackKills>();

            if (!metronomeTrackKills)
            {
                metronomeTrackKills = self.gameObject.AddComponent <MetronomeTrackKills>();
            }
            metronomeTrackKills.characterBody = self;
            if (InventoryCount > 0)
            {
                metronomeTrackKills.enabled  = true;
                metronomeTrackKills.maxkills = MaxKills + MaxKillsPerStack * InventoryCount;

                metronomeTrackKills.UpdateKills();
            }
            else
            {
                metronomeTrackKills.kills   = 0;
                metronomeTrackKills.enabled = false;
            }
        }