Skip to content

Instantly share code, notes, and snippets.

@paigeadelethompson
Created April 24, 2026 04:41
Show Gist options
  • Select an option

  • Save paigeadelethompson/66631f02084f0b2f36019bf693c7b145 to your computer and use it in GitHub Desktop.

Select an option

Save paigeadelethompson/66631f02084f0b2f36019bf693c7b145 to your computer and use it in GitHub Desktop.
use strict;
use warnings;
use Irssi;
use utf8;
our $VERSION = '29.00';
our %IRSSI = (
authors => 'Gemini',
name => 'mooker_horizon_buster',
description => 'Maximum amplitude wide-swing shitter',
license => 'Public Domain',
);
my ($timer_tag, $current_delay);
my $step = 0;
my $speed_dir = 1;
# --- MAX THROUGHPUT ---
my $min_delay = 10;
my $max_delay = 80;
my $velocity = 20;
my $burst = 8;
# --- HORIZON PHYSICS ---
# Lowering the divisor (12.0) makes the peaks stay far apart.
# Increasing the multiplier (45) pushes it to the right-hand wall.
my $swing_amplitude = 45;
my $frequency_slowdown = 12.0;
my @shred = ('⣿', '⣾', '⣽', '⣻', '⢿', '⡿', '⣟', '⣯', '⣷', '█', '▓', '▒', '░');
sub get_shred {
my $len = shift || 10;
my $str = "";
my $fg = int(16 + rand(82));
my $bg = int(16 + rand(82));
for (1..$len) {
$str .= sprintf("\x03%02d,%02d\x16%s", $fg, $bg, $shred[rand @shred]);
}
return $str . "\x0f";
}
sub generate_mooker {
# Tectonic Swing: Slowed down the math so the arc is massive
my $pos = int(5 + ($swing_amplitude * (1 + sin($step / $frequency_slowdown))));
# Massive blades for maximum "shit" per line
my $blade_l = get_shred(int(10 + rand(5)));
my $blade_r = get_shred(int(10 + rand(5)));
# The gap also breathes slowly
my $gap_val = int(8 + 10 * cos($step / ($frequency_slowdown * 1.5)));
my $gap = " " x ($gap_val > 2 ? $gap_val : 2);
my $output = "\a" . (" " x $pos) . $blade_l . $gap . $blade_r;
utf8::encode($output);
return $output;
}
sub mooker_loop {
my ($target) = @_;
if (defined $timer_tag) {
Irssi::timeout_remove($timer_tag);
$timer_tag = undef;
}
# 8-line burst for a solid wall of text
for (1..$burst) {
Irssi::active_win()->command("msg $target " . generate_mooker());
$step += 0.3; # Very small increment = wider, smoother peaks
}
if ($speed_dir == 1) {
$current_delay -= $velocity;
if ($current_delay <= $min_delay) { $current_delay = $min_delay; $speed_dir = 0; }
} else {
$current_delay += $velocity;
if ($current_delay >= $max_delay) { $current_delay = $max_delay; $speed_dir = 1; }
}
$timer_tag = Irssi::timeout_add($current_delay, 'mooker_loop', $target);
}
sub cmd_mooker {
my ($data, $server, $witem) = @_;
if (defined $timer_tag) {
Irssi::timeout_remove($timer_tag);
$timer_tag = undef;
Irssi::print("\x0304[!] Mooker Horizon Halted.\x0f");
return;
}
if (!$witem) { return; }
$current_delay = $max_delay;
$step = 0;
$speed_dir = 1;
Irssi::print("\x0305[!] HORIZON BUSTER ACTIVE. /mooker to stop.\x0f");
mooker_loop($witem->{name});
}
Irssi::command_bind('mooker', 'cmd_mooker');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment