(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();
}
})();
The world of Teyvat in Genshin Impact is rich with resources that players need to collect to be more successful in the game. One such resource is Mist Flower Corolla, a tricky item to gather unless you know what to do.
Ice Flowers, the source of Mist Flower Corolla, can be found in abundance all across the world of Teyvat. This includes areas in Mondstadt, Liyue, Inazuma, and, likely, all regions that will be added to the game in the future because Ice Flowers are not a resource specific to any area or region.
Ice Flowers and the Mist Flower Corolla they hide are usually located near the edges of bodies of water. There is no one best place to find them and players will come across them often during their explorations. But some good areas to look for this resource are marked below.
Near Dawn Winery
All around Dihua Marsh
Stormterror’s Lair
To collect Mist Flower Corolla from Ice Flowers, use any Pyro skill and attack the flower with it to release the Corolla. You will know you have done it right when the Ice Flower is no longer dealing Cryo damage to your character and it has opened up to reveal the Corolla.
👉 For more insights, check out this resource.
Mist Flower Corolla is essential for making two helpful items that can be made at any Crafting Bench. The first is Frosting Essential Oil, which increases players’ Cryo damage. The second is Frostshield Potion, which increases the Cryo resistance of all party members.
The best way to find and collect Mist Flower Corolla in Genshin Impact is to grab it in the wild as you see it since there is no easy way to farm it.
👉 Discover more in this in-depth guide.