From 35148838f98e606bc6ebd0277767f4458872bf14 Mon Sep 17 00:00:00 2001 From: eleksir Date: Sun, 7 Feb 2021 13:22:32 +0300 Subject: [PATCH] =?UTF-8?q?Add=20commands=20!fish=20!fishing=20!=D1=80?= =?UTF-8?q?=D1=8B=D0=B1=D0=B0=20!=D1=80=D1=8B=D0=B1=D0=B0=D0=BB=D0=BA?= =?UTF-8?q?=D0=B0=20!=D1=80=D1=8B=D0=B1=D0=BA=D0=B0,=20tweak=20archeologis?= =?UTF-8?q?t.pm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Rearrange .gitignore + Add fisher.pm with fishing commands * Max probability in archeologist.pm should not exceed 100% --- .gitignore | 4 +- lib/archeologist.pm | 6 +- lib/botlib.pm | 9 +++ lib/fisher.pm | 133 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 147 insertions(+), 5 deletions(-) create mode 100644 lib/fisher.pm diff --git a/.gitignore b/.gitignore index 7251da7..6213c09 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +_Deparsed_XSubs.pm .idea/** .vscode/** aleesa-telegram-bot.pid @@ -8,5 +9,4 @@ data/friday/** data/karma/** data/telegrambot-brains/** data/lat/** -vendor_perl -_Deparsed_XSubs.pm +vendor_perl/** diff --git a/lib/archeologist.pm b/lib/archeologist.pm index 6aaab33..2848625 100644 --- a/lib/archeologist.pm +++ b/lib/archeologist.pm @@ -100,9 +100,9 @@ sub dig { 'на просторах Украины', ); - my $find_probability = irand 101; - my $success_probability = irand 101; - my $artifact_age = irand 15001; + my $find_probability = irand 100; + my $success_probability = irand 100; + my $artifact_age = irand 15000; if ($find_probability <= 20) { return sprintf 'По уши закопавшись %s, %s, нифига вы не выкопали! Может повезет в другом месте?', $location[irand ($#location + 1)], $name; diff --git a/lib/botlib.pm b/lib/botlib.pm index 8e48b20..daaec7c 100644 --- a/lib/botlib.pm +++ b/lib/botlib.pm @@ -12,6 +12,7 @@ use Math::Random::Secure qw (irand); use conf qw (loadConf); use archeologist qw (dig); +use fisher qw (fish); use fortune qw (fortune fortune_toggle fortune_status); use friday qw (friday); use karma qw (karmaSet karmaGet); @@ -102,12 +103,20 @@ sub command { sleep (int ( rand (2) + 1)); $msg->replyMd ($reply); return; + } elsif (substr ($text, 1) eq 'fish' || substr ($text, 1) eq 'fishing' || substr ($text, 1) eq 'рыба' || substr ($text, 1) eq 'рыбка' || substr ($text, 1) eq 'рыбалка' ) { + $reply = fish ($highlight); + $msg->typing (); + sleep (int ( rand (2) + 1)); + $msg->replyMd ($reply); + return; } elsif (substr ($text, 1) eq 'help' || substr ($text, 1) eq 'помощь') { $reply = << "MYHELP"; ``` ${csign}help | ${csign}помощь - список команд ${csign}cat | ${csign}кис - кошечка ${csign}dig | ${csign}копать - заняться археологией +${csign}fish | ${csign}рыба | ${csign}рыбка - порыбачить +${csign}fishing | ${csign}рыбалка - порыбачить ${csign}f | ${csign}ф - рандомная фраза из сборника цитат fortune_mod ${csign}fortune | ${csign}фортунка - рандомная фраза из сборника цитат fortune_mod ${csign}f # | ${csign}ф # - где 1 - вкл, 0 - выкл фортунку с утра diff --git a/lib/fisher.pm b/lib/fisher.pm new file mode 100644 index 0000000..5d16c94 --- /dev/null +++ b/lib/fisher.pm @@ -0,0 +1,133 @@ +package fisher; + +use 5.018; +use strict; +use warnings; +use utf8; +use open qw (:std :utf8); +use English qw ( -no_match_vars ); +use Math::Random::Secure qw (irand); + +use version; our $VERSION = qw (1.0); +use Exporter qw (import); +our @EXPORT_OK = qw (fish); + + +sub fish { + my $name = shift; + + my @artifact = ( + 'семикрылого чешуйчатого пятихуя', + 'разумного конденсатора', + 'сальмонеллу', + 'селёдку', + 'желтоперого тунца', + 'розовую сальмонеллу', + 'голавля', + 'барбуса', + 'окуня', + 'верхоплавку', + 'коричневую форель', + 'полярника', + 'плотву', + 'зубатку', + 'солнечную рыбу', + 'cтарую шину', + 'скользкую корягу', + 'лампу джина', + 'любовное послание в бутылке', + 'старое бревно', + 'резиновый сапог', + 'труп', + 'Лох-Несское чудовище', + 'старую рыбацкую приманку', + 'кусок Титаника', + 'обломок Атлантиды', + 'кита', + 'кальмара', + 'дельфина', + 'ската', + 'подводную лодку', + 'медузу', + 'морскую звезду', + 'электрического угря', + 'большую белую акулу', + 'аквалангиста', + 'монстра', + 'вируса', + 'сырую пачку сигарет', + 'водоросли', + 'якорь от лодки', + 'водяного', + 'русалку', + 'палтуса', + 'труп собаки по кличке Беня', + 'олигофрена Проню', + 'огеймера Фишкина', + ); + + my @location = ( + 'в поток', + 'в озеро', + 'в реку', + 'в северерный ледовитый океан', + 'в индийский океан', + 'в биде', + 'в детский плавательный бассейн', + 'в туалет', + 'в кучу рвоты', + 'в лужу мочи', + 'в раковину', + 'в слив ванной', + 'в лужу грязи', + 'в ведро воды', + 'в бутылку с водкой', + 'в ванную', + 'в бочку с дождевой водой', + 'в аквариум', + 'в сугроб', + 'в водопад', + 'в чашку кофе', + 'в стакан молока', + 'в черную дыру', + 'дно Удомельского реактора', + 'на Марс', + 'в соседнюю галактуку', + 'к соседу на балкон', + 'далеко-далеко', + 'далеко и надолго', + 'на крышу дома', + ); + + my @material = { + 'бамбуковую', + 'фиберглассовую', + 'карбоновую', + 'композитную', + } + + my $find_probability = irand 100; + my $success_probability = irand 100; + my $weight = irand 7000; + + my $phrase = sprintf "Вы забрасываете %s удочку %s.\nВы чувствуете поклевку и начинаете быстро тащить что-то из воды.\n", $material[irand ($#material + 1)], $location[irand ($#location + 1)]; + + if ($find_probability <= 20) { + $phrase .= sprintf 'Черт, твоя рыбка сорвалась, %s! Не беда, может потом повезет?', $name; + return $phrase; + } + + $phrase .= sprintf "Поздравляю, %s! Вы только что поймали %s! аж на %d кило!\n\n", $name, $artifact[irand ($#artifact + 1)], $weight; + + if ($success_probability <= 25) { + $phrase .= sprintf 'Ё-мое!!! А это ведь новый рекорд! Продолжай в том же духе, %s!', $name; + } else { + $phrase .= sprintf 'Извини %s, но это не новый рекорд! Однако, хорошая попытка!', $name; + } + + return $phrase; +} + +1; + +# vim: set ft=perl noet ai ts=4 sw=4 sts=4: