Больше шуток

This commit is contained in:
2023-03-27 16:51:45 +04:00
parent f90f0c542b
commit f9cbc4461d
8 changed files with 166 additions and 189 deletions
+60
View File
@@ -0,0 +1,60 @@
import { Joke, JokeSettings, StopableJoke } from "../joke";
import $ from "jquery";
import { AprilFoolsJokeClass } from "../handler";
/**
* **Зеркало**
*
* Элементы форума отражаются (по крайней мере, пытаются)
*
* @author Kozhilya
*/
export class CarnivalJoke extends Joke {
settings: CarnivalJokeSettings;
start(): void {
$(this.settings.selector).each((_, elem) => {
const filters: string[] = [];
for (const entry of Object.entries(this.settings.variants)) {
if (!AprilFoolsJokeClass.check(this.settings.variant_chance)) {
continue;
}
filters.push(entry[0].replace('{0}', Math.round(Math.random() * entry[1]).toString()));
}
if (filters.length > 0) {
$(elem).css('filter', filters.join(' '));
}
});
}
}
export class CarnivalJokeSettings implements JokeSettings {
chance: number = 30;
/**
* Селектор всех элементов, которые будут трястись
*/
selector: string = 'img[src*="/avatars/"]';
/**
* Вероятность применения фильтра
*/
variant_chance: number = 20;
/**
* Список фильтров и диапозона случайных параметров
*/
variants: CarnivalJokeFilters = {
'sepia({0}%)': 100,
'saturate({0}%)': 100,
'hue-rotate({0}deg)': 360,
'invert({0}%)': 100,
}
}
export interface CarnivalJokeFilters {
[key: string]: number;
}