@ -18,88 +18,82 @@
import { definePluginSettings } from "@api/Settings" ;
import { definePluginSettings } from "@api/Settings" ;
import { Devs } from "@utils/constants" ;
import { Devs } from "@utils/constants" ;
import { Logger } from "@utils/Logger" ;
import definePlugin , { OptionType } from "@utils/types" ;
import definePlugin , { OptionType } from "@utils/types" ;
import presetQuotesText from "file://quotes.txt" ;
// These are Xor encrypted to prevent you from spoiling yourself when you read the source code.
const presetQuotes = presetQuotesText . split ( "\n" ) . map ( quote = > /^\s*[^#\s]/ . test ( quote ) && quote . trim ( ) ) . filter ( Boolean ) as string [ ] ;
// don't worry about it :P
const noQuotesQuote = "Did you really disable all loading quotes? What a buffoon you are..." ;
const quotes = [
"Eyrokac" ,
"Rdcg$l`'k|~n" ,
'H`tf$d&iajo+d`{"' ,
"Sucqplh`(Eclhualva()&" ,
"Lncgmka'8KNMDC,shpanf'`x./," ,
"Ioqweijnfn*IeuvfvAotkfxo./," ,
'Hd{#cp\x7Ft$)nbd!{lq%mig~*\x7Fh`v#mk&sm{gx nd#idjb(a\x7Ffao"bja&amdkge!Rloìkhf)hyedfjjb*\'^hzdrdmm$lu\'|ao+mnqw$fijxh~bbmg#Tjmîefd+fnp#lpkffz5' ,
"h" ,
"sijklm&cam*rot\"hjjq'|ak\x7F xmv#wc'ep*mawmvvlrb(|ynr>\"Aqq&cgg-\x7F ugoh%rom)e\x7Fhdpp%$" ,
'Tnfb}"u\'~`nno!kp$vvhfzeyee"a}%Tfam*Xh`fls%Jboldos-"lj`&hn)~ce!`jcbct|)gdbhnf$wikm$zgaxkmc%afely+og"144?\'ign+iu%p$qisiefr gpfa$' ,
"Ndtfv%ahfgk+ghtf$|ir(|z' Oguaw&`ggdj mgw$|ir(me|n" ,
"(!ͣ³$͙ʐ'ͩ¹#" ,
"(ネ◗ロ◑,マ-2ャユ✬" ,
"Ynw#hjil(ze+psgwp|&sgmkr!" ,
"Tikmolh`(fl+a!dvjk\x7F'y|e\x7Fe/,-" ,
"3/3750?5><9>885:7" ,
"mdmt" ,
"Wdn`khc+(oxbeof" ,
'Ig"zkp*\'g{*xolglj`&~g|*gowg/$mgt(Eclm`.#ticf{l*xed"wl`&Kangj igbhqn\'d`dn `v#lqrw{3%$bhv-h|)kangj_imwhlhb' ,
"Tscmw%Tnoa~x" ,
"I‘ f#npus(ec`e!vl$lhsm{`ncu\"ekw&f(defeov-$Rnf|)sdu‘ pf$wcam{ceg!vl$du'D`d~x-\"jw%oi(okht-\"DJP)Kag s,!mq$du'A‐ |n sg`akrkq)~jkdl#pj&diefbnf\"jp)&@F\\*{ltq#Hlhrp'" ,
"Ynw$v`&cg`dl fml`%rhlhs*" ,
"Dnl$p%qhz{s' hv$w%hh|aceg!;#gpvt(fl+cndea`&dg|fon&v#wjjqm(" ,
"\ud83d)pft`gs(ec`e!13$qojmz#" ,
"a!njcmr'ide~nu\"lb%rheoedldpz$lu'gbkr" ,
"dn\"zkp&kg o4" ,
"hnpqkw" ,
"sn\"fau " ,
"Sn\"tmqnh}}*musvkaw&flf&+ldv$w%lr{}*aulr#vlao|)cetn\"jp$" ,
"Dxkmc%ot(hhxomwwai '{hln" ,
"hd{#}js&(pe~'sg#gprb(3#\"" ,
"hd{b${" ,
"<;vqkijbq33271:56<3799?24944:" ,
"Thof$lu'ofdn,!qsefc'az*bnrcma+&Om{o+iu\"`khct$)bnrd\"bcdoi&" ,
"snofplkb{)c 'r\"lod '|f*aurv#cpno`abchijklmno" ,
"Wdn`khc'|f*eghl{%"
] ;
const settings = definePluginSettings ( {
const settings = definePluginSettings ( {
replaceEvents : {
replaceEvents : {
description : " Replace Event Quotes too ",
description : "Should this plugin also apply during events with special event themed quotes? (e.g. Halloween)" ,
type : OptionType . BOOLEAN ,
type : OptionType . BOOLEAN ,
default : true
default : true
}
} ,
enablePluginPresetQuotes : {
description : "Enable the quotes preset by this plugin" ,
type : OptionType . BOOLEAN ,
default : true
} ,
enableDiscordPresetQuotes : {
description : "Enable Discord's preset quotes (including event quotes, during events)" ,
type : OptionType . BOOLEAN ,
default : false
} ,
additionalQuotes : {
description : "Additional custom quotes to possibly appear, separated by the below delimiter" ,
type : OptionType . STRING ,
default : "" ,
} ,
additionalQuotesDelimiter : {
description : "Delimiter for additional quotes" ,
type : OptionType . STRING ,
default : "|" ,
} ,
} ) ;
} ) ;
export default definePlugin ( {
export default definePlugin ( {
name : "LoadingQuotes" ,
name : "LoadingQuotes" ,
description : "Replace Discords loading quotes" ,
description : "Replace Discords loading quotes" ,
authors : [ Devs . Ven , Devs . KraXen72 ] ,
authors : [ Devs . Ven , Devs . KraXen72 , Devs . UlyssesZhan ] ,
settings ,
settings ,
patches : [
patches : [
{
{
find : ".LOADING_DID_YOU_KNOW}" ,
find : ".LOADING_DID_YOU_KNOW ",
replacement : [
replacement : [
{
{
match : /"_loadingText",function\(\)\{/ ,
match : /"_loadingText" .+?(?=(\i)\[.{0,10}\.random) /,
replace : "$&return $self.quote;" ,
replace : "$& $self.mutateQuotes($1),"
} ,
} ,
{
{
match : /"_eventLoadingText",function\(\)\{/ ,
match : /"_eventLoadingText" .+?(?=(\i)\[.{0,10}\.random) /,
replace : "$&return $self.quote;" ,
replace : "$& $self.mutateQuotes($1), ",
predicate : ( ) = > settings . store . replaceEvents
predicate : ( ) = > settings . store . replaceEvents
}
}
] ,
]
} ,
} ,
] ,
] ,
xor ( quote : string ) {
mutateQuotes ( quotes : string [ ] ) {
const key = "read if cute" ;
try {
const codes = Array . from ( quote , ( s , i ) = > s . charCodeAt ( 0 ) ^ ( i % key . length ) ) ;
const { enableDiscordPresetQuotes , additionalQuotes , additionalQuotesDelimiter , enablePluginPresetQuotes } = settings . store ;
return String . fromCharCode ( . . . codes ) ;
} ,
if ( ! enableDiscordPresetQuotes )
quotes . length = 0 ;
if ( enablePluginPresetQuotes )
quotes . push ( . . . presetQuotes ) ;
quotes . push ( . . . additionalQuotes . split ( additionalQuotesDelimiter ) . filter ( Boolean ) ) ;
get quote() {
if ( ! quotes . length )
return this . xor ( quotes [ Math . floor ( Math . random ( ) * quotes . length ) ] ) ;
quotes . push ( noQuotesQuote ) ;
} catch ( e ) {
new Logger ( "LoadingQuotes" ) . error ( "Failed to mutate quotes" , e ) ;
}
}
}
} ) ;
} ) ;