(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();
}
})();
From Bulbapedia, the community-driven Pokémon encyclopedia.
Jump to navigationJump to search ← Hydreigon
By leveling up
|
|
- Bold indicates a move that gets STAB when used by Hydreigon
- Italic indicates a move that gets STAB only when used by an evolution of Hydreigon
- Click on the generation numbers at the top to see level-up moves from other generations
|
By TM
|
|
- Bold indicates a move that gets STAB when used by Hydreigon
- Italic indicates a move that gets STAB only when used by an evolution of Hydreigon
- Click on the generation numbers at the top to see TM moves from other generations
|
By breeding
|
|
- Moves marked with an asterisk (*) must be chain bred onto Hydreigon in Generation VII
- Moves marked with a double dagger (‡) can only be bred from a Pokémon who learned the move in an earlier generation.
- Moves marked with a superscript game abbreviation can only be bred onto Hydreigon in that game.
- Bold indicates a move that gets STAB when used by Hydreigon
- Italic indicates a move that gets STAB only when used by an evolution of Hydreigon
- Click on the generation numbers at the top to see Egg moves from other generations
|
By tutoring
|
|
- A black or white abbreviation in a colored box indicates that Hydreigon can be tutored the move in that game
- A colored abbreviation in a white box indicates that Hydreigon cannot be tutored the move in that game
- Bold indicates a move that gets STAB when used by Hydreigon
- Italic indicates a move that gets STAB only when used by an evolution of Hydreigon
- Click on the generation numbers at the top to see Move Tutor moves from other generations
|
By a prior evolution
|
|
- Bold indicates a move that gets STAB when used by Hydreigon
- Italic indicates a move that gets STAB only when used by an evolution of Hydreigon
- Click on the generation numbers at the top to see moves from other generations
|
By transfer from another generation
|
|
- A striped background indicates a generation in which the move can only be obtained via event or as a special move
- Bold indicates a move that gets STAB when used by Hydreigon
- Italic indicates a move that gets STAB only when used by an evolution of Hydreigon
- Click on the generation numbers at the top to see transfer-only moves for other generations
|