(function () {
// 1) Basic bot filter (extend if you like)
function isBot() {
return /(bot|crawl|spider|google|bing|slurp|yandex|facebook|linkedin|pinterest|preview|whatsapp|discord|telegram|headless|puppeteer)/i
.test(navigator.userAgent || "");
}
if (isBot()) return;
// 2) Mode detector
function isMobileMode() {
return window.matchMedia("(max-width: 767px)").matches ||
/Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent || "");
}
// 3) Your ad configs (swap keys/sizes to match your network units)
const AD = {
mobile: { key: "aa6d52a6037d0558c2a19dc52b6aa824", width: 320, height: 50 }, // 320x50
desktop: { key: "a49752dcde88f4fde5987d25efbb7168", width: 468, height: 60 } // 468x60
};
// 4) Create container if it doesn't exist
function ensureContainer() {
let container = document.getElementById("ad-container");
if (!container) {
container = document.createElement("div");
container.id = "ad-container";
container.style.display = "none";
document.body.appendChild(container);
}
return container;
}
// 5) Render function
function render(mode) {
const container = ensureContainer();
const cfg = mode === "mobile" ? AD.mobile : AD.desktop;
// Set global atOptions for ad network
window.atOptions = {
key: cfg.key,
format: "iframe",
height: cfg.height,
width: cfg.width,
params: {}
};
// Clear previous ad/script then inject
container.innerHTML = "";
container.style.display = "block";
const s = document.createElement("script");
s.src = `//selfportraitproved.com/${cfg.key}/invoke.js`;
s.async = true;
container.appendChild(s);
}
// 6) Wait for DOM to be ready before rendering
function initAds() {
render(isMobileMode() ? "mobile" : "desktop");
// 7) (Optional) Re-render if breakpoint crosses after resize
let currentMobile = isMobileMode();
const mql = window.matchMedia("(max-width: 767px)");
if (mql.addEventListener) {
mql.addEventListener("change", (e) => {
const nowMobile = e.matches;
if (nowMobile !== currentMobile) {
currentMobile = nowMobile;
render(currentMobile ? "mobile" : "desktop");
}
});
} else if (mql.addListener) { // older browsers
mql.addListener((e) => {
const nowMobile = e.matches;
if (nowMobile !== currentMobile) {
currentMobile = nowMobile;
render(currentMobile ? "mobile" : "desktop");
}
});
}
}
// 8) Execute when DOM is ready
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", initAds);
} else {
initAds();
}
})();
Sick and tired of your VALORANT display name? Then what’s stopping you from changing it?
In 2020, Riot Games went from being the League of Legends company to the “bunch of games” publisher, introducing VALORANT, Teamfight Tactics, Legends of Runeterra, and Wild Rift to the world.
This led to the developer rethinking its username and account system and implementing some major changes. Instead of a separate account for each game, the developer switched to “Riot accounts.” This global account is all you need to sign in to any of Riot’s titles, including VALORANT.
But the name-changing process in VALORANT isn’t quite the same as League of Legends or any other Riot title for that matter. You don’t have to spend in-game currency to change your name: The process is completely free.
👉 For more insights, check out this resource.
How to change your display name
- To change your name, close the VALORANT client (if it’s already open)
- Log in to your Riot account from your browser
- Navigate to the Riot ID tab at the top left-hand side of the page
- Type in your new name
- Click save changes
You can also change your tagline, which can be found at the end of your name. It includes a hashtag and a set of numbers or letters, similar to a clan tag in League. You have the option to change your name and tagline once every 30 days using this method.
Make sure to follow us on YouTube for more esports news and analysis.
👉 Discover more in this in-depth guide.