forked from nyamu-amq/amq_scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
amqAutoReady.user.js
143 lines (124 loc) · 3.94 KB
/
amqAutoReady.user.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
// ==UserScript==
// @name AMQ Auto Ready
// @namespace https://github.com/nyamu-amq
// @version 0.8
// @description
// @author nyamu
// @match https://animemusicquiz.com/*
// @grant none
// @require https://raw.githubusercontent.com/joske2865/AMQ-Scripts/master/common/amqScriptInfo.js
// ==/UserScript==
if (document.getElementById('startPage')) {
return;
}
{
let auto_ready=Cookies.get('auto_ready');
if(auto_ready!=undefined) {
localStorage.setItem('auto_ready', auto_ready);
Cookies.set('auto_ready', "", { expires: 0 });
}
}
var isAutoReady=localStorage.getItem('auto_ready')=="true";
var isAutoSpec=false;
var isAutoStart=false;
new Listener("Room Settings Changed", (changes) => {
setTimeout(() => { checkReady(); },1);
}).bindListener();
new Listener("Spectator Change To Player", (player) => {
if (player.name === selfName) {
setTimeout(() => { checkReady(); checkStart(); },1);
}
}).bindListener();
new Listener("Host Promotion", (payload) => {
setTimeout(() => { checkReady(); },1);
}).bindListener();
function checkReady() {
if(!isAutoReady || !lobby.inLobby || lobby.isHost || lobby.isSpectator || lobby.isReady || quiz.gameMode === "Ranked") return;
lobby.fireMainButtonEvent();
}
function checkStart() {
if(!isAutoStart || !lobby.inLobby || !lobby.isHost || quiz.gameMode === "Ranked") return;
setTimeout(() => {
if(!checkAllPlayersReady()) return;
lobby.fireMainButtonEvent();
},1);
}
function checkAllPlayersReady() {
for(var player of Object.values(lobby.players)) {
if(!player.ready) return false;
}
return true;
};
ViewChanger.prototype.changeView = (function() {
var old=ViewChanger.prototype.changeView;
return function() {
old.apply(this,arguments);
setTimeout(() => { onViewChanged(); },1);
}
})();
function onViewChanged() {
if(viewChanger.currentView=="lobby") {
if(isAutoSpec) {
if(!lobby.isSpectator) lobby.changeToSpectator(selfName)
}
else {
checkReady();
if(lobby.numberOfPlayers<2) checkStart();
}
}
isAutoSpec=false;
}
function dockeyup(event) {
if(event.altKey && event.keyCode=='82') {
if(event.shiftKey) {
toggleAutoSpec();
}
else {
isAutoReady=!isAutoReady;
localStorage.setItem('auto_ready', isAutoReady);
chatSystemMessage(isAutoReady?"Enabled Auto Ready":"Disabled Auto Ready");
}
}
if(event.shiftKey && event.ctrlKey && event.keyCode=='83') {
toggleAutoStart();
}
}
document.addEventListener('keyup', dockeyup, false);
function toggleAutoSpec() {
if(!quiz.inQuiz) return;
isAutoSpec=!isAutoSpec;
chatSystemMessage(isAutoSpec?"Enabled Auto Spec":"Disabled Auto Spec");
}
function toggleAutoStart() {
isAutoStart=!isAutoStart;
chatSystemMessage(isAutoStart?"Enabled Auto Start":"Disabled Auto Start");
}
function chatSystemMessage(msg) {
if(!gameChat.isShown()) return;
gameChat.systemMessage(msg);
}
new Listener("Join Game", (response) => {
if(response.error) return;
notifyAutoReady();
}).bindListener();
new Listener("Spectate Game", (response) => {
if(response.error) return;
notifyAutoReady();
}).bindListener();
function notifyAutoReady() {
if(quiz.gameMode === "Ranked") return;
gameChat.systemMessage(isAutoReady?"Auto Ready is Enabled. Press [ALT+R] to disable.":"Auto Ready is Disabled. Press [ALT+R] to enable.");
gameChat.systemMessage(isAutoStart?"Auto Start is Enabled. Press [CTRL+SHIFT+S] to disable.":"Auto Start is Disabled. Press [CTRL+SHIFT+S] to enable.");
}
new Listener("Player Ready Change", (change) => {
checkStart();
}).bindListener();
AMQ_addScriptData({
name: "Auto Ready",
author: "nyamu",
description: `
<p>It changes your state to ready automatically when you are in lobby. Even when settings are changed. You can unready by clicking unready button manually.</p>
<p>You can toggle it with [ALT+R]. Default is off.</p>
<p>Dedicated to lazists.</p>
`
});