public static BotStatTracker GetOrAddComponent(CharacterMaster bot, CharacterMaster owner, CharacterBody botBody, CharacterBody ownerBody) { BotStatTracker tracker = bot.gameObject.GetComponent <BotStatTracker>(); if (!tracker) { tracker = bot.gameObject.AddComponent <BotStatTracker>(); tracker.BotMaster = bot; tracker.BotOwnerMaster = owner; } tracker.BotBody = botBody; tracker.BotOwnerBody = ownerBody; return(tracker); }
private void AddBoostsToBot(CharacterBody sender, StatHookEventArgs args) { CharacterMaster master = sender.master; if (master) { BotStatTracker tracker = master.GetComponent <BotStatTracker>(); if (tracker) { tracker.ApplyTrackerBoosts(args); //Chat.AddMessage($"HP After: {sender.maxHealth}"); } } }
private void UpdateAllTrackers(On.RoR2.CharacterBody.orig_OnInventoryChanged orig, CharacterBody self) { orig(self); CharacterMaster ownerMaster = self.master; MinionOwnership[] minionOwnerships = Object.FindObjectsOfType <MinionOwnership>(); foreach (MinionOwnership minionOwnership in minionOwnerships) { if (minionOwnership && minionOwnership.ownerMaster && minionOwnership.ownerMaster == ownerMaster) { CharacterMaster minionMaster = minionOwnership.GetComponent <CharacterMaster>(); if (minionMaster) { BotStatTracker tracker = minionMaster.GetComponent <BotStatTracker>(); if (tracker) { tracker.UpdateTrackerBoosts(); } } } } }
private void CharacterBody_onBodyStartGlobal(CharacterBody obj) { CharacterMaster botMaster = obj.master; if (!botMaster) { return; } MinionOwnership minionOwnership = botMaster.minionOwnership; if (!minionOwnership) { return; } if (IsDroneSupported(botMaster)) { CharacterMaster ownerMaster = botMaster.minionOwnership.ownerMaster; if (ownerMaster) { BotStatTracker tracker = BotStatTracker.GetOrAddComponent(botMaster, ownerMaster, obj, ownerMaster.GetBody()); tracker.UpdateTrackerBoosts(); } } }