[PS] Add Rating

Adds in battles, the rating of the player below its sprite.

Du musst eine Erweiterung wie Tampermonkey, Greasemonkey oder Violentmonkey installieren, um dieses Skript zu installieren.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

Sie müssten eine Skript Manager Erweiterung installieren damit sie dieses Skript installieren können

(Ich habe schon ein Skript Manager, Lass mich es installieren!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name             [PS] Add Rating
// @namespace        https://github.com/ikelax/userscripts
// @match            https://play.pokemonshowdown.com/*
// @grant            none
// @version          0.1.0
// @author           Alexander Ikonomou
// @description      Adds in battles, the rating of the player below its sprite.
// @license          MIT
// @supportURL       https://github.com/ikelax/userscripts/issues
// @copyright        2025, Alexander Ikonomou (https://github.com/ikelax)
// @homepageURL      https://github.com/ikelax/userscripts
// @homepage         https://github.com/ikelax/userscripts
// @contributionURL  https://github.com/ikelax/userscripts
// @collaborator     ikelax
// @icon             https://www.google.com/s2/favicons?sz=64&domain=pokemonshowdown.com
// ==/UserScript==

(function () {
  "use strict";

  function addRating(trainer) {
    let trainersprite = trainer.querySelector(`div.trainersprite`);
    let rating = document.createElement("strong");
    rating.innerText = trainersprite.title || "Rating: None";
    rating.id = "rating";
    trainersprite.parentNode.insertBefore(rating, trainersprite.nextSibling);
  }

  function watchForElement(selector, onAppear) {
    const observer = new MutationObserver(() => {
      const element = document.querySelector(selector);

      if (!document.querySelector(`${selector} > strong#rating`)) {
        onAppear(element);
      }
    });

    observer.observe(document.body, {
      childList: true,
      subtree: true,
    });
  }

  watchForElement("div.trainer-far", (trainer) => addRating(trainer));

  watchForElement("div.trainer-near", (trainer) => addRating(trainer));
})();