nike / Kamihime Project R - More character statuses

// ==UserScript==
// @name         Kamihime Project R - More character statuses
// @description  Displays more character statuses, max 38 instead of 8
// @updateURL    https://openuserjs.org/meta/nike/Kamihime_Project_R_-_More_character_statuses.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.CharacterCard) {
            clearInterval(interval);
            kh.CHARACTER_PANEL_STATUS_ICONS.COUNT = 38

            var generateStatusUi = function(characterCard, index, x, y, opacity) {
                var newStatusName = "status_" + index.toString()
                var targetStatus = characterCard._widget.seekWidgetByName(newStatusName)
                if (typeof targetStatus === 'undefined' || targetStatus === null) {
                    var status7 = characterCard._widget.seekWidgetByName("status_7")
                    var new_status = khutil.cloneWithAction(status7)
                    new_status.setName(newStatusName)
                    new_status.setPosition(x, y)
                    new_status.setOpacity(opacity)
                    characterCard._widget.addChild(new_status)
                }
            }

            kh.CharacterCard.prototype._initStatusEffectIconHandler = function(rootNode, widgetNamePrefixes) {
                generateStatusUi(this, 8, 190.8633, 11, 255)
                generateStatusUi(this, 9, 210.4537, 19.7952, 255)
                generateStatusUi(this, 10, 219.4537, 39.3856, 255)
                generateStatusUi(this, 11, 219.4537, 60.976, 255)
                generateStatusUi(this, 12, 210.4537, 80.5664, 255)
                generateStatusUi(this, 13, 210.4537 - 21.5904 + 2, 86.5664, 255)
                generateStatusUi(this, 14, 190.8633 - 21.5904, 86.5664, 255)
                generateStatusUi(this, 15, 190.8633 - 21.5904 * 2, 86.5664, 255)
                generateStatusUi(this, 16, 190.8633 - 21.5904 * 3, 86.5664, 255)
                generateStatusUi(this, 17, 190.8633 - 21.5904 * 4, 86.5664, 255)
                generateStatusUi(this, 18, 190.8633 - 21.5904 * 5, 86.5664, 255)
                generateStatusUi(this, 19, 190.8633 - 21.5904 * 6, 86.5664, 255)
                generateStatusUi(this, 20, 190.8633 - 21.5904 * 7, 86.5664, 255)
                generateStatusUi(this, 21, 190.8633 - 21.5904 * 8, 86.5664, 255)
                generateStatusUi(this, 22, 190.8633 - 21.5904 * 9, 86.5664, 255)
                generateStatusUi(this, 23, 190.8633 - 21.5904 * 9, 86.5664 - 21.5904 * 1, 255)
                generateStatusUi(this, 24, 190.8633 - 21.5904 * 9, 86.5664 - 21.5904 * 2, 255)
                generateStatusUi(this, 25, 190.8633 - 21.5904 * 9, 86.5664 - 21.5904 * 3, 255)
                generateStatusUi(this, 26, 190.8633 - 21.5904 * 10, 86.5664, 255)
                generateStatusUi(this, 27, 190.8633 - 21.5904 * 10, 86.5664 - 21.5904 * 1, 255)
                generateStatusUi(this, 28, 190.8633 - 21.5904 * 10, 86.5664 - 21.5904 * 2, 255)
                generateStatusUi(this, 29, 190.8633 - 21.5904 * 10, 86.5664 - 21.5904 * 3, 255)
                generateStatusUi(this, 30, 190.8633 - 21.5904 * 11, 86.5664, 255)
                generateStatusUi(this, 31, 190.8633 - 21.5904 * 11, 86.5664 - 21.5904 * 1, 255)
                generateStatusUi(this, 32, 190.8633 - 21.5904 * 11, 86.5664 - 21.5904 * 2, 255)
                generateStatusUi(this, 33, 190.8633 - 21.5904 * 11, 86.5664 - 21.5904 * 3, 255)
                generateStatusUi(this, 34, 190.8633 - 21.5904 * 12, 86.5664, 255)
                generateStatusUi(this, 35, 190.8633 - 21.5904 * 12, 86.5664 - 21.5904 * 1, 255)
                generateStatusUi(this, 36, 190.8633 - 21.5904 * 12, 86.5664 - 21.5904 * 2, 255)
                generateStatusUi(this, 37, 190.8633 - 21.5904 * 12, 86.5664 - 21.5904 * 3, 255)

                var widgetList = this._setUiArrayList(rootNode, widgetNamePrefixes);
                var statusEffectIconList = _.map(widgetList, function(widget, index) {
                    return kh.createInstance("StatusEffectIcon").init(widget, index);
                }, this);
                return kh.createInstance("StatusEffectIconHandler").init(statusEffectIconList, 'member');
            }
        }
    }, 10);

})();