Advertisement
elePHPant

perlrpg.pl

Apr 13th, 2022
486
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 31.58 KB | None | 0 0
  1. #!/usr/bin/perl
  2. use utf8;
  3. use open qw( :encoding(cp866) :std );
  4.  
  5. #START FRAGMENT#
  6. print '
  7.    //   ) )                     //   ) )  //   ) ) //   ) )
  8.   //___/ /  ___      __     // //___/ /  //___/ / //        
  9.  / ____ / //___) ) //  ) ) // / ___ (   / ____ / //  ____  
  10. //       //       //      // //   | |  //       //    / /  
  11. //       ((____   //      // //    | | //       ((____/ /  0.1
  12. ____  
  13. (  _ \
  14. ( |_| |
  15. )___/
  16. (__) ERL.ORG
  17. perl.org
  18. ';
  19. $gn = "
  20. **********************************
  21. Hello user! This is:
  22. #PRpg - Perl RPG - RPG on the Perl#
  23. **********************************
  24. Write your name: ";
  25. print $gn;
  26. $name = <STDIN>;
  27. chomp $name;
  28. print "
  29.         Knight $name
  30.  / \
  31.  | |
  32.  |.|
  33.  |.|
  34.  |:|      __
  35. ,_|:|_,   /  )
  36.  (Oo    / _I_
  37.   +\ \ || __|
  38.      \ \||___|
  39.        \ /.:.\-\
  40.         |.:. /-----\
  41.         |___|::oOo::|
  42.         /   |:<_T_>:|
  43.        |_____\ ::: /
  44.         | |  \ \:/
  45.         | |   | |
  46.         \ /   | \___
  47.         / |   \_____\
  48.         `-'
  49. ";
  50. print "\n";
  51. <STDIN>;
  52. $instr_w = 'Чтобы перемещаться используйте "W", "A", "S", "D"';
  53. print "
  54.          *Вперёд к приключениям!*
  55. _   _   _   _+       |
  56. /_`-'_`-'_`-'_|  \+/  |
  57. \_`M'_`D'_`C'_| _<=>_ |
  58.  `-' `-' `-' 0/ \ / o=o
  59.              \/\ ^ /`0
  60.              | /_^_\
  61.              | || ||
  62.            __|_d|_|b__
  63. ";
  64. print $instr_w;
  65. my %items = (25 => "Очень тяжелый зачарованный меч",
  66.     20 => "Книга зачарованний",
  67.     15 => "Карта местности");
  68. my %characteristics = (health => 100,
  69.                       maxhealth => 100,
  70.                       gold => 20,
  71.                       sword => 30,
  72.                       item1 => "",
  73.                       item2 => "",
  74.                       item3 => "",
  75.                       bow => 25,
  76.                       crossbow => 30,
  77.                       axe => 40,
  78.                       arrows => 10,
  79.                       maxarrows => 150,
  80.                       weapon1 => "",
  81.                       weapon2 => "",
  82.                       weapon3 => "",
  83.                       scroll1 => "",
  84.                       scroll2 => "",
  85.                       scroll3 => "",
  86.                       intelligence => 0,
  87.                       power => 0,
  88.                       luck => 0,
  89.                       uron => 20,
  90.                       maxuron => 100);
  91. my %wasd =  ( W => 'Шаг вперед',
  92.                A => 'Шаг влево',
  93.                S => 'Шаг назад',
  94.                D => 'Шаг вправо',
  95.                N => "Ваше имя это: $name",
  96.                H => "Лечится с помощью чёрной магии"
  97.                 );
  98. $quest1 == "inactive";
  99. $quest2 == "inactive";
  100. $quest3 == "inactive";
  101. $quest4 == "inactive";
  102. my %buildings = (1 => "шахта",
  103.                 2 => "замок
  104. ** A castle**
  105.  
  106.     |Zz.                      |Zz.
  107.     |                         |
  108.    _L__                      _|
  109.   (____)      _             /__\
  110.   /____\    /_\          /____\
  111.  (______)    | |          (______)
  112.   |  U |_____| |___________| U  |
  113.   |u   | |  |   __   |  |  |   u|
  114.   |    | |  |  ||||  |  |  |    |
  115.   -------------''''--------------js
  116.   ",
  117.    3=> "казарма
  118.      `'::::.
  119.        _____A_
  120.       /      /\
  121.    __/__/\__/  \___
  122. ---/__|'' '' '| /___/\----
  123.   |''|''||''| |' '||
  124.   `''`''))''`'''''
  125.   ",
  126.    4=> "город
  127.  
  128.                         **A city**
  129.  
  130.                      \|/
  131.                      -o-                              |
  132.                      /|\                            ( )_
  133.             |                                       /\ | |
  134.            (_)             |      |   __         |  ||-| |-[]|  \|/  \|
  135. ___|___   _| |____   |    (_)_  _( )_|[]|     __(_)_|| |     |_~(|)~~(|
  136. (_)__)__|_| []|[]  |_(_)_  |[]|_|_[]__|__|  __| |[]|__| | []|___|_|____|
  137. | |__| [] |   |[]  |  | |  |    | []  |  | |  | |   |||_|    [][]      |
  138.   ",
  139.    5=>"башня с лучниками
  140.     **Tower with archers**
  141.                                                                    
  142.                
  143.                /\
  144.     /\       /__\
  145.    /__\      |. |
  146.    |n |     :_|__|_:
  147.  :_|  |_:     |. |
  148.    | n|       |. |
  149.    |  |       |. |
  150.    |n |_______|. |
  151.    |n |.      |. |
  152.     |n |       |. |
  153.   _|__|_______|__|____
  154.  /  \        \       \  
  155.   ",
  156.    6=>"дерево
  157.     **A tree**
  158.  
  159.       _-_
  160.    /~~   ~~\
  161. /~~         ~~\
  162. {               }
  163. \ _-     -_  /
  164.   ~  \\ //  ~
  165. _- -   | | _- _
  166.  _ -  | |   -_
  167.      // \\
  168.   "
  169.    );
  170. my %dealers = (
  171. 1 => "минотавр
  172.     .      .
  173.     |\____/|
  174.    (\|----|/)
  175.     \ 0  0 /
  176.      |    |
  177.   ___/\../\____
  178.  /     --       \
  179. /  \        /   \
  180. |    \___/___/(   |
  181. \  /|  }{   | \ )
  182. \ ||__}{__|  |  |
  183.  \ |;;;;;;;\ \ / \_______
  184.   \ /;;;;;;;;| [,,[|======'
  185.     |;;;;;;/ |     /
  186.     ||;;|\  |
  187.     ||;;/|   /
  188.     \_|:||__|
  189.      \ ;||  /
  190.      |= || =|
  191.      |= /\ =|
  192.      /_/  \_\
  193.                ",
  194.                2 => "торговец
  195.      .-.
  196.     (o.o)
  197.      |=|
  198.     __|__
  199.   //.=|=.\\
  200.  // .=|=. \\
  201.  \\ .=|=. //
  202.   \\(_=_)//
  203.    (:| |:)
  204.     || ||
  205.     () ()
  206.     || ||
  207.     || ||
  208. l42 ==' '==
  209.                ",
  210.                3 => "скелет
  211.            _..--''---.
  212.          /           ''.
  213.          `            l
  214.          |''._  ,._ l/''\
  215.          |  _J<__/.v._/
  216.           \( ,~._,,,,-)
  217.            `-\' \`,,j|
  218.               \_,____J
  219.          .--.__)--(__.--.
  220.         /  `-----..--'. j
  221.                ");
  222.  
  223. my %monstrs = ( 1 => "человек
  224.      __      _
  225.     /__\__  //
  226.    //_____\///
  227.   _| /-_-\)|/_
  228.  (___\ _ //___\
  229.  (  |\\_/// * \\
  230.   \_| \_((*   *))
  231.   ( |__|_\\  *//
  232.   (o/  _  \_*_/
  233.   //\__|__/\
  234.  // |  | |  |
  235. //  _\ | |___)
  236. //  (___|
  237. ",
  238.                2 => "эльф
  239.  
  240.             ..-.--..
  241.           ,','.-`.-.`.
  242.          :.',;'     `.\.
  243.          ||//----,-.--\|
  244.        \`:|/-----`-'--||'/
  245.         \\|:    |:'
  246.          `||      \  |!
  247.          |!|          ;|
  248.          !||:.   --  /|!
  249.         /||!||:.___.|!||\
  250.        /|!|||!|    |!||!\\:.
  251.     ,'//!||!||!`._.||!||,:\\\
  252.    : :: |!|||!| SSt|!||! |!::
  253.    | |! !||!|||`---!|!|| ||!|
  254.    | || |!|||!|    |!||! |!||
  255.                ",
  256.                3 => "гном
  257.  
  258.              \ |  / ,           ,-`````````'-.
  259.            `-.\ | /,'           /              `. `. \ |  / ,'
  260.           ----     ---         /    _,---''''--.,|  `.\| /,'
  261.            --,     `-.         |   |. __   . __,(| ---     ---
  262.            ,' /_\\_\_          |   | '  `   `. `|/   /    `.
  263.                \ \ `._       |() |,        `. \ /` ,| \ `.
  264.                 \   -' `-.__  \__/ `,  .  _   )|/' \/ |  \
  265.                  `.      -'  `--,/|  '`-'`'_`''-|    \
  266.                    `-._           `|     {`-`}  \    \
  267.                        `-._        \,     ``'  |` ,---'
  268.                            `-.       |         \,-'
  269.                               |\    `\        \
  270.                               \ `      \,       \
  271.                               /          \    |`
  272.                              |            \,  / \
  273.                              /              `'  |
  274.                              |                  |
  275.                              /                  |
  276.                             /      _ __    ,   ,'___,
  277.                            /  _   ' /,-`--'/  ' /   /    Zeus
  278.                            `-' `--..'-----'----'---'
  279.                ",
  280.                4 => "орк
  281.           _......._
  282.       .-'.'.'.'.'.'.`-.
  283.     .'.'.'.'.'.'.'.'.'.`.
  284.    /.'.'               '.\
  285.    |.'    _.--...--._     |
  286.    \   `._.-.....-._.'   /
  287.     |     _..- .-. -.._   |
  288. .-.'    `. ((@  @))  .'   '.-.
  289. ( ^ \     `--.   .-'     / ^ )
  290. \ /         .   .       \ /
  291. /          .'     '.  .-    \
  292. ( _.\   \ (_`-._.-'_)    /._\)
  293. `-' \  ' .--.          / `-'
  294.     |  / /|_| `-._.'\  |
  295.     |   |       |_| |   /-.._
  296. _..-\  `.--.______.'  |
  297.      \      .....     |
  298.       `.  .'      `.  /
  299.         \          .'
  300.  LGB     `-..___..-`
  301.                ",
  302.                5 => "демон
  303.                                             ,--,  ,.-.
  304.               ,                   \,       '-,-`,'-.' | ._
  305.              /|           \   ,   |\        }  )/  / `-,',
  306.              [ ,          |\ /|   | |        /  \|  |/`  ,`
  307.              | |       ,.`  `,` `, | |  _,...(   (      .',
  308.              \ \ __ ,-` `  ,  , `/ |,'      Y     (   /_L\
  309.               \ \_\,``,   ` , ,  /  |         )         _,/
  310.                \ '  `  ,_ _`_,-,<._.<        /         /
  311.                 ', `>.,`  `  `   ,., |_      |         /
  312.                   \/`  `,   `   ,`  | /__,.-`    _,   `\
  313.               -,-..\ _  \ `  /  ,  / `._) _,-\`       \
  314.                \_,,.) /\   ` /  / ) (-,, ``    ,        |
  315.               ,` )  | \_\      '-`  |  `(               \
  316.              /  /```(   , --, ,' \  |`<`    ,            |
  317.             /  /_,--`\  <\ V /> ,` )<_/)  | \     _____)
  318.       ,-, ,`   `   (_,\ \   |   /) / __/  /   `----`
  319.      (-, \          ) \ ('_.-._)/ /,`    /
  320.      | /  `          `/ \\ V   V, /`     /
  321.   ,--\(        ,     <_/`\\     ||      /
  322.  (   ,``-     \/|         \-A.A-`|     /
  323. ,>,_ )_,..(    )\         -,,_-`  _--`
  324. (_ \|`   _,/_  /  \_            ,--`
  325. \( `   <.,../`     `-.._   _,-`
  326.                ",
  327.                6 => "ангел
  328.   _               _
  329.  ( `-._\|||||/_.-' )
  330.   \  ((('_')))   /
  331.    )   ))) (((   (
  332.   (   ((( v )))   )
  333.    )`--' )X( `-._(
  334.   /   _./   \._   \
  335.  /  .' /     \ `.  \
  336. (__/  /       \ \__)
  337.      /         \
  338. jgs  /           \
  339.    WwWwWwWwWwWwWwW
  340.                ",
  341.                7 => "дракон
  342.                    -,,,__
  343.                     \   ``~~--,,__                /   /
  344.                     /              ``~~--,,_     //--//
  345.          _,,,,-----,\             ,,,,---- >   (c  c)\
  346.      ,;''            `\,,,,----''''   ,,-'''---/   /_ ;___        -,_
  347.     ( ''---,;====;,----/             (-,,_____/  /'/ `;   '''''----\ `:.
  348.     (                 '               `      (oo)/   ;~~~~~~~~~~~~~/--~
  349.      `;_           ;    \           ;   \  `  ' ,,'
  350.         ```-----...|     )___________|    )-----'''
  351. Art by               \  /             \  \\
  352.  Korrath            /  /,              `\  \\
  353.                   ,'---\ \             ,---`,;,
  354.                         ```
  355.                        ",
  356.                8 => "кентавр
  357.  <=======]}======
  358.    --.   /|
  359.   _\"/_.'/
  360. .'._._,.'
  361. :/ \{}/
  362. (L  /--',----._
  363.    |          \\
  364.   : /-\ .'-'\ / |
  365. snd \\, ||    \|
  366.     \/ ||    ||
  367.              "
  368.                );
  369. sub items {
  370.     $items = int(rand(30)) - $characteristics{luck};
  371.     foreach $key(sort keys %items){
  372.         if ($items eq $key){
  373.             print "Ты нашёл: ". $items{$key}."\n";
  374.             if (!$characteristics{item1}){
  375.                 $characteristics{item1} = $items{$key};
  376.             } elsif (!$characteristics{item2}){
  377.                 $characteristics{item2} = $items{$key};
  378.             } elsif (!$characteristics{item3}){
  379.                 $characteristics{item3} = $items{$key};
  380.             } else {
  381.                 print "Инвентарь полон!";
  382.             }
  383.         }
  384.     }
  385. }
  386. sub wasd{
  387.     #Считываем ввод с клавиатуры. С помощью uc мы переводим ввод в верхний
  388.     #регистр, а с помощью функции chomp() мы удаляем последний символ \n
  389.     $enter_b = uc <STDIN>;
  390.     chomp $enter_b;
  391.     if ($enter_b eq "IWANTTOBEAGOD" or $enter_b eq "PERLISROCK"){
  392.         print "Вы применили чит-код!\n";
  393.         $characteristics{gold} = $characteristics{gold} +1000;
  394.         $characteristics{power} = 10;
  395.         $characteristics{intelligence} = 10;
  396.         $characteristics{luck} = 10;
  397.         $characteristics{weapon1} = "Лук";
  398.         $characteristics{weapon2} = "Арбалет";
  399.     } elsif($enter_b eq "MONEY") {
  400.         $characteristics{gold} = 1000;
  401.         print "Вы применили чит-код!\n";
  402.     }
  403.     elsif ($enter_b eq "B"){
  404.         if (!$characteristics{item1} or !$characteristics{item2} or !$characteristics{item3}) {
  405.                     print "Извини... но у тебя нет нужного количества предметов.\n";
  406.                 } else {
  407.                     $characteristics{gold} = $characteristics{gold} + 10;
  408.                     $characteristics{item1} = undef;
  409.                     $characteristics{item2} = undef;
  410.                     $characteristics{item3} = undef;
  411.                     print "С помощью чёрной магии вы превратили найденное барахло в золото!\n";
  412.     }
  413. }
  414.     elsif ($enter_b eq "T") {
  415.         print "
  416. ______  __ __   ____  ____   __  _  _____    
  417. |      ||  |  | /    ||    \ |  |/ ]/ ___/    
  418. |      ||  |  ||  o  ||  _  ||  ' /(   \_    
  419. |_|  |_||  _  ||     ||  |  ||    \ \__  |  
  420.  |  |  |  |  ||  _  ||  |  ||     \/  \ |    
  421.  |  |  |  |  ||  |  ||  |  ||  .  |\   |  
  422.  |__|  |__|__||__|__||__|__||__|\_| \___|  
  423.         \n";
  424.         sleep (1);
  425.         print "SITES\n";
  426.         sleep(1);
  427.         print "stackoverflow.com for help with perl\n";
  428.         sleep(1);
  429.         print "patorjk.com for ASCII art\n";
  430.         sleep (1);
  431.         print "www.asciiart.eu for ASCII art\n";
  432.         sleep (1);
  433.         print "ascii.co.uk for ASCII art\n";
  434.         sleep (1);
  435.         print "www.cyberforum.ru for help with perl\n";
  436.         sleep(1);
  437.         print "perl.org for... PERL!\n";
  438.         sleep (1);
  439.         print "PEOPLE\n";
  440.         sleep(1);
  441.         print "Larry Wall for... perl!\n";
  442.         sleep (1);
  443.         print "GAMES\n";
  444.         sleep(1);
  445.         print "Might and Magic Book One: The Secret of the Inner Sanctum for inspiration\n";
  446.         sleep (1);
  447.         print "Fallout 1 for inspiration\n";
  448.         sleep (1);
  449.         print "Heroes of Might and Magic III for inspiration\n";
  450.         sleep (1);
  451.         print "BOOKS\n";
  452.         sleep (1);
  453.         print "Programming Perl 3th edition for help with perl\n";
  454.         sleep (2);
  455.     }
  456.     elsif ($enter_b eq "Y") {
  457.         print "Здоровье: $characteristics{health}\n";
  458.         print "Золото: $characteristics{gold}\n";
  459.         if($characteristics{gold} < 100 or $characteristics{gold} eq 100){
  460.             print "Статус: нищий\n";
  461.         } elsif ($characteristics{gold} > 100 and $characteristics{gold} < 300) {
  462.             print "Статус: при деньгах\n";
  463.         }
  464.         elsif ($characteristics{gold} > 300 or $characteristics{gold} eq 300) {
  465.             print "Статус: Богач\n";
  466.         }
  467.         $uron_power = $characteristics{uron}+$characteristics{power};
  468.         print "Вы наносите: ".$uron_power." урона\n";
  469.         print "Характеристики:\n";
  470.         print "1.Сила: $characteristics{power}\n";
  471.         print "2.Интеллект: $characteristics{intelligence}\n";
  472.         print "3.Удача: $characteristics{luck}\n";
  473.         print "Инвентарь:\n";
  474.         print "1. ".$characteristics{item1}."\n";
  475.         print "2. ".$characteristics{item2}."\n";
  476.         print "3. ".$characteristics{item3}."\n";
  477.         print "Оружие:\n";
  478.         print "1. ".$characteristics{weapon1}."\n";
  479.         print "2. ".$characteristics{weapon2}."\n";
  480.         print "3. ".$characteristics{weapon3}."\n";
  481.         print "Стрелы: $characteristics{arrows}.\n";
  482.         print "Квесты:\n";
  483.         if ($quest1 eq "active"){
  484.         print "Спасти невесту Бесталла - квест активный\n";
  485.     } elsif ($quest1 eq "done") {
  486.         print "Спасти невесту Бесталла - квест выполнен\n";
  487.     } elsif ($quest1 eq "false") {
  488.         print "Спасти невесту Бесталла - квест провален\n";
  489.     }
  490.     } elsif ($enter_b eq "H") {
  491.         if ($characteristics{health} eq 100 or $characteristics{health} > 100){
  492.             print "У вас максимальное здоровье!\n";
  493.         }  elsif ($characteristics{gold} eq 0 or $characteristics{gold} < 0) {
  494.             print "У вас нехватает золота!";
  495.         }
  496.         else {
  497.             $characteristics{gold} = $characteristics{gold} - 10;
  498.             $characteristics{health} = $characteristics{health} + 10;
  499.         }
  500.     }
  501.     foreach $key(sort keys %wasd){
  502.         if ($enter_b eq $key){
  503.             print $wasd{$key}."\n";
  504.         }
  505.     }
  506. }
  507. sub dealers {
  508.     $rand_q = int(rand(3));
  509.     if ($rand_q eq 1){
  510.         $deal = int(rand(5)) - $characteristics{luck};
  511.         foreach $key(sort keys %dealers){
  512.             if ($deal eq $key) {
  513.                 if($quest1 == "inactive"){
  514.                 print $dealers{$key}."\n";
  515.                 print "Бесталл: Привет...\n";
  516.                 print "Вы:\n";
  517.                 print "1. Что случилось?.\n";
  518.                 print "2. Привет.\n";
  519.                 print "Пропустить диалог <Enter>.\n";
  520.                 $deal_quest1 = uc <STDIN>;
  521.                 chomp $deal_quest1;
  522.                 if($deal_quest1 eq 1){
  523.                     print "Бесталл: У меня украли невесту Архану\n";
  524.                     print "Вы:\n";
  525.                     print "1. Я могу тебе помочь.\n";
  526.                     print "2. Понятно, пока.\n";
  527.                     $deal_quest1_ans = uc <STDIN>;
  528.                     chomp $deal_quest1_ans;
  529.                     if($deal_quest1_ans eq 1){
  530.                         print "Бесталл: Спасибо!";
  531.                         $quest1 = "active";
  532.                     } elsif ($deal_quest1_ans eq 2){
  533.                         print "Бесталл: Пока";
  534.                     }
  535.                     #$characteristics{weapon1} = "Лук";
  536.                 } elsif ($deal_quest1 eq 2){
  537.                     print "Бесталл отказался разговаривать и убежал\n";
  538.                 }
  539.     }
  540. }
  541.     }
  542.     } elsif ($rand_q eq 2){
  543.     $deal = int(rand(20)) - $characteristics{luck};
  544.     foreach $key(sort keys %dealers){
  545.         if ($deal eq $key) {
  546.             print $dealers{$key}."\n";
  547.             print "Вы встретили торговца, B продать весь инвентарь\n";
  548.             print "1. Зелье силы (+1) - 30 золота.\n";
  549.             print "2. Зелье ума (+1) - 30 золота.\n";
  550.             print "3. Зелье удачи (+1) 35 золота.\n";
  551.             print "4. Здоровье +10 - 10 золота.\n";
  552.             print "5. Лук - 50 золота.\n";
  553.             $buy = uc <STDIN>;
  554.             chomp $buy;
  555.             if($buy eq 1){
  556.                 if($characteristics{gold} < 30){
  557.                     print "У вас недостаточно средств\n";
  558.                 } else {
  559.                     if($characteristics{power} eq 10 or $characteristics{power} > 10){
  560.                         print "У вас максимальный уровень силы\n";
  561.                     } else {
  562.                     $characteristics{gold} = $characteristics{gold} - 30;
  563.                     $characteristics{uron} = $characteristics{uron} + 1;
  564.                     $characteristics{power} = $characteristics{power} +1;
  565.                     print "Вы купили зелье силы! +1\n";
  566.                 }
  567.                 }
  568.             } elsif($buy eq 2){
  569.                 if($characteristics{gold} < 30){
  570.                     print "У вас недостаточно средств\n";
  571.                 } else {
  572.                     if($characteristics{intelligence} eq 10 or $characteristics{intelligence} > 10){
  573.                         print "У вас максимальный уровень ума\n";
  574.                     } else {
  575.                     $characteristics{gold} = $characteristics{gold} - 30;
  576.                     $characteristics{intelligence} = $characteristics{intelligence} +1;
  577.                     print "Вы купили зелье ума! +1\n";
  578.                 }
  579.                 }
  580.             } elsif($buy eq 3){
  581.                 if($characteristics{gold} < 35){
  582.                     print "У вас недостаточно средств\n";
  583.                 } else {
  584.                     if($characteristics{luck} eq 10 or $characteristics{luck} > 10){
  585.                         print "У вас максимальный уровень удачи\n";
  586.                     } else {
  587.                         $characteristics{gold} = $characteristics{gold} - 35;
  588.                         $characteristics{luck} = $characteristics{luck} +1;
  589.                         print "Вы купили зелье удачи! +1\n";
  590.                     }
  591.                 }
  592.             } elsif($buy eq 4){
  593.                 if($characteristics{gold} < 10){
  594.                     print "У вас недостаточно средств\n";
  595.                 } else {
  596.                     if ($characteristics{health} eq 100 or $characteristics{health} > 100){
  597.             print "У вас максимальное здоровье!\n";
  598.         } else {
  599.                     $characteristics{gold} = $characteristics{gold} - 10;
  600.                     $characteristics{health} = $characteristics{health} + 10;
  601.                     print "Вы купили зелье здоровья! +1\n";
  602.                 }
  603.                 }
  604.             } elsif($buy eq 5) {
  605.             if($characteristics{gold} < 50){
  606.                     print "У вас недостаточно средств\n";
  607.                 } else {
  608.                         $characteristics{weapon1} = "Лук";
  609.                         $characteristics{gold} = $characteristics{gold} - 50;
  610.                         print "Вы купили лук!\n";
  611.                     }
  612.     }
  613.             if ($buy eq "B"){
  614.                 if (!$characteristics{item1} or !$characteristics{item2} or !$characteristics{item3}) {
  615.                     $answ_d_1 = int(rand(20)) - $characteristics{luck};
  616.                     if ($answ_d_1 eq 1) {
  617.                         print "Торговец: Проваливай у тебя нету нужного количества предметов!\n";
  618.                         print "Вы:\n";
  619.                         print "1.Как тебя зовут? Из какого клана?\n";
  620.                         print "2.Что это за место?\n";
  621.                         print "3.А мне и не нужны твои паршивое золото.\n";
  622.                         print "Чтобы не вступать в беседу нажмите <Enter>\n";
  623.                         $answ_d_1_1 = <STDIN>;
  624.                         chomp $answ_d_1_1;
  625.                         if($answ_d_1_1 eq 1){
  626.                             print "Торговец: Меня зовут Ростран. Я из клана \"леденящий ветер\"\n";
  627.                         }elsif ($answ_d_1_1 eq 2){
  628.                             print "Торговец: Слушай, мне некогда болтать с тобой, у меня есть дела по важнее.\n";
  629.                         }
  630.                          elsif ($answ_d_1_1 eq 3){
  631.                             print "Торговец: И мне твоё тоже! Хоть в чём-то я с тобой соглашусь.";
  632.                         }
  633.                     } elsif($answ_d_1 eq 2) {
  634.                         print "Торговец: Прийди в другой раз. Когда накопишь предметов.\n";
  635.                         print "Вы:\n";
  636.                         print "1.Как тебя зовут? Из какого клана?\n";
  637.                         print "2.Спасибо за помощь!.\n";
  638.                         print "Чтобы не вступать в беседу нажмите <Enter>\n";
  639.                         $answ_d_1_2 = <STDIN>;
  640.                         chomp $answ_d_1_2;
  641.                         if($answ_d_1_2 eq 1){
  642.                             print "Торговец: Меня зовут Дегдрин и я одиночка. Когда-то давно я был в клане \"Серебрянная кровь\", но я многое переосмыслил с того времени\n";
  643.                         }elsif ($answ_d_1_1 eq 2){
  644.                             print "Торговец: Всегда обращяйся!\n";
  645.                         }
  646.                     } elsif ($answ_d_1 eq 3) {
  647.                         print "Торговец: Извини... но у тебя нет нужного количества предметов.\n";
  648.                         print "Вы:\n";
  649.                         print "1.Ладно, я приду в другой раз.\n";
  650.                         print "2.Спасибо за помощь!.\n";
  651.                         print "Чтобы не вступать в беседу нажмите <Enter>\n";
  652.                         $answ_d_1_2 = <STDIN>;
  653.                         chomp $answ_d_1_2;
  654.                         if($answ_d_1_2 eq 1){
  655.                             print "Торговец: Буду ждать.\n";
  656.                         }elsif ($answ_d_1_1 eq 2){
  657.                             print "Торговец: Всегда обращяйся!\n";
  658.                         }
  659.                     } elsif ($answ_d_1 eq 4) {
  660.                         print "Торговец: Я не разговариваю с людьми! Проваливай!\n";
  661.                         print "Вы:\n";
  662.                         print "1.Ладно, я приду в другой раз.\n";
  663.                         print "2.Спасибо за помощь!.\n";
  664.                         print "Чтобы не вступать в беседу нажмите <Enter>\n";
  665.                         $answ_d_1_2 = <STDIN>;
  666.                         chomp $answ_d_1_2;
  667.                         if($answ_d_1_2 eq 1){
  668.                             print "Торговец: ПРОВАЛИВАЙ!.\n";
  669.                         }elsif ($answ_d_1_1 eq 2){
  670.                             print "Торговец: Всегда обращяйся!\n";
  671.                         }
  672.                     }
  673.                 } else {
  674.                     $gld = int(rand(3));
  675.                     if ($gld eq 1) {
  676.                         $characteristics{gold} = $characteristics{gold} + 30;
  677.                     } elsif ($gld eq 2) {
  678.                         $characteristics{gold} = $characteristics{gold} + 15;
  679.                     }
  680.                     $characteristics{item1} = undef;
  681.                     $characteristics{item2} = undef;
  682.                     $characteristics{item3} = undef;
  683.                     $answerd = int(rand(4));
  684.                     if ($answerd eq 1){
  685.                         print "Торговец: Спасибо, приходи ещё!\n";
  686.                     } elsif ($gld eq 2) {
  687.                         print "Торговец: Скажи хоть спасибо что я купил у тебя эти вещи за 15 золота!";
  688.                     } elsif ($answerd eq 2){
  689.                         print "Торговец: Я некромант! Наш клан не любит ваш поэтому сваливай быстрее!";
  690.                     } elsif ($answerd eq 3) {
  691.                         print "Торговец: Берегись монстров!";
  692.                     }
  693.     }
  694.         }
  695. }
  696. }
  697. }
  698. }
  699.  
  700.  
  701. sub buildings {
  702.     foreach $key(sort keys %buildings){
  703.         if ($building eq $key){
  704.             print $buildings{$key}."\n";
  705.         }
  706.     }
  707. }
  708.  
  709. sub monstr {
  710.     #Тут с помощью int(rand(11)) вычисляется рандомное число от 0 до 10
  711.     #если это число равно 8 перед вами монстр. С помощью int мы округляем число
  712.     $monstrl = int(rand(11));
  713.     #тип монстра: 1.Люди 2.Эльфы 3.Гномы 4.Орки 5.Демоны 6.Ангелы 7.Драконы 8.Кентавры 9минотавр
  714.     $monstr_t = int(rand(10));
  715.     $quest1_r = int(rand(2));
  716.     if($quest1_r eq 1){
  717.     if ($quest1 eq "active") {
  718.         print "Вы нашли монстров которые держат у себя невесту Бесталла\n";
  719.         print "Напасть - F, R - не помогать\n";
  720.         $quest1_ans = uc <STDIN>;
  721.         chomp $quest1_ans;
  722.         if ($quest1_ans eq "F") {
  723.             &quest1;
  724.         } elsif ($quest1_ans eq "R") {
  725.             $quest1 = "false";
  726.         }
  727.     }
  728. }
  729.     if ($monstrl eq 8){
  730.         print "Впереди монстр!\n";
  731.     foreach $key(sort keys %monstrs){
  732.         if ($monstr_t eq $key){
  733.             print "Это ".$monstrs{$key}."\n";
  734.                     $z = 100;
  735.                     while ($z > 0){
  736.                         print "Убежать: r, ударить: f\n";
  737.                         $fight = uc <STDIN>;
  738.                         chomp $fight;
  739.                         if ($fight eq "R") {
  740.                             $death_f = int(rand(5));
  741.                             if ($death_f eq 1) {
  742.                                 print "Вы увязли в земле и монстр вас догнал...";
  743.                             } elsif($death_f eq 2){
  744.                                 print "Монстр кинул клинок вам в спину, вы не смогли убежать...";
  745.                             }
  746.                             elsif($death_f eq 3){
  747.                                 print "С помощью магии монстр перевернл вас. Теперь убежать не получится...";
  748.                             } elsif($death_f eq 4){
  749.                                 print "Вы спотнкнулись и монстр вас догнал";
  750.                             }
  751.                         } elsif ($fight eq "F") {
  752.                             print "Какое оружие использовать? F - меч.\n";
  753.                             print "Оружие:\n";
  754.                             if ($characteristics{arrows} <= 0){
  755.                                     print "1.(Недоступно)У вас нету нужного количества стрел.\n"
  756.                             } else{
  757.                             print "1. ".$characteristics{weapon1}."\n";
  758.                         }
  759.                             if ($characteristics{arrows} <= 0){
  760.                                     print "2.(Недоступно)У вас нету нужного количества стрел.\n"
  761.                             } else{
  762.                             print "2. ".$characteristics{weapon2}."\n";
  763.                         }
  764.                             print "3. ".$characteristics{weapon3}."\n";
  765.                             print "Стрелы: $characteristics{arrows}.\n";
  766.                             $fight_weapon = uc <STDIN>;
  767.                             chomp $fight_weapon;
  768.                             if ($fight_weapon eq "F"){
  769.                             $z = $z - $characteristics{uron}-$characteristics{power};
  770.                             $characteristics{uron} = $characteristics{uron}+$characteristics{power};
  771.                             print "Вы ударили ".$monstrs{$key}." у него осталось ".$z." здоровья \n";
  772.                             $characteristics{sword} = $characteristics{sword} -1;
  773.                             $characteristics{uron} = $characteristics{uron} +0.5;
  774.                             if ($z > 0) {
  775.                             $ud = int(rand(31));
  776.                             $characteristics{health} = $characteristics{health} - $ud;
  777.                             print "Монстр атаковал вас и снял $ud здоровья";
  778.                         } else {
  779.                             print "Вы победили монстра! +5 к здоровью, +10 золота.";
  780.                             $characteristics{health} = $characteristics{health} +5;
  781.                             $characteristics{gold} = $characteristics{gold} +10;
  782.                         }
  783.                         if ($characteristics{health} <= 0){
  784.                             print "
  785.                                                                              
  786.    //   ) )                                                                    
  787.   //         ___      _   __      ___          ___              ___      __    
  788.  //  ____  //   ) ) // ) )  ) ) //___) )     //   ) ) ||  / / //___) ) //  ) )
  789. //    / / //   / / // / /  / / //           //   / /  || / / //       //      
  790. ((____/ / ((___( ( // / /  / / ((____       ((___/ /   ||/ / ((____   //    
  791.                             ";
  792.                             die;
  793.                         }
  794.                             }
  795.                              elsif ($fight_weapon eq 1) {
  796.                                 if(!$characteristics{weapon1}){
  797.                                     print " У вас нету оружия";
  798.         } else {
  799.                                 if ($characteristics{arrows} <= 0){
  800.                                     print "1.(Недоступно)У вас нету нужного количества стрел.\n"
  801.                                     } else {
  802.                                 $z = $z - $characteristics{bow};
  803.                                 print "Вы ударили ".$monstrs{$key}." у него осталось ".$z." здоровья \n";
  804.                                 $characteristics{bow} = $characteristics{bow} +0.5;
  805.                                 $characteristics{arrows} = $characteristics{arrows} -1;
  806.                                 if ($characteristics{arrows} <= 0){
  807.                                     print "У вас недостаточно стрел.";
  808.                                 }
  809.                                 if ($z > 0) {
  810.                             $ud = int(rand(31));
  811.                             $characteristics{health} = $characteristics{health} - $ud;
  812.                             print "Монстр атаковал вас и снял $ud здоровья";
  813.                         } else {
  814.                             print "Вы победили монстра! +5 к здоровью, +10 золота.";
  815.                             $characteristics{health} = $characteristics{health} +5;
  816.                             $characteristics{gold} = $characteristics{gold} +10;
  817.                         }
  818.                         if ($characteristics{health} <= 0){
  819.                             print "
  820.                                                                              
  821.    //   ) )                                                                    
  822.   //         ___      _   __      ___          ___              ___      __    
  823.  //  ____  //   ) ) // ) )  ) ) //___) )     //   ) ) ||  / / //___) ) //  ) )
  824. //    / / //   / / // / /  / / //           //   / /  || / / //       //      
  825. ((____/ / ((___( ( // / /  / / ((____       ((___/ /   ||/ / ((____   //    
  826.                             ";
  827.                             die;
  828.                         }
  829.                     }
  830.  
  831.                             }
  832.                         }
  833.  
  834. elsif ($fight_weapon eq 2) {
  835.     if(!$characteristics{weapon2}){
  836.         print " У вас нету оружия";
  837.         } else {
  838.                                 if ($characteristics{arrows} <= 0){
  839.                                     print "1.(Недоступно)У вас нету нужного количества стрел.\n"
  840.                                     } else {
  841.                                 $z = $z - $characteristics{crossbow};
  842.                                 print "Вы ударили ".$monstrs{$key}." у него осталось ".$z." здоровья \n";
  843.                                 $characteristics{crossbow} = $characteristics{crossbow} +0.5;
  844.                                 $characteristics{arrows} = $characteristics{arrows} -1;
  845.                                 if ($characteristics{arrows} <= 0){
  846.                                     print "У вас недостаточно стрел.";
  847.                                 }
  848.                                 if ($z > 0) {
  849.                             $ud = int(rand(31));
  850.                             $characteristics{health} = $characteristics{health} - $ud;
  851.                             print "Монстр атаковал вас и снял $ud здоровья";
  852.                         } else {
  853.                             print "Вы победили монстра! +5 к здоровью, +10 золота.";
  854.                             $characteristics{health} = $characteristics{health} +5;
  855.                             $characteristics{gold} = $characteristics{gold} +10;
  856.                         }
  857.                         if ($characteristics{health} <= 0){
  858.                             print "
  859.                                                                              
  860.    //   ) )                                                                    
  861.   //         ___      _   __      ___          ___              ___      __    
  862.  //  ____  //   ) ) // ) )  ) ) //___) )     //   ) ) ||  / / //___) ) //  ) )
  863. //    / / //   / / // / /  / / //           //   / /  || / / //       //      
  864. ((____/ / ((___( ( // / /  / / ((____       ((___/ /   ||/ / ((____   //    
  865.                             ";
  866.                             die;
  867.                         }
  868.                     }
  869. }
  870.                             }
  871.  
  872.                         }
  873.                     }
  874.                     }
  875.                 }
  876.         }
  877.     }
  878.  
  879. #/START FRAGMENT#
  880.  
  881. #INPUT FRAGMENT#
  882. while(True) {
  883.     #Постройка
  884.     #1.Шахта
  885.     #2.Замок
  886.     #3.Казарма
  887.     #4.Город
  888.     #5.Башня с лучниками.
  889.     #6.Дерево
  890.     $building = int(rand(20));
  891.     &wasd;
  892.     &monstr;
  893.     &buildings;
  894.     &items;
  895.     &dealers;
  896. }
  897. #/INPUT FRAGMENT#
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement