nike / Kamihime Project R - Change status icon sort order

// ==UserScript==
// @name         Kamihime Project R - Change status icon sort order
// @description  Changes default status icon sort order. New statuses are added at correct positions. 
// @updateURL    https://openuserjs.org/meta/nike/Kamihime_Project_R_-_Change_status_icon_sort_order.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 intervalFixStatusSort = setInterval(function() {
        if (typeof kh !== 'undefined' && kh.StatusEffectIconHandler && kh.StatusEffect) {
            clearInterval(intervalFixStatusSort);
			
			if(!kh.iconOrderChanged) {
				kh.StatusEffectIconHandler.prototype.__getIconSortNumber = function(t) {
					return t._id
				}
			}
			
            kh.StatusEffectIconHandler.prototype.pushStatusEffect = function(t) {
                if (null == t) {
                    var i = "WARNING: KHStatusEffectIconHandler.pushStatusEffect: status effect not found on the battle world";
                    return s.warn(i),
                        kh.createInstance("logger").reportBattleStatusEffects(cc.director.getRunningScene().__instanceId, {
                            status_effect_list: _.invoke(kh.createInstance("battleWorld").statusEffectList, "getId")
                        }),
                        void kh.createInstance("logger").reportJsException(i)
                }
                if (null != t.getType()) {
                    this.removeStatusEffect(t);
                    var newList = []
                    this._statusEffectList.forEach((x) => newList.push(x))
                    newList.push(t)
                    var sortedList = newList.sort((a, b) => {
                        var aGroup = this.__getIconGroupNumber(a)
                        var bGroup = this.__getIconGroupNumber(b)
                        var result
                        if (aGroup != bGroup) {
                            result = aGroup - bGroup
                        } else {
                            result = 0
                        }
                        return result
                    })
                    sortedList = sortedList.sort((a, b) => {
                        var aGroup = this.__getIconGroupNumber(a)
                        var bGroup = this.__getIconGroupNumber(b)
                        var result
                        if (aGroup == bGroup) {
                            result = this.__getIconSortNumber(a) - this.__getIconSortNumber(b)
                        } else {
                            result = 0
                        }
                        return result
                    })
                    this._statusEffectList.splice(0, this._statusEffectList.length)
                    sortedList.forEach((x) => this._statusEffectList.push(x))
                }
            }

            kh.newEnemyStatusIconGroups = new Map([
                [1118, 12],
                [1119, 12],
                [546, 12],
                [608, 12],
                [561, 12],
                [572, 12],
            ]);

            kh.StatusEffect.prototype.getEnemyIconGroupNumber = function() {
                let changedEnemyStatusGroup = kh.newEnemyStatusIconGroups.get(this._id)
                let group
                if (changedEnemyStatusGroup) {
                    group = changedEnemyStatusGroup
                } else {
                    group = this._enemySortGroupNumber
                }
                return group
            };

            kh.changedIconOrder = [

                /* AFFLICTION BLOCK */
                47,
                362,

                /* SPECIAL TOKENS */


                /* OFFENSIVE */
				
				// Damage dealt up (Byakko)
				377,
                // Rampage
                78,
                // Follow Up
                187,
                // Spread
                237,
                // GDA
                27,
                // GTA
                28,
                // DA
                23,
                196,
                168,
                40005,
                // TA
                24,
                169,
                1461,
                40006,
                // atk up
                6,
                5,
                7,
                9,
                40001,
                // special atk up
                276,
                254,
                40033,
                // vigor
                176,
                // fire atk up
                101,
                40009,
                // water atk up
                102,
                40010,
                // wind atk up
                103,
                40011,
                // thunder atk up
                104,
                40012,
                // light atk up
                105,
                40013,
                // dark atk up
                106,
                40014,
                // abi dmg
                19,
                20,
                96,
                1314,
                // max abi dmg
                188,
                194,
                327,
                1313,
                1051,
                40038,
                // burst dmg
                137,
                88,
                157,
                183,
                // max burst dmg
                152,
                162,
                521,
                40036,
                // natk dmg
                238,
                388,
                // max natk dmg
                185,
                198,
                40037,
                // stinger
                139,
                170,
                40034,

                /* DEFENSIVE */

                // def up
                14,
                15,
                13,
                74,
                1213,
                164,
                40003,
                // dmg cut
                1019,
                37,
                38,
                // fire rst up
                113,
                40015,
                // water rst up
                114,
                40016,
                // wind rst up
                115,
                40017,
                // thunder rst up
                116,
                40018,
                // light rst up
                117,
                40019,
                // dark rst up
                118,
                40020,
                // phantom rst up
                505,
                40039,

                /* AFFLICTION DEBUFFS */
                22,
                214,

                /* ATK DEBUFF */
                // DA down
                25,
                40007,
                // TA down
                26,
                40008,
                // atk down 
                10,
                12,
                11,
                1118, // perseus
                40002,

                // fire atk down
                107,
                546,
                40021,
                // water atk down
                108,
                40022,
                // wind atk down
                109,
                40023,
                // thunder atk down
                110,
                561,
                40024,
                // light atk down
                111,
                40025,
                // dark atk down
                112,
                40026,
                // phantom atk down
                476,

                /* DEF DEBUFF */

                // def down
                16,
                18,
                17,
                158,
                1119, // perseus
                40004,
                // fire rst down
                119,
                // water rst down
                120,
                608,
                // wind rst down
                121,
                572,
                // thunder rst down
                122,
                // light rst down
                123,
                // dark rst down
                124,
                // phantom rst down
                477,

                /* UTILITY + REST */
                // affliction rate up
                242,
                419
            ]

            kh.StatusEffectIconHandler.prototype.__getIconSortNumber = function(t) {
                let changedOrder = kh.changedIconOrder.indexOf(t._id)
                if (changedOrder != -1) {
                    return changedOrder
                } else {
                    return t._id + 10000000
                }
            }
            kh.iconOrderChanged = true
        }
    }, 10);

})();