// ==UserScript== // @name Alienware Arena Filters // @namespace http://updownleftdie.com/ // @version 1.0 // @description Filter out tier-restricted content on Alienware Arena // @author UpDownLeftDie // @match https://*.alienwarearena.com/* // @grant GM_setValue // @grant GM_getValue // @license AGPL // @downloadURL none // ==/UserScript== (function() { 'use strict'; // Settings management const defaultSettings = { hideClosedGiveaways: true, hideTierRestricted: true, hideOutOfStock: true }; function getSettings() { const savedSettings = GM_getValue('filterSettings'); return savedSettings ? JSON.parse(savedSettings) : defaultSettings; } function saveSettings(settings) { GM_setValue('filterSettings', JSON.stringify(settings)); } // Function to extract tier number from text function extractTier(text) { const match = text.match(/Tier\s*(\d+)/i); return match ? parseInt(match[1]) : null; } // Function to check and store user's tier on control center page function checkAndStoreTier() { const tierImg = document.querySelector('img[src*="/images/content/tier-tags/"]'); if (tierImg) { const tierMatch = tierImg.src.match(/tier-tags\/(\d+)\.png/); if (tierMatch) { const userTier = parseInt(tierMatch[1]); GM_setValue('userTier', userTier); console.log('Stored user tier:', userTier); } } } // Function to filter community giveaways function filterGiveaways() { const settings = getSettings(); const userTier = GM_getValue('userTier', 99); const giveaways = document.querySelectorAll('div.mb-3.community-giveaways__listing__row'); giveaways.forEach(giveaway => { const text = giveaway.textContent; if (settings.hideClosedGiveaways && text.includes('Closed')) { giveaway.style.display = 'none'; return; } if (settings.hideTierRestricted) { const tierNumber = extractTier(text); if (tierNumber && tierNumber > userTier) { giveaway.style.display = 'none'; } } }); } // Function to filter marketplace items function filterMarketplace() { const settings = getSettings(); const userTier = GM_getValue('userTier', 99); const items = document.querySelectorAll('.pointer.marketplace-game-small, .pointer.marketplace-game-large'); items.forEach(item => { const text = item.textContent; if (settings.hideOutOfStock && text.toLowerCase().includes('out of stock')) { item.style.display = 'none'; return; } if (settings.hideTierRestricted) { const tierNumber = extractTier(text); if (tierNumber && tierNumber > userTier) { item.style.display = 'none'; } } }); } // Function to create settings menu function createSettingsMenu() { const settings = getSettings(); const menuHTML = `
`; // Add menu to page document.body.insertAdjacentHTML('beforeend', menuHTML); // Add event listeners document.getElementById('saveFilterSettings').addEventListener('click', () => { const newSettings = { hideClosedGiveaways: document.getElementById('hideClosedGiveaways').checked, hideTierRestricted: document.getElementById('hideTierRestricted').checked, hideOutOfStock: document.getElementById('hideOutOfStock').checked }; saveSettings(newSettings); document.getElementById('alienware-filter-settings').style.display = 'none'; location.reload(); // Reload to apply new settings }); document.getElementById('closeFilterSettings').addEventListener('click', () => { document.getElementById('alienware-filter-settings').style.display = 'none'; }); } // Function to add settings button to menu function addSettingsButton() { const menuList = document.querySelector('.nav-item-mus .dropdown-menu.dropdown-menu-end'); if (menuList) { const settingsItem = document.createElement('a'); settingsItem.className = 'dropdown-item'; settingsItem.href = '#'; settingsItem.textContent = 'Filter Settings'; settingsItem.addEventListener('click', (e) => { e.preventDefault(); document.getElementById('alienware-filter-settings').style.display = 'block'; }); menuList.insertBefore(settingsItem, menuList.lastElementChild); } } // Initialize everything based on current page const currentPath = window.location.pathname; // Add settings menu to all pages createSettingsMenu(); addSettingsButton(); if (currentPath === '/control-center') { checkAndStoreTier(); } else if (currentPath === '/community-giveaways') { // Add mutation observer for dynamic content loading const observer = new MutationObserver((mutations, obs) => { filterGiveaways(); }); observer.observe(document.body, { childList: true, subtree: true }); } else if (currentPath === '/marketplace/game-vault') { // Add mutation observer for dynamic content loading const observer = new MutationObserver((mutations, obs) => { filterMarketplace(); }); observer.observe(document.body, { childList: true, subtree: true }); } })();