yes
// ==UserScript== // @name Crystall Pack // @version 1 // @description yes // @namespace by no name // @author #8948(pack by No Name) // @match https://sploop.io/ // @icon https://media.discordapp.net/attachments/906185437389922355/950270738110238802/cyrstal.ioicon.png // @grant none // @run-at document-start // ==/UserScript== (function() { 'use strict'; const [config] = [ { "enabled": true, "id": "54760342-0298-4efa-9dd9-0ae0853ca468", "name": "Crystall texture v2", "filter": { "key": "page-url", "condition": "contains", "value": "sploop.io" }, "rules": [ { "enabled": true, "id": "26943b38-2c48-4079-acba-afec1063525c", "criteria": { "key": "url", "condition": "contains", "value": "/img/entity/hat_1.png" }, "actions": [ { "type": "redirect-to", "details": { "value": "https://media.discordapp.net/attachments/880690143575564339/948131805012312064/bull.io.png" } } ] }, { "enabled": true, "id": "616f7e00-0a9e-43d9-a56c-bd3bd6326401", "criteria": { "key": "url", "condition": "contains", "value": "/img/entity/hat_3.png" }, "actions": [ { "type": "redirect-to", "details": { "value": "https://media.discordapp.net/attachments/880690143575564339/948131805205254164/cyrstal.io.png" } } ] }, { "enabled": true, "id": "c3f5db14-5741-483f-8f8a-dd7df4372e5a", "criteria": { "key": "url", "condition": "contains", "value": "/img/entity/hat_4.png" }, "actions": [ { "type": "redirect-to", "details": { "value": "https://media.discordapp.net/attachments/880690143575564339/948131805603717140/spike.io.png" } } ] }, { "enabled": true, "id": "520fb136-afa6-40e8-897b-c8b5c0bbec35", "criteria": { "key": "url", "condition": "contains", "value": "/img/entity/hat_5.png" }, "actions": [ { "type": "redirect-to", "details": { "value": "https://media.discordapp.net/attachments/880690143575564339/948131805402398740/immunity.io.png" } } ] }, { "enabled": true, "id": "96069f8f-59f7-4e7c-ac83-a7cf79dd422a", "criteria": { "key": "url", "condition": "contains", "value": "/img/entity/hat_6.png" }, "actions": [ { "type": "redirect-to", "details": { "value": "https://media.discordapp.net/attachments/880690143575564339/948131804739690566/boost.io.png" } } ] }, { "enabled": true, "id": "4861f2cb-e86c-4217-8a1e-026d899ee0d5", "criteria": { "key": "url", "condition": "contains", "value": "/img/items/c_katana.png?v=29322399" }, "actions": [ { "type": "redirect-to", "details": { "value": "https://media.discordapp.net/attachments/880690143575564339/948131805805035560/unknown.png" } } ] }, { "enabled": true, "id": "1fafcb2c-bd79-4902-baa1-a6dd2862fbd9", "criteria": { "key": "url", "condition": "contains", "value": "img/skins/body6.png" }, "actions": [ { "type": "redirect-to", "details": { "value": "https://media.discordapp.net/attachments/934750704604684338/943879698067386388/ping_wings_tester.png" } } ] }, { "enabled": true, "id": "c2db51a3-e71e-40cd-947b-ffabf634cd25", "criteria": { "key": "url", "condition": "contains", "value": "/img/entity/windmill_top.png" }, "actions": [ { "type": "redirect-to", "details": { "value": "https://media.discordapp.net/attachments/906185437389922355/943872973784350830/windmill_topyes.png" } } ] }, { "enabled": true, "id": "5b8d580e-9d79-459f-8829-3af95eb51b19", "criteria": { "key": "url", "condition": "contains", "value": "/img/entity/inv_c_katana.png" }, "actions": [ { "type": "redirect-to", "details": { "value": "https://media.discordapp.net/attachments/906185437389922355/950275458811957248/inv_c_katana.png" } } ] }, { "enabled": true, "id": "171a0879-b549-4300-9862-b9f157f4f002", "criteria": { "key": "url", "condition": "contains", "value": "/img/entity/map.png" }, "actions": [ { "type": "redirect-to", "details": { "value": "https://media.discordapp.net/attachments/880690143575564339/949261797028945930/mapheheboi.png" } } ] } ], "description": "Made by No Name and Leprohiko lol" } ]; const remaps = new Map(); const colorRemaps = { "#788F57": "#788F57", "#fcefbb": "#fcefbb", "#2a8b9b": "#2a8b9b" }; //DO NOT TOUCH THE CODE BELOW HERE UNLESS YOU KNOW WHAT YOU ARE DOING! const rules = config.rules; rules.forEach(rule => { const {actions, criteria } = rule; const [action] = actions; const toUrl = action.details.value; const fromUrl = criteria.value; remaps.set(fromUrl, { src: toUrl, scale: 1, }); }) const sfs = Object.getOwnPropertyDescriptor(CanvasRenderingContext2D.prototype, "fillStyle").set; Object.defineProperty(CanvasRenderingContext2D.prototype, "fillStyle", { set(f){ if(colorRemaps[f]) f = colorRemaps[f]; return sfs.call(this, f); } }) const origImage = Image; window.Image = class extends Image { set onload(fn){ this._onloadFn = fn; super.onload = function(){ this.width = this.width * this._scale; this.height = this.height * this._scale; return fn.apply(this, arguments); } } set src(_src){ const [path] = _src.split("?v="); if(remaps.has(path)) { const that_ = this; const {src, scale} = remaps.get(path); _src = src; this._scale = scale; } else this._scale = 1; super.src = _src; } } })();