Exemplo n.º 1
0
        private static Boolean IsFiltered(EntityComponent component)
        {
            // Filter empty containers
            if (Configuration.Scanner.DoNotHighlightEmptyContainers)
            {
                if (component is CharacterComponent characterComponent)
                {
                    return(CharacterComponentHelper.TryGetLootCost(characterComponent, out var cost) && cost == 0);
                }

                if (component.Entity is Chest chest)
                {
                    return(chest.lockLevel == 0 && chest.Inventory.Count == 0);
                }
            }

            // Filter standalone items by name
            if (component is ItemComponent itemComponent)
            {
                EntityProto prototype = itemComponent.Entity.Prototype;
                if (!String.IsNullOrEmpty(prototype.m_Localization))
                {
                    return(Configuration.Scanner.DoNotHighlightItems.Contains(prototype.Caption));
                }
            }

            return(false);
        }
        public static void Prefix(PlayerSelection __instance, EntityComponent entity, ref PlayerSelection.SelectionType type, Single intensity = 0f)
        {
            const PlayerSelection.SelectionType GrayColor   = unchecked ((PlayerSelection.SelectionType) 0xFF____80_80_80);
            const PlayerSelection.SelectionType VioletColor = unchecked ((PlayerSelection.SelectionType) 0xFF__EA_04_FF);

            if (type != PlayerSelection.SelectionType.Select)
            {
                return;
            }

            if (Game.World.Player.CharacterComponent.Character.Hallucinating.Level != ConditionLevel.Normal)
            {
                return;
            }

            if (entity is CharacterComponent characterComponent)
            {
                if (CharacterComponentHelper.TryGetLootCost(characterComponent, out var cost) && cost == 0)
                {
                    type = GrayColor;
                }
            }
            else if (entity is ChestComponent chestComponent)
            {
                Chest chest = chestComponent.chest;
                if (chest.lockLevel != 0)
                {
                    type = VioletColor;
                    return;
                }

                if (chest.Inventory.Count == 0)
                {
                    type = GrayColor;
                }
            }
            else if (entity is DoorComponent doorComponent)
            {
                var door = doorComponent.door;
                if (door.lockLevel != 0)
                {
                    type = VioletColor;
                    return;
                }
            }
        }