perfectionist-plugins 2.4.3 → 2.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -72
- package/auto-accept.js +26 -4
- package/better-client.js +796 -796
- package/dodge-helper.js +49 -7
- package/package.json +1 -1
- package/perfectionist-utils.js +22 -22
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Perfectionism
|
|
4
4
|
|
|
5
|
-
**Small plugins that fix the annoying parts of League of Legends
|
|
5
|
+
**Small plugins that fix the annoying parts of the League of Legends client.**
|
|
6
6
|
|
|
7
7
|
Built for [Pengu Loader](https://pengu.lol)
|
|
8
8
|
|
|
@@ -16,85 +16,29 @@ Built for [Pengu Loader](https://pengu.lol)
|
|
|
16
16
|
|
|
17
17
|
## Plugins
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
</tr>
|
|
30
|
-
<tr>
|
|
31
|
-
<td> </td>
|
|
32
|
-
</tr>
|
|
33
|
-
<tr>
|
|
34
|
-
<th align="left">🎨 Hide Unowned Skins</th>
|
|
35
|
-
</tr>
|
|
36
|
-
<tr>
|
|
37
|
-
<td>
|
|
38
|
-
In champ select, the skin carousel only shows the skins you own for the champion you picked.
|
|
39
|
-
<br><br>
|
|
40
|
-
The list is filtered where the client reads it, so the carousel, the arrows and the dots all move through owned
|
|
41
|
-
skins only, and the ones that are left keep their normal spacing.
|
|
42
|
-
</td>
|
|
43
|
-
</tr>
|
|
44
|
-
<tr>
|
|
45
|
-
<td> </td>
|
|
46
|
-
</tr>
|
|
47
|
-
<tr>
|
|
48
|
-
<th align="left">🔓 Unlock Profile Skins</th>
|
|
49
|
-
</tr>
|
|
50
|
-
<tr>
|
|
51
|
-
<td>
|
|
52
|
-
In the <b>Set profile background</b> window, every skin shows as unlocked, even the event skins (Signature).
|
|
53
|
-
<br><br>
|
|
54
|
-
Browse the full list and pick any skin you like as your profile background.
|
|
55
|
-
</td>
|
|
56
|
-
</tr>
|
|
57
|
-
<tr>
|
|
58
|
-
<td> </td>
|
|
59
|
-
</tr>
|
|
60
|
-
<tr>
|
|
61
|
-
<th align="left">🎁 Auto Claimer</th>
|
|
62
|
-
</tr>
|
|
63
|
-
<tr>
|
|
64
|
-
<td>
|
|
65
|
-
Claims every reward for you the moment it becomes claimable — event tracks, missions and the TFT Battle Pass.
|
|
66
|
-
<br><br>
|
|
67
|
-
Three optional extras: auto-buy shop items Riot lists for 1 BE, auto-open mystery loot (icons, ward skins), and auto-open chests with keys.
|
|
68
|
-
</td>
|
|
69
|
-
</tr>
|
|
70
|
-
<tr>
|
|
71
|
-
<td> </td>
|
|
72
|
-
</tr>
|
|
73
|
-
<tr>
|
|
74
|
-
<th align="left">🚀 BetterClient</th>
|
|
75
|
-
</tr>
|
|
76
|
-
<tr>
|
|
77
|
-
<td>
|
|
78
|
-
Debloats the client without changing how it looks or behaves and fixes bugs.
|
|
79
|
-
<br><br>
|
|
80
|
-
For weaker machines there is one optional switch, <b>Performance mode</b>, which drops background blur,
|
|
81
|
-
decorative animation and looping background video. Leave it off and the client is pixel-identical.
|
|
82
|
-
</td>
|
|
83
|
-
</tr>
|
|
84
|
-
</table>
|
|
19
|
+
| Plugin | What it does |
|
|
20
|
+
| --- | --- |
|
|
21
|
+
| 🚀 **BetterClient** | Makes the client lighter and smoother without changing how it looks or behaves. Cuts tracking and repeated requests and fixes small bugs. For weaker PCs there is one optional switch, **Performance mode**, which drops background blur, decorative animation and looping background video. Leave it off and the client is pixel-identical. |
|
|
22
|
+
| 🛡️ **Ban Blocker** | Adds a **BLOCK** button to your teammates in champ select. While a teammate is blocked, the champion they are about to ban is prepicked for you on your own pick turn, so their ban can never land on it. |
|
|
23
|
+
| 🔓 **Unlock Profile Skins** | In the **Set profile background** window, every skin shows as unlocked, even event skins (Signature). Browse the full list and pick any skin you like. |
|
|
24
|
+
| 🎨 **Hide Unowned Skins** | In champ select, the skin carousel only shows the skins you own for the champion you picked. The arrows and dots only move through owned skins, and the ones that are left keep their normal spacing. |
|
|
25
|
+
| ✅ **Auto Accept** | Accepts the match for you when the ready check pops up. Add an optional delay, and switch it on or off from the lobby footer. |
|
|
26
|
+
| 🚪 **Dodge Helper** | Adds a button to leave champ select: **DODGE** in ranked Solo/Duo and Flex, with the estimated LP you will lose, and **QUIT** in every other mode. |
|
|
27
|
+
| 🎁 **Auto Claimer** | Claims rewards for you the moment they become claimable: event tracks, missions and the TFT Battle Pass. Three optional extras: auto-buy shop items Riot lists for 1 BE, auto-open mystery loot (icons, ward skins), and auto-open chests with keys. |
|
|
28
|
+
| 📬 **Auto Read** | Marks quests, loot, Clash, TFT and client notices as read, so no badge or dot stays lit. |
|
|
85
29
|
|
|
86
30
|
## Install
|
|
87
31
|
|
|
88
32
|
1. Download this repo.
|
|
89
33
|
2. Move the `Perfectionism` folder into your Pengu Loader `plugins` folder.
|
|
90
34
|
3. Restart the League Client.
|
|
35
|
+
4. Open **Settings → Perfectionism** to turn plugins on or off and change their options.
|
|
91
36
|
|
|
92
37
|
## Updates
|
|
93
38
|
|
|
94
|
-
Every time the client starts, the loader checks npm for a newer version and runs it.
|
|
95
|
-
a new version
|
|
96
|
-
|
|
97
|
-
moment (never in the middle of a game). You never replace files by hand.
|
|
39
|
+
Perfectionism updates itself. Every time the client starts, the loader checks npm for a newer version and runs it.
|
|
40
|
+
If a new version appears while the client is already open, it downloads it with a progress window and restarts the
|
|
41
|
+
client at a safe moment (never in the middle of a game). You never replace files by hand.
|
|
98
42
|
|
|
99
43
|
<br>
|
|
100
44
|
|
|
@@ -106,4 +50,4 @@ Made by **Sr. King** 👑
|
|
|
106
50
|
|
|
107
51
|
If these helped you, a ⭐ on the repo is always nice.
|
|
108
52
|
|
|
109
|
-
</div>
|
|
53
|
+
</div>
|
package/auto-accept.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const PLUGIN_ID = "auto-accept";
|
|
2
|
-
export const version = "1.1.
|
|
2
|
+
export const version = "1.1.1";
|
|
3
3
|
|
|
4
4
|
const PHASE_URI = "/lol-gameflow/v1/gameflow-phase";
|
|
5
5
|
const READY_CHECK_URI = "/lol-matchmaking/v1/ready-check";
|
|
@@ -14,8 +14,12 @@ const ROOT_ID = "perfAutoAccept";
|
|
|
14
14
|
const TOGGLE_ID = "perfAutoAcceptToggle";
|
|
15
15
|
const DELAY_INPUT_ID = "perfAutoAcceptDelay";
|
|
16
16
|
|
|
17
|
-
const CSS = `#perfAutoAccept {
|
|
18
|
-
|
|
17
|
+
const CSS = `#perfAutoAccept {
|
|
18
|
+
display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important;
|
|
19
|
+
align-items: center !important; gap: 8px !important; width: max-content !important;
|
|
20
|
+
}
|
|
21
|
+
#perfAutoAccept > * { flex: 0 0 auto !important; }
|
|
22
|
+
#perfAutoAccept .auto-accept-button { display: inline-flex !important; align-items: center !important; cursor: pointer !important; }
|
|
19
23
|
#perfAutoAccept .auto-accept-button-text {
|
|
20
24
|
font-family: var(--font-body, "LoL Body", Arial, sans-serif) !important;
|
|
21
25
|
font-size: 12px !important; letter-spacing: 0.3px !important; color: #a09b8c !important;
|
|
@@ -23,7 +27,7 @@ const CSS = `#perfAutoAccept { display: flex !important; align-items: center !im
|
|
|
23
27
|
#perfAutoAccept .auto-accept-button[selected] .auto-accept-button-text { color: #f0e6d2 !important; }
|
|
24
28
|
#perfAutoAccept .auto-accept-delay {
|
|
25
29
|
display: flex !important; align-items: center !important; box-sizing: border-box !important;
|
|
26
|
-
width: 82px !important; height: 24px !important; margin-left:
|
|
30
|
+
width: 82px !important; height: 24px !important; margin-left: 0 !important;
|
|
27
31
|
background: #1e2328 !important; border: 1px solid #785a28 !important; border-radius: 0 !important;
|
|
28
32
|
transition: border-color 0.15s ease, background-color 0.15s ease !important;
|
|
29
33
|
}
|
|
@@ -239,6 +243,8 @@ function buildButton() {
|
|
|
239
243
|
return root;
|
|
240
244
|
}
|
|
241
245
|
|
|
246
|
+
let buttonRetry = null;
|
|
247
|
+
|
|
242
248
|
function footer() {
|
|
243
249
|
return (
|
|
244
250
|
document.querySelector(".v2-footer-notifications.ember-view") ??
|
|
@@ -246,8 +252,22 @@ function footer() {
|
|
|
246
252
|
);
|
|
247
253
|
}
|
|
248
254
|
|
|
255
|
+
function gameSelectOpen() {
|
|
256
|
+
try {
|
|
257
|
+
return !!document.querySelector(".parties-game-select-screen.game-select-show");
|
|
258
|
+
} catch {
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
249
263
|
function ensureButton() {
|
|
250
264
|
if (!active) return;
|
|
265
|
+
clearTimeout(buttonRetry);
|
|
266
|
+
buttonRetry = null;
|
|
267
|
+
if (gameSelectOpen()) {
|
|
268
|
+
buttonRetry = setTimeout(ensureButton, 750);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
251
271
|
const host = footer();
|
|
252
272
|
if (!host) return;
|
|
253
273
|
if (!document.getElementById(ROOT_ID)) host.append(buildButton());
|
|
@@ -294,6 +314,8 @@ function onDisable() {
|
|
|
294
314
|
domObserver = null;
|
|
295
315
|
clearTimeout(domTimer);
|
|
296
316
|
domTimer = null;
|
|
317
|
+
clearTimeout(buttonRetry);
|
|
318
|
+
buttonRetry = null;
|
|
297
319
|
document.getElementById(ROOT_ID)?.remove();
|
|
298
320
|
removeStyle?.();
|
|
299
321
|
removeStyle = null;
|