summaryrefslogtreecommitdiffstats
path: root/scripts/8-ball.pl
diff options
context:
space:
mode:
authorAlexander Færøy2014-05-31 13:10:46 +0200
committerAlexander Færøy2014-05-31 13:10:46 +0200
commit2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1 (patch)
tree1c5e6d817c88e67b46e216a50e0aef5428bf63df /scripts/8-ball.pl
parent2d080422d79d1fd49d6c5528593ccaaff9bfc583 (diff)
downloadscripts.irssi.org-2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1.tar.bz2
Import scripts from scripts.irssi.org
Diffstat (limited to 'scripts/8-ball.pl')
-rw-r--r--scripts/8-ball.pl124
1 files changed, 124 insertions, 0 deletions
diff --git a/scripts/8-ball.pl b/scripts/8-ball.pl
new file mode 100644
index 0000000..04564a7
--- /dev/null
+++ b/scripts/8-ball.pl
@@ -0,0 +1,124 @@
+#8-ball / decision ball
+#
+#What is this?
+#
+#The 8-ball (Eight-ball) is a decision ball which i bought
+#in a gadget shop when i was in London. I then came up with
+#the idea to make an irc-version of this one :)
+#There are 16 possible answers that the ball may give you.
+#
+#
+#usage
+#
+#Anyone in the same channel as the one who runs this script may
+#write "8-ball: question ?" without quotes and where question is
+#a question to ask the 8-ball.
+#An answer is given randomly. The possible answers are the exact
+#same answers that the real 8-ball gives.
+#
+#Write "8-ball" without quotes to have the the ball tell you
+#how money questions it've got totally.
+#
+#Write "8-ball version" without quotes to have him tell what
+#his version is.
+#
+#
+use strict;
+use vars qw($VERSION %IRSSI);
+
+use Irssi qw(command_bind signal_add);
+use IO::File;
+$VERSION = '0.20';
+%IRSSI = (
+ authors => 'Patrik Jansson',
+ contact => 'gein@knivby.nu',
+ name => '8-ball',
+ description => 'Dont like to take decisions? Have the 8-ball do it for you instead.',
+ license => 'GPL',
+);
+
+sub own_question {
+ my ($server, $msg, $target) = @_;
+ question($server, $msg, "", $target);
+}
+
+sub public_question {
+ my ($server, $msg, $nick, $address, $target) = @_;
+ question($server, $msg, $nick.": ", $target);
+}
+sub question($server, $msg, $nick, $target) {
+ my ($server, $msg, $nick, $target) = @_;
+ $_ = $msg;
+ if (!/^8-ball/i) { return 0; }
+
+ if (/^8-ball:.+\?$/i) {
+ my $ia = int(rand(16));
+ my $answer = "";
+ SWITCH: {
+ if ($ia==0) { $answer = "Yes"; last SWITCH; }
+ if ($ia==1) { $answer = "No"; last SWITCH; }
+ if ($ia==2) { $answer = "Outlook so so"; last SWITCH; }
+ if ($ia==3) { $answer = "Absolutely"; last SWITCH; }
+ if ($ia==4) { $answer = "My sources say no"; last SWITCH; }
+ if ($ia==5) { $answer = "Yes definitely"; last SWITCH; }
+ if ($ia==6) { $answer = "Very doubtful"; last SWITCH; }
+ if ($ia==7) { $answer = "Most likely"; last SWITCH; }
+ if ($ia==8) { $answer = "Forget about it"; last SWITCH; }
+ if ($ia==9) { $answer = "Are you kidding?"; last SWITCH; }
+ if ($ia==10) { $answer = "Go for it"; last SWITCH; }
+ if ($ia==11) { $answer = "Not now"; last SWITCH; }
+ if ($ia==12) { $answer = "Looking good"; last SWITCH; }
+ if ($ia==13) { $answer = "Who knows"; last SWITCH; }
+ if ($ia==14) { $answer = "A definite yes"; last SWITCH; }
+ if ($ia==15) { $answer = "You will have to wait"; last SWITCH; }
+ if ($ia==16) { $answer = "Yes, in due time"; last SWITCH; }
+ if ($ia==17) { $answer = "I have my doubts"; last SWITCH; }
+ }
+ $server->command('msg '.$target.' '.$nick.'8-ball says: '.$answer);
+
+ my ($fh, $count);
+ $fh = new IO::File;
+ $count = 0;
+ if ($fh->open("< .8-ball")){
+ $count = <$fh>;
+ $fh->close;
+ }
+ $count++;
+ $fh = new IO::File;
+ if ($fh->open("> .8-ball")){
+ print $fh $count;
+ $fh->close;
+ }else{
+ print "Couldn't open file for output. The value $count couldn't be written.";
+ return 1;
+ }
+ return 0;
+ } elsif (/^8-ball$/i) {
+
+ my ($fh, $count);
+ $fh = new IO::File;
+ $count = 0;
+ if ($fh->open("< .8-ball")){
+ $count = <$fh>;
+ $server->command('msg '.$target.' 8-ball says: I\'ve got '.$count.' questions so far.');
+ $fh->close;
+ }else{
+ print "Couldn't open file for input";
+ return 1;
+ }
+ return 0;
+
+ } elsif (/^8-ball version$/i){
+ $server->command('msg '.$target.' My version is: '.$VERSION);
+ return 0;
+ } else {
+ if(!/^8-ball says/i){
+ $server->command('msg '.$target.' '.$nick.'A question please.');
+ return 0;
+ }
+ }
+
+}
+
+signal_add("message public", "public_question");
+signal_add("message own_public", "own_question");