#!/usr/bin/perl # exorcist.pl # linda blair and friends as software # features backwards masking # v 1.3 # # based on ritalinworld.pl # Distributed under Gnu Public License http://www.gnu.org/copyleft/gpl.html # # ambient entertainment for satan worshippers: # runs on Windows - using black background of DOS Shell. # should run great in plain DOS mode too. # sorry, it's no good on Linux for some reason - too slow, optical # effects don't work, even in console mode. # # may be projected and accompanied by bach's brandenburg concerto #3 # or of course, mike oldfield's tubular bells. use Time::HiRes qw(usleep); # you may comment this next line out if you define @spewings and $seductioninterval below. require "readme-config.txt"; # these two lines can be configured in the readme-config.txt file or you may set here by # uncommenting the next lines: # my @spewings = ('the sow is mine', 'my sweet satan', 'let jesus fuck you', '666', 'jesus drinks coke', '666'); # my $seductioninterval = 3000; # frequency of the seductive eyecandy treat. higher is less often. my $time = time; srand($$ * $time); my @curses; my ($quine, $reversequine) = love_thyself (); # the following algorithms are largely unexplainable. while (1) { my $limit = 666; my $downtime = 0; my $string = "."; @curses = spewpicker(3, @spewings); for ($i=$limit;$i>1;$i--) { my $range = $i; my $spacefig; $downtime = ($downtime * 1.7)/2 + 4; my $halflife = ($i/2); my $out = rand($range) + $halflife; if ($i > 200) { $spacefig = 10; } elsif ($i > 600 and $i < 1000) { $spacefig = 1000; } else { $spacefig = $downtime - 2; } if (rand($range) < ($halflife)) { for ($j=1;$j<rand($downtime - $spacefig) ;$j++) { $string = $string . "\."; print "$curses[0] $string $curses[1] . $string . $curses[2]\n"; } } else { if (int(rand($downtime * 3)) == 2) { sleep 1; } usleep (900 * $downtime); } if (int(rand($seductioninterval)) == 1) { # special seductive treat from satan. my $treatlength = int(rand(7000)) + 6000; for ($j=1;$j<$treatlength ;$j++) { print "worship satan 666 "; } sleep 2; } if (int (rand(9999)) == 1) { my $treatlength = int(rand(30)) + 30; for ($j=1;$j<$treatlength ;$j++) { if (int (rand(4)) == 1) { print "$reversequine\n"; } else { print "$quine\n"; } } sleep 3; } } } sub spewpicker { my ($numspewings, @spewings) = @_; my $backwardsmasking; if (int(rand(3)) == 1) { $backwardsmasking = 1; } my $i; my @returnspewings = (); for ($i=1;$i<=$numspewings ;$i++) { my $pickme = int(rand(@spewings)); if ($backwardsmasking) {$spewings[$pickme] = reverse $spewings[$pickme]} push (@returnspewings, $spewings[$pickme]); } return @returnspewings; } sub love_thyself { my @lines = (); my @code = (); open ME, "./exorcist.pl"; while (<ME>) { chomp $_; my $pushline = $_ . " "; push (@lines, $pushline); } close ME; my $lines = "@lines"; my @codewords = split (" ", $lines); foreach my $word (@codewords) { my $pushword = $word . " 666 "; push (@code, $pushword); } my $code = "@code"; my $reversecode = reverse $code; return ($code, $reversecode); }