Created
April 24, 2026 04:41
-
-
Save paigeadelethompson/66631f02084f0b2f36019bf693c7b145 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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