nike / Kamihime Project R - Display player's PP and Dmg on raid MVP popup

// ==UserScript==
// @name         Kamihime Project R - Display player's PP and Dmg on raid MVP popup
// @description  Displays player's PP and Dmg on the raid MVP popup even if wasn't Host/Mvp/vMvp
// @updateURL    https://openuserjs.org/meta/nike/Kamihime_Project_R_-_Display_players_PP_and_Dmg_on_raid_MVP_popup.meta.js
// @license      MIT
// @match        https://gnkh-api-r.prod.nkh.dmmgames.com/front/cocos2d-proj/components-pc/game/app.html
// @run-at       document-start
// ==/UserScript==
(function () {

  var interval = setInterval(function () {
    if (typeof kh !== 'undefined' && kh.PopupFactoryMvp) {
      clearInterval(interval);

      let originalAddMethods = kh.PopupFactoryMvp.prototype._addMethodsToPopup

      kh.PopupFactoryMvp.prototype._addMethodsToPopup = function (popup) {
        originalAddMethods.apply(this, arguments)

        var gData = kh.gVal.quest.battleResultData
        setTimeout(() => {
          var layer = ccui.helper.seekWidgetByName(popup, "Layer")
          var personalPPNode = layer.seekWidgetByName("personal_pp_node")
          if (!personalPPNode) {
            personalPPNode = new ccui.Text()
            personalPPNode.setName("personal_pp_node")
            personalPPNode.setPosition(168, 212)
            personalPPNode.setScale(1.0 / 0.7)
            personalPPNode.setFontSize(15);
            personalPPNode.setAnchorPoint(0, 0.5)
            personalPPNode.setFontName("GameFont")
            personalPPNode.enableOutline(cc.color(32, 32, 32), 1)
            personalPPNode.setText("" + gData.raid_stats.raid_points_gained)
            layer.addChild(personalPPNode)
          }
          var personalDMGNode = layer.seekWidgetByName("personal_dmg_node")
          if (!personalDMGNode) {
            personalDMGNode = new ccui.Text()
            personalDMGNode.setName("personal_dmg_node")
            personalDMGNode.setPosition(431, 212)
            personalDMGNode.setScale(1.0 / 0.7)
            personalDMGNode.setFontSize(15);
            personalDMGNode.setAnchorPoint(0, 0.5)
            personalDMGNode.setFontName("GameFont")
            personalDMGNode.enableOutline(cc.color(32, 32, 32, ), 1)
            personalDMGNode.setText("" + gData.raid_stats.damage_done)
            layer.addChild(personalDMGNode)
          }
          var personalPPLabel = layer.seekWidgetByName("personal_pp_label")
          if (!personalPPLabel) {
            personalPPLabel = new ccui.Text()
            personalPPLabel.setName("personal_pp_label")
            personalPPLabel.setPosition(61, 212)
            personalPPLabel.setScale(1.0 / 0.7)
            personalPPLabel.setFontSize(12);
            personalPPLabel.setAnchorPoint(0, 0.5)
            personalPPLabel.setFontName("GameFont")
            personalPPLabel.enableOutline(cc.color(12, 12, 32), 2)
            personalPPLabel.setText("⬥Total PP")
            layer.addChild(personalPPLabel)
          }
          var personalDMGLabel = layer.seekWidgetByName("personal_dmg_label")
          if (!personalDMGLabel) {
            personalDMGLabel = new ccui.Text()
            personalDMGLabel.setName("personal_dmg_label")
            personalDMGLabel.setPosition(320, 212)
            personalDMGLabel.setScale(1.0 / 0.7)
            personalDMGLabel.setFontSize(12);
            personalDMGLabel.setAnchorPoint(0, 0.5)
            personalDMGLabel.setFontName("GameFont")
            personalDMGLabel.enableOutline(cc.color(32, 12, 12), 2)
            personalDMGLabel.setText("⬥Total Dmg")
            layer.addChild(personalDMGLabel)
          }
        }, 50)
      }
    }
  }, 10);

})();