예제 #1
0
            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);
            }
예제 #2
0
        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}");
                }
            }
        }
예제 #3
0
        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();
                        }
                    }
                }
            }
        }
예제 #4
0
        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();
                }
            }
        }