Advertisement
SpyMomiji

巴哈獲選者天天崩潰 v1.0c (tampermonkey user script)

Jul 17th, 2021 (edited)
883
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         巴哈獲選者天天崩潰
  3. // @namespace    https://www.plurk.com/SpyMomiji
  4. // @version      1.0c
  5. // @description  崩潰永遠跟隨獲選者。 強制換皮,單機版
  6. // @author       SpyMomiji
  7. // @match        https://home.gamer.com.tw/*
  8. // @match        https://forum.gamer.com.tw/*
  9. // @icon         https://www.google.com/s2/favicons?domain=gamer.com.tw
  10. // @grant        none
  11. // @run-at document-body
  12. // ==/UserScript==
  13.  
  14. (function() {
  15.     'use strict';
  16.  
  17. let A2058_CRASH = "https://i.imgur.com/QAeDuWA.png";
  18. let UGLY = "https://avatar2.bahamut.com.tw/avataruserpic/a/2/a2058/a2058.png"
  19.  
  20.  
  21. //replace ugly-avatar let A2058 CRASH at home
  22. if(/https:\/\/home.gamer.com.tw\/.*.php\?.*(owner=A2058).*/i.test(location.href)){
  23.  
  24.     function letCrash(img){
  25.         if(img.tagName != "IMG") return false;
  26.         if(img.src == UGLY) img.src = A2058_CRASH;
  27.         if(img.srcset == UGLY) img.srcset = A2058_CRASH;
  28.         return true;
  29.     }
  30.    
  31.     function foreach(collection, func){
  32.         for(var i=0; i<collection.length; i++ )
  33.             func(collection[i],i)
  34.     }
  35.    
  36.     function busyWaiting(cat, todo){
  37.         let intID = setInterval(function(){
  38.             if(cat() || document.readyState=="complete"){
  39.                 clearInterval(intID);
  40.                 todo();
  41.             }
  42.         },1);
  43.     }
  44.    
  45.     let rboxTraceStat = 0;
  46.     let bhRboxDOM;
  47.    
  48.     busyWaiting(
  49.         function(){
  50.             let testDOM;
  51.             switch(rboxTraceStat){
  52.                 case 0:
  53.                 testDOM = document.getElementsByClassName('BH-rbox MSG-list2');
  54.                 if(testDOM && testDOM[0]){
  55.                     rboxTraceStat = 1;
  56.                     bhRboxDOM = testDOM[0]
  57.                 }else return false;
  58.                
  59.                 case 1:
  60.                 testDOM = bhRboxDOM.getElementsByTagName('img');
  61.                 if(testDOM){
  62.                     rboxTraceStat = 2;
  63.                     bhRboxDOM = testDOM
  64.                 }else return false;
  65.                
  66.                 case 2:
  67.                 testDOM = false;
  68.                 foreach(bhRboxDOM, img => {
  69.                     if(img.className.match('MSG-myavatar')){
  70.                         testDOM |= letCrash(img);
  71.                     }
  72.                 })
  73.                 return testDOM;
  74.             }
  75.             return false;
  76.         },
  77.         function(){
  78.             console.warn('小屋側邊崩潰成功');
  79.         }
  80.     )
  81.    
  82.     busyWaiting(
  83.         function(){
  84.             return Boolean(document.getElementById("BH-slave"))||
  85.                     Boolean(document.getElementById("BH-pagebtn"));
  86.         },
  87.         function(){
  88.             let bhMaster = document.getElementById("BH-master");
  89.             if(bhMaster){
  90.                 let searchArea = bhMaster.getElementsByClassName('HOME-mainbox1');
  91.                
  92.                 foreach(searchArea, box =>{
  93.                     if(box.tagName != "DIV") return;
  94.                     try{
  95.                         foreach(box.getElementsByClassName('HOME-mainbox1a'), boxA =>{
  96.                             foreach(boxA.getElementsByTagName('img'), letCrash )
  97.                         })
  98.                     }
  99.                     catch(e){
  100.                         console.warn('小屋創作崩潰失敗');
  101.                     }
  102.                 })
  103.                
  104.                
  105.             }
  106.         }
  107.     )
  108.    
  109. }
  110.  
  111.  
  112. //inject CSS style let A2058 CRASH
  113. function mkEle(n,h){
  114.     let e = document.createElement(n);
  115.     e.innerHTML = h;
  116.     return e;
  117. }
  118.  
  119. document.head.append(mkEle('style',`
  120. div.tippy-tooltip-content .usercard a.usercard__avatar[href=https\\:\\/\\/home\\.gamer\\.com\\.tw\\/A2058],
  121. div.c-section__side a.gamercard[data-gamercard-userid=A2058] {
  122.     background-image: url(${A2058_CRASH});
  123.     background-size: contain;
  124. }
  125.  
  126.  
  127. div.tippy-tooltip-content .usercard a.usercard__avatar[href=https\\:\\/\\/home\\.gamer\\.com\\.tw\\/A2058] img,
  128. div.c-section__side a.gamercard[data-gamercard-userid=A2058] img {
  129.     opacity: 0;
  130. }
  131. `
  132. ))
  133.  
  134. console.log("崩潰了崩潰了")
  135.  
  136. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement