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; } }