Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use utf8;
- $os = $^O;
- if($os == "/win/"){
- print "Windows\n";
- use open qw( :encoding(cp866) :std );
- } else {
- print "Other OS\n";
- use open qw( :encoding(utf8) :std );
- }
- #START FRAGMENT#
- print '
- // ) ) // ) ) // ) ) // ) )
- //___/ / ___ __ // //___/ / //___/ / //
- / ____ / //___) ) // ) ) // / ___ ( / ____ / // ____
- // // // // // | | // // / /
- // ((____ // // // | | // ((____/ / 0.3
- ____
- ( _ \
- ( |_| |
- )___/
- (__) ERL.ORG
- perl.org
- ';
- $gn = "
- **********************************
- Hello user! This is:
- #PRpg - Perl RPG - RPG on the Perl#
- **********************************
- Write your name: ";
- print $gn;
- $name = <STDIN>;
- chomp $name;
- print "
- Knight $name
- / \
- | |
- |.|
- |.|
- |:| __
- ,_|:|_, / )
- (Oo / _I_
- +\ \ || __|
- \ \||___|
- \ /.:.\-\
- |.:. /-----\
- |___|::oOo::|
- / |:<_T_>:|
- |_____\ ::: /
- | | \ \:/
- | | | |
- \ / | \___
- / | \_____\
- `-'
- ";
- print "\n";
- <STDIN>;
- $instr_w = 'Чтобы перемещаться используйте "W", "A", "S", "D"';
- print "
- *Вперёд к приключениям!*
- _ _ _ _+ |
- /_`-'_`-'_`-'_| \+/ |
- \_`M'_`D'_`C'_| _<=>_ |
- `-' `-' `-' 0/ \ / o=o
- \/\ ^ /`0
- | /_^_\
- | || ||
- __|_d|_|b__
- ";
- print $instr_w;
- my %items = (25 => "Очень тяжелый зачарованный меч",
- 20 => "Книга зачарованний",
- 15 => "Карта местности");
- my %characteristics = (health => 100,
- maxhealth => 100,
- gold => 20,
- sword => 30,
- item1 => "",
- item2 => "",
- item3 => "",
- bow => 25,
- crossbow => 30,
- axe => 40,
- arrows => 10,
- lightning => 35,
- fireball => 40,
- maxarrows => 150,
- weapon1 => "",
- weapon2 => "",
- weapon3 => "",
- scroll1 => "",
- scroll2 => "",
- scroll3 => "",
- moves => 0,
- days => 0,
- weeks => 0,
- months => 0,
- score => 0,
- magic1 => "",
- magic2 => "",
- magic3 => "",
- magic4 => "",
- magic5 => "",
- mana => 20,
- intelligence => 0,
- power => 0,
- power_astr => 0,
- luck => 0,
- luck_astr => 0,
- magic => 0,
- magic_astr => 0,
- uron => 20,
- maxuron => 100);
- my %clothes = (hand => "quilted_gloves",
- quilted_gloves => 1,
- leather_gloves => 2,
- iron_gloves => 3,
- gods_gloves => 5,
- body => "quilted_armor",
- quilted_armor => 2,
- leather_armor => 4,
- iron_armor => 7,
- gods_armor => 12,
- pants => "quilted_pants",
- quilted_pants => 1,
- leather_pants => 3,
- iron_pants => 5,
- gods_pants => 7,
- shoes=>"quilted_shoes",
- quilted_shoes => 1,
- leather_shoes => 2,
- iron_shoes => 3,
- gods_shoes => 5);
- my %clothes_names = (quilted_gloves => "стёганные перчатки",
- leather_gloves => "кожанные перчатки",
- iron_gloves => "железные перчатки",
- gods_gloves => "перчатки бога",
- quilted_armor => "стеганные доспехи",
- leather_armor => "кожанные доспехи",
- iron_armor => "железные доспехи",
- gods_armor => "доспехи бога",
- quilted_pants => "стеганные штаны",
- leather_pants => "кожанные штаны",
- iron_pants => "железные штаны",
- gods_pants => "штаны бога",
- quilted_shoes => "стеганные ботинки",
- leather_shoes => "кожанные ботинки",
- iron_shoes => "железные ботинки",
- gods_shoes => "ботинки бога");
- my %wasd = ( W => 'Шаг вперед',
- A => 'Шаг влево',
- S => 'Шаг назад',
- D => 'Шаг вправо',
- N => "Ваше имя это: $name",
- H => "Лечится с помощью чёрной магии"
- );
- $quest1 == "inactive";
- $quest2 == "inactive";
- $quest3 == "inactive";
- $quest4 == "inactive";
- my %buildings = (1 => "шахта",
- 2 => "замок
- ** A castle**
- |Zz. |Zz.
- | |
- _L__ _|
- (____) _ /__\
- /____\ /_\ /____\
- (______) | | (______)
- | U |_____| |___________| U |
- |u | | | __ | | | u|
- | | | | |||| | | | |
- -------------''''--------------js
- ",
- 3=> "казарма
- `'::::.
- _____A_
- / /\
- __/__/\__/ \___
- ---/__|'' '' '| /___/\----
- |''|''||''| |' '||
- `''`''))''`'''''
- ",
- 4=> "город
- **A city**
- \|/
- -o- |
- /|\ ( )_
- | /\ | |
- (_) | | __ | ||-| |-[]| \|/ \|
- ___|___ _| |____ | (_)_ _( )_|[]| __(_)_|| | |_~(|)~~(|
- (_)__)__|_| []|[] |_(_)_ |[]|_|_[]__|__| __| |[]|__| | []|___|_|____|
- | |__| [] | |[] | | | | | [] | | | | | |||_| [][] |
- ",
- 5=>"башня с лучниками
- **Tower with archers**
- /\
- /\ /__\
- /__\ |. |
- |n | :_|__|_:
- :_| |_: |. |
- | n| |. |
- | | |. |
- |n |_______|. |
- |n |. |. |
- |n | |. |
- _|__|_______|__|____
- / \ \ \
- ",
- 6=>"дерево
- **A tree**
- _-_
- /~~ ~~\
- /~~ ~~\
- { }
- \ _- -_ /
- ~ \\ // ~
- _- - | | _- _
- _ - | | -_
- // \\
- "
- );
- my %dealers = (
- 1 => "минотавр
- . .
- |\____/|
- (\|----|/)
- \ 0 0 /
- | |
- ___/\../\____
- / -- \
- / \ / \
- | \___/___/( |
- \ /| }{ | \ )
- \ ||__}{__| | |
- \ |;;;;;;;\ \ / \_______
- \ /;;;;;;;;| [,,[|======'
- |;;;;;;/ | /
- ||;;|\ |
- ||;;/| /
- \_|:||__|
- \ ;|| /
- |= || =|
- |= /\ =|
- /_/ \_\
- ",
- 2 => "торговец
- .-.
- (o.o)
- |=|
- __|__
- //.=|=.\\
- // .=|=. \\
- \\ .=|=. //
- \\(_=_)//
- (:| |:)
- || ||
- () ()
- || ||
- || ||
- l42 ==' '==
- ",
- 3 => "скелет
- _..--''---.
- / ''.
- ` l
- |''._ ,._ l/''\
- | _J<__/.v._/
- \( ,~._,,,,-)
- `-\' \`,,j|
- \_,____J
- .--.__)--(__.--.
- / `-----..--'. j
- ");
- my %monstrs = ( 1 => "человек
- __ _
- /__\__ //
- //_____\///
- _| /-_-\)|/_
- (___\ _ //___\
- ( |\\_/// * \\
- \_| \_((* *))
- ( |__|_\\ *//
- (o/ _ \_*_/
- //\__|__/\
- // | | | |
- // _\ | |___)
- // (___|
- ",
- 2 => "эльф
- ..-.--..
- ,','.-`.-.`.
- :.',;' `.\.
- ||//----,-.--\|
- \`:|/-----`-'--||'/
- \\|: |:'
- `|| \ |!
- |!| ;|
- !||:. -- /|!
- /||!||:.___.|!||\
- /|!|||!| |!||!\\:.
- ,'//!||!||!`._.||!||,:\\\
- : :: |!|||!| SSt|!||! |!::
- | |! !||!|||`---!|!|| ||!|
- | || |!|||!| |!||! |!||
- ",
- 3 => "гном
- \ | / , ,-`````````'-.
- `-.\ | /,' / `. `. \ | / ,'
- ---- --- / _,---''''--.,| `.\| /,'
- --, `-. | |. __ . __,(| --- ---
- ,' /_\\_\_ | | ' ` `. `|/ / `.
- \ \ `._ |() |, `. \ /` ,| \ `.
- \ -' `-.__ \__/ `, . _ )|/' \/ | \
- `. -' `--,/| '`-'`'_`''-| \
- `-._ `| {`-`} \ \
- `-._ \, ``' |` ,---'
- `-. | \,-'
- |\ `\ \
- \ ` \, \
- / \ |`
- | \, / \
- / `' |
- | |
- / |
- / _ __ , ,'___,
- / _ ' /,-`--'/ ' / / Zeus
- `-' `--..'-----'----'---'
- ",
- 4 => "орк
- _......._
- .-'.'.'.'.'.'.`-.
- .'.'.'.'.'.'.'.'.'.`.
- /.'.' '.\
- |.' _.--...--._ |
- \ `._.-.....-._.' /
- | _..- .-. -.._ |
- .-.' `. ((@ @)) .' '.-.
- ( ^ \ `--. .-' / ^ )
- \ / . . \ /
- / .' '. .- \
- ( _.\ \ (_`-._.-'_) /._\)
- `-' \ ' .--. / `-'
- | / /|_| `-._.'\ |
- | | |_| | /-.._
- _..-\ `.--.______.' |
- \ ..... |
- `. .' `. /
- \ .'
- LGB `-..___..-`
- ",
- 5 => "демон
- ,--, ,.-.
- , \, '-,-`,'-.' | ._
- /| \ , |\ } )/ / `-,',
- [ , |\ /| | | / \| |/` ,`
- | | ,.` `,` `, | | _,...( ( .',
- \ \ __ ,-` ` , , `/ |,' Y ( /_L\
- \ \_\,``, ` , , / | ) _,/
- \ ' ` ,_ _`_,-,<._.< / /
- ', `>.,` ` ` ,., |_ | /
- \/` `, ` ,` | /__,.-` _, `\
- -,-..\ _ \ ` / , / `._) _,-\` \
- \_,,.) /\ ` / / ) (-,, `` , |
- ,` ) | \_\ '-` | `( \
- / /```( , --, ,' \ |`<` , |
- / /_,--`\ <\ V /> ,` )<_/) | \ _____)
- ,-, ,` ` (_,\ \ | /) / __/ / `----`
- (-, \ ) \ ('_.-._)/ /,` /
- | / ` `/ \\ V V, /` /
- ,--\( , <_/`\\ || /
- ( ,``- \/| \-A.A-`| /
- ,>,_ )_,..( )\ -,,_-` _--`
- (_ \|` _,/_ / \_ ,--`
- \( ` <.,../` `-.._ _,-`
- ",
- 6 => "ангел
- _ _
- ( `-._\|||||/_.-' )
- \ ((('_'))) /
- ) ))) ((( (
- ( ((( v ))) )
- )`--' )X( `-._(
- / _./ \._ \
- / .' / \ `. \
- (__/ / \ \__)
- / \
- jgs / \
- WwWwWwWwWwWwWwW
- ",
- 7 => "дракон
- -,,,__
- \ ``~~--,,__ / /
- / ``~~--,,_ //--//
- _,,,,-----,\ ,,,,---- > (c c)\
- ,;'' `\,,,,----'''' ,,-'''---/ /_ ;___ -,_
- ( ''---,;====;,----/ (-,,_____/ /'/ `; '''''----\ `:.
- ( ' ` (oo)/ ;~~~~~~~~~~~~~/--~
- `;_ ; \ ; \ ` ' ,,'
- ```-----...| )___________| )-----'''
- Art by \ / \ \\
- Korrath / /, `\ \\
- ,'---\ \ ,---`,;,
- ```
- ",
- 8 => "кентавр
- <=======]}======
- --. /|
- _\"/_.'/
- .'._._,.'
- :/ \{}/
- (L /--',----._
- | \\
- : /-\ .'-'\ / |
- snd \\, || \|
- \/ || ||
- "
- );
- sub mdw{
- $characteristics{moves} = $characteristics{moves} + 1;
- $day = $day + 1;
- if($day eq 7){
- $characteristics{days} = $characteristics{days} + 1;
- undef $day;
- }
- $week = $week + 1;
- if ($week eq "49"){
- $characteristics{weeks} = $characteristics{weeks} + 1;
- undef $week;
- &astrologers;
- }
- $month = $month + 1;
- if ($month eq "147"){
- $characteristics{months} = $characteristics{months} + 1;
- undef $month;
- }
- }
- sub astrologers{
- $week_name = int(rand(4));
- if ($week_name eq 1){
- $week_n = "магии (магия +1)";
- $w_n = "magic";
- } elsif ($week_name eq 2){
- $week_n = "силы (сила +1)";
- $w_n = "power";
- } elsif ($week_name eq 3){
- $week_n = "удачи";
- $w_n = "luck";
- }
- print "
- **************************************
- *Астрологи объявили неделю $week_n*
- **************************************
- \n";
- if($w_n eq "magic"){
- $characteristics{magic} = $characteristics{magic} + 1;
- undef $w_n;
- $magic_astr = 1;
- if($power_astr eq 1){
- if($characteristics{power} != 0){
- $characteristics{power} = $characteristics{power} -1;
- }
- } elsif($luck_astr eq 1){
- if($characteristics{luck} != 0){
- $characteristics{luck} = $characteristics{luck} -1;
- }
- }
- } elsif($w_n eq "power"){
- $power_astr = 1;
- $characteristics{power} = $characteristics{power} + 1;
- undef $w_n;
- $power_astr = 1;
- if($magic_astr eq 1){
- if($characteristics{magic} != 0){
- $characteristics{magic} = $characteristics{magic} -1;
- }
- } elsif($power_astr eq 1){
- if($characteristics{luck} != 0){
- $characteristics{luck} = $characteristics{luck} -1;
- }
- }
- } elsif($w_n eq "luck"){
- $luck_astr = 1;
- $characteristics{luck} = $characteristics{luck} + 1;
- undef $w_n;
- $luck_astr = 1;
- if($power_astr eq 1){
- if($characteristics{power} != 0){
- $characteristics{power} = $characteristics{power} -1;
- }
- } elsif($magic_astr eq 1){
- if($characteristics{magic} != 0){
- $characteristics{magic} = $characteristics{magic} -1;
- }
- }
- }
- }
- sub items {
- $items = int(rand(30)) - $characteristics{luck};
- foreach $key(sort keys %items){
- if ($items eq $key){
- print "Ты нашёл: ". $items{$key}."\n";
- if (!$characteristics{item1}){
- $characteristics{item1} = $items{$key};
- } elsif (!$characteristics{item2}){
- $characteristics{item2} = $items{$key};
- } elsif (!$characteristics{item3}){
- $characteristics{item3} = $items{$key};
- } else {
- print "Инвентарь полон!";
- }
- }
- }
- }
- sub wasd{
- #Считываем ввод с клавиатуры. С помощью uc мы переводим ввод в верхний
- #регистр, а с помощью функции chomp() мы удаляем последний символ \n
- $enter_b = uc <STDIN>;
- chomp $enter_b;
- if ($enter_b eq "IWANTTOBEAGOD" or $enter_b eq "PERLISROCK"){
- print "Вы применили чит-код!\n";
- $characteristics{gold} = $characteristics{gold} +1000;
- $characteristics{power} = 10;
- $characteristics{health} = 1000;
- $characteristics{intelligence} = 10;
- $characteristics{luck} = 10;
- $characteristics{mana} = 1000;
- $clothes{hand} = "gods_gloves";
- $clothes{body} = "gods_armor";
- $clothes{pants} = "gods_pants";
- $clothes{shoes} = "gods_shoes";
- $characteristics{weapon1} = "Лук";
- $characteristics{weapon2} = "Арбалет";
- $characteristics{weapon3} = "Топор";
- $characteristics{magic1} = "Молния";
- $characteristics{magic2} = "Фаерболл";
- $characteristics{score} = 1000;
- } elsif($enter_b eq "MONEY") {
- $characteristics{gold} = 1000;
- print "Вы применили чит-код!\n";
- }
- elsif ($enter_b eq "B"){
- if (!$characteristics{item1} or !$characteristics{item2} or !$characteristics{item3}) {
- print "Извини... но у тебя нет нужного количества предметов.\n";
- } else {
- $characteristics{gold} = $characteristics{gold} + 10;
- $characteristics{item1} = undef;
- $characteristics{item2} = undef;
- $characteristics{item3} = undef;
- print "С помощью чёрной магии вы превратили найденное барахло в золото!\n";
- }
- }
- elsif ($enter_b eq "T") {
- print "
- ______ __ __ ____ ____ __ _ _____
- | || | | / || \ | |/ ]/ ___/
- | || | || o || _ || ' /( \_
- |_| |_|| _ || || | || \ \__ |
- | | | | || _ || | || \/ \ |
- | | | | || | || | || . |\ |
- |__| |__|__||__|__||__|__||__|\_| \___|
- \n";
- sleep (1);
- print "SITES\n";
- sleep(1);
- print "stackoverflow.com for help with perl\n";
- sleep(1);
- print "patorjk.com for ASCII art\n";
- sleep (1);
- print "www.asciiart.eu for ASCII art\n";
- sleep (1);
- print "ascii.co.uk for ASCII art\n";
- sleep (1);
- print "www.cyberforum.ru for help with perl\n";
- sleep(1);
- print "perl.org for... PERL!\n";
- sleep (1);
- print "PEOPLE\n";
- sleep(1);
- print "Larry Wall for... perl!\n";
- sleep (1);
- print "GAMES\n";
- sleep(1);
- print "Might and Magic Book One: The Secret of the Inner Sanctum for inspiration\n";
- sleep (1);
- print "Fallout 1 for inspiration\n";
- sleep (1);
- print "Heroes of Might and Magic III for inspiration\n";
- sleep (1);
- print "BOOKS\n";
- sleep (1);
- print "Programming Perl 3th edition for help with perl\n";
- sleep (2);
- }
- elsif ($enter_b eq "Y") {
- if($clothes{hand} or $clothes{body} or $clothes{pants} or $clothes{shoes}){
- foreach $key(sort keys %clothes){
- if ($clothes{hand} eq $key){
- $protection_hand = $clothes{$key};
- }
- if ($clothes{body} eq $key){
- $protection_body= $clothes{$key};
- }
- if ($clothes{pants} eq $key){
- $protection_pants = $clothes{$key};
- }
- if ($clothes{shoes} eq $key){
- $protection_shoes = $clothes{$key};
- }
- $protection = $protection_shoes + $protection_hand + $protection_body + $protection_pants;
- }
- }
- print "Здоровье: $characteristics{health}\n";
- print "Золото: $characteristics{gold}\n";
- if($characteristics{gold} < 100 or $characteristics{gold} eq 100){
- print "Статус: нищий\n";
- } elsif ($characteristics{gold} > 100 and $characteristics{gold} < 300) {
- print "Статус: при деньгах\n";
- }
- elsif ($characteristics{gold} > 300 or $characteristics{gold} eq 300) {
- print "Статус: Богач\n";
- }
- $uron_power = $characteristics{uron}+$characteristics{power};
- print "Вы наносите: ".$uron_power." урона\n";
- print "Характеристики:\n";
- print "1.Сила: $characteristics{power}\n";
- print "2.Интеллект: $characteristics{intelligence}\n";
- print "3.Удача: $characteristics{luck}\n";
- print "4.Магия: $characteristics{magic}\n";
- print "Вы сделали $characteristics{moves} ходов. Прошло $characteristics{days} дней, $characteristics{weeks} недель и $characteristics{months} месецев\n";
- print "Инвентарь:\n";
- print "1. ".$characteristics{item1}."\n";
- print "2. ".$characteristics{item2}."\n";
- print "3. ".$characteristics{item3}."\n";
- print "Оружие:\n";
- print "1. ".$characteristics{weapon1}."\n";
- print "2. ".$characteristics{weapon2}."\n";
- print "3. ".$characteristics{weapon3}."\n";
- print "Магия:\n";
- print "1. ".$characteristics{magic1}."\n";
- print "2. ".$characteristics{magic2}."\n";
- print "3. ".$characteristics{magic3}."\n";
- print "4. ".$characteristics{magic4}."\n";
- print "5. ".$characteristics{magic5}."\n";
- print "Score: $characteristics{score}.\n";
- print "Уровень: ";
- if($characteristics{score} < 100) {
- print "1 уровень.";
- } elsif ($characteristics{score} eq 100 or $characteristics{score} < 200) {
- print "2 уровень.";
- } elsif ($characteristics{score} eq 200 or $characteristics{score} < 300) {
- print "3 уровень.";
- }elsif ($characteristics{score} eq 300 or $characteristics{score} < 400) {
- print "4 уровень.";
- }elsif ($characteristics{score} eq 400 or $characteristics{score} < 500) {
- print "5 уровень.";
- }elsif ($characteristics{score} eq 500 or $characteristics{score} < 600) {
- print "6 уровень.";
- }elsif ($characteristics{score} eq 600 or $characteristics{score} < 700) {
- print "7 уровень.";
- }elsif ($characteristics{score} eq 700 or $characteristics{score} < 800) {
- print "8 уровень.";
- }elsif ($characteristics{score} eq 800 or $characteristics{score} < 900) {
- print "9 уровень.";
- }elsif ($characteristics{score} eq 900 or $characteristics{score} < 1000 or $characteristics{score} eq 1000) {
- print "10 уровень.";
- } elsif ($characteristics{score} > 1000){
- print "БОГ";
- }
- print "\n";
- print "Мана: $characteristics{mana}.\n";
- print "Защита: $protection.\n";
- if($clothes{hand} or $clothes{body} or $clothes{pants} or $clothes{shoes}){
- foreach $key(sort keys %clothes_names){
- if ($clothes{hand} eq $key){
- $name_hand = $clothes_names{$key};
- }
- if ($clothes{body} eq $key){
- $name_body= $clothes_names{$key};
- }
- if ($clothes{pants} eq $key){
- $name_pants = $clothes_names{$key};
- }
- if ($clothes{shoes} eq $key){
- $name_shoes = $clothes_names{$key};
- }
- }
- }
- print "Руки: $name_hand\n";
- print "Тело: $name_body\n";
- print "Ноги: $name_pants\n";
- print "Обувь: $name_shoes\n";
- print "Стрелы: $characteristics{arrows}.\n";
- print "Квесты:\n";
- if ($quest1 eq "active"){
- print "Отнести свиток Бесталла - квест активный\n";
- } elsif ($quest1 eq "done") {
- print "Отнести свиток Бесталла - квест выполнен\n";
- } elsif ($quest1 eq "false") {
- print "Отнести свиток Бесталла - квест провален\n";
- }
- } elsif ($enter_b eq "H") {
- if ($characteristics{health} eq 100 or $characteristics{health} > 100){
- print "У вас максимальное здоровье!\n";
- } elsif ($characteristics{gold} eq 0 or $characteristics{gold} < 0) {
- print "У вас нехватает золота!";
- }
- else {
- $characteristics{gold} = $characteristics{gold} - 10;
- $characteristics{health} = $characteristics{health} + 10;
- }
- }
- foreach $key(sort keys %wasd){
- if ($enter_b eq $key){
- print $wasd{$key}."\n";
- }
- }
- }
- sub dealers {
- $rand_q = int(rand(10));
- if ($rand_q eq 1){
- $deal = int(rand(20)) - $characteristics{luck};
- foreach $key(sort keys %dealers){
- if ($deal eq $key) {
- if($quest1 == "inactive" or $quest != "done"){
- print $dealers{$key}."\n";
- print "Бесталл: Привет...\n";
- print "Вы:\n";
- print "1. Что случилось?.\n";
- print "2. Привет.\n";
- print "Пропустить диалог <Enter>.\n";
- $deal_quest1 = uc <STDIN>;
- chomp $deal_quest1;
- if($deal_quest1 eq 1){
- print "Бесталл: мне нужно отнести свиток Ространу\n";
- print "Вы:\n";
- print "1. Я могу тебе помочь.\n";
- print "2. Понятно, пока.\n";
- $deal_quest1_ans = uc <STDIN>;
- chomp $deal_quest1_ans;
- if($deal_quest1_ans eq 1){
- print "Бесталл: Спасибо!";
- $quest1 = "active";
- } elsif ($deal_quest1_ans eq 2){
- print "Бесталл: Пока";
- }
- } elsif ($deal_quest1 eq 2){
- print "Бесталл: привет.\n";
- }
- }
- }
- }
- }elsif($rand_q eq 2){
- print $monstrs{3};
- print "\n";
- print "Маг: Здравствуй, страник! Я могу предложить тебе купить у меня ману и несколько заклинаний\n";
- print "1. Выучить заклинание огненых шаров - 60 золота.\n";
- print "2. Мана 100 - 45 золота.\n";
- $buy = uc <STDIN>;
- chomp $buy;
- if($buy eq 1){
- if($characteristics{gold} < 60){
- print "У вас недостаточно средств\n";
- } else {
- $characteristics{magic2} = "Огненые шары";
- $characteristics{gold} = $characteristics{gold} - 60;
- $characteristics{score} = $characteristics{score} + 14;
- print "Вы купили заклинание огненых шаров!\n";
- print "Маг: спасибо, приходи ещё!";
- }
- } elsif ($buy eq 2){
- if($characteristics{gold} < 45){
- print "У вас недостаточно средств\n";
- } else {
- if($characteristics{mana} eq 200 or $characteristics{mana} > 200){
- print "У вас максимальный уровень маны\n";
- } else {
- $characteristics{gold} = $characteristics{gold} - 45;
- $characteristics{mana} = $characteristics{mana} +100;
- $characteristics{score} = $characteristics{score} + 20;
- print "Вы купили ману! +100\n";
- }
- }
- }
- }elsif($rand_q eq 4){
- if ($quest1 eq "active") {
- print $dealers{3};
- print "Ростран: привет\n";
- print "Вы:\n";
- print "1. Привет, Бесталл попросил принести тебе свиток. Держи.\n";
- print "2. Пока.\n";
- print "Пропустить диалог <Enter>.\n";
- $quest1_ans = uc <STDIN>;
- chomp $quest1_ans;
- if ($quest1_ans eq "1") {
- print "Ростран: спасибо! За это я дам тебе 20 золота и кожанную перчатку.\n";
- $clothes{hand} = "leather_gloves";
- $characteristics{gold} = $characteristics{gold} + 20;
- $quest1 = "done";
- } elsif ($quest1_ans eq "2") {
- print "Ростран: пока\n";
- }
- }
- } elsif ($rand_q eq 3){
- $deal = int(rand(20)) - $characteristics{luck};
- foreach $key(sort keys %dealers){
- if ($deal eq $key) {
- print $dealers{$key}."\n";
- print "Вы встретили торговца, B продать весь инвентарь\n";
- print "1. Зелье силы (+1) - 30 золота.\n";
- print "2. Зелье ума (+1) - 30 золота.\n";
- print "3. Зелье удачи (+1) 35 золота.\n";
- print "4. Здоровье +10 - 10 золота.\n";
- print "5. Лук - 50 золота.\n";
- print "6. Выучить заклинание молнии - 70 золота.\n";
- print "7. Мана 50 - 30 золота.\n";
- $buy = uc <STDIN>;
- chomp $buy;
- if($buy eq 1){
- if($characteristics{gold} < 30){
- print "У вас недостаточно средств\n";
- } else {
- if($characteristics{power} eq 10 or $characteristics{power} > 10){
- print "У вас максимальный уровень силы\n";
- } else {
- $characteristics{gold} = $characteristics{gold} - 30;
- $characteristics{uron} = $characteristics{uron} + 1;
- $characteristics{power} = $characteristics{power} +1;
- $characteristics{score} = $characteristics{score} + 5;
- print "Вы купили зелье силы! +1\n";
- }
- }
- } elsif($buy eq 2){
- if($characteristics{gold} < 30){
- print "У вас недостаточно средств\n";
- } else {
- if($characteristics{intelligence} eq 10 or $characteristics{intelligence} > 10){
- print "У вас максимальный уровень ума\n";
- } else {
- $characteristics{gold} = $characteristics{gold} - 30;
- $characteristics{intelligence} = $characteristics{intelligence} +1;
- $characteristics{score} = $characteristics{score} + 5;
- print "Вы купили зелье ума! +1\n";
- }
- }
- } elsif($buy eq 3){
- if($characteristics{gold} < 35){
- print "У вас недостаточно средств\n";
- } else {
- if($characteristics{luck} eq 10 or $characteristics{luck} > 10){
- print "У вас максимальный уровень удачи\n";
- } else {
- $characteristics{gold} = $characteristics{gold} - 35;
- $characteristics{luck} = $characteristics{luck} +1;
- $characteristics{score} = $characteristics{score} + 5;
- print "Вы купили зелье удачи! +1\n";
- }
- }
- } elsif($buy eq 4){
- if($characteristics{gold} < 10){
- print "У вас недостаточно средств\n";
- } else {
- if ($characteristics{health} eq 100 or $characteristics{health} > 100){
- print "У вас максимальное здоровье!\n";
- } else {
- $characteristics{gold} = $characteristics{gold} - 10;
- $characteristics{health} = $characteristics{health} + 10;
- $characteristics{score} = $characteristics{score} + 5;
- print "Вы купили зелье здоровья! +1\n";
- }
- }
- } elsif($buy eq 5) {
- if($characteristics{gold} < 50){
- print "У вас недостаточно средств\n";
- } else {
- $characteristics{weapon1} = "Лук";
- $characteristics{gold} = $characteristics{gold} - 50;
- $characteristics{score} = $characteristics{score} + 10;
- print "Вы купили лук!\n";
- }
- }
- elsif($buy eq 6) {
- if($characteristics{gold} < 70){
- print "У вас недостаточно средств\n";
- } else {
- $characteristics{magic1} = "Молния";
- $characteristics{gold} = $characteristics{gold} - 70;
- $characteristics{score} = $characteristics{score} + 12;
- print "Вы купили заклинание молнии!\n";
- }
- } elsif($buy eq 7){
- if($characteristics{gold} < 30){
- print "У вас недостаточно средств\n";
- } else {
- if($characteristics{mana} eq 200 or $characteristics{mana} > 200){
- print "У вас максимальный уровень маны\n";
- } else {
- $characteristics{gold} = $characteristics{gold} - 30;
- $characteristics{mana} = $characteristics{mana} +50;
- $characteristics{score} = $characteristics{score} + 10;
- print "Вы купили ману! +50\n";
- }
- }
- }
- if ($buy eq "B"){
- if (!$characteristics{item1} or !$characteristics{item2} or !$characteristics{item3}) {
- $answ_d_1 = int(rand(20)) - $characteristics{luck};
- if ($answ_d_1 eq 1) {
- print "Торговец: Проваливай у тебя нету нужного количества предметов!\n";
- print "Вы:\n";
- print "1.Как тебя зовут? Из какого клана?\n";
- print "2.Что это за место?\n";
- print "3.А мне и не нужны твои паршивое золото.\n";
- print "Чтобы не вступать в беседу нажмите <Enter>\n";
- $answ_d_1_1 = <STDIN>;
- chomp $answ_d_1_1;
- if($answ_d_1_1 eq 1){
- print "Торговец: Меня зовут Ростран. Я из клана \"леденящий ветер\"\n";
- }elsif ($answ_d_1_1 eq 2){
- print "Торговец: Слушай, мне некогда болтать с тобой, у меня есть дела по важнее.\n";
- }
- elsif ($answ_d_1_1 eq 3){
- print "Торговец: И мне твоё тоже! Хоть в чём-то я с тобой соглашусь.";
- }
- } elsif($answ_d_1 eq 2) {
- print "Торговец: Прийди в другой раз. Когда накопишь предметов.\n";
- print "Вы:\n";
- print "1.Как тебя зовут? Из какого клана?\n";
- print "2.Спасибо за помощь!.\n";
- print "Чтобы не вступать в беседу нажмите <Enter>\n";
- $answ_d_1_2 = <STDIN>;
- chomp $answ_d_1_2;
- if($answ_d_1_2 eq 1){
- print "Торговец: Меня зовут Дегдрин и я одиночка. Когда-то давно я был в клане \"Серебрянная кровь\", но я многое переосмыслил с того времени\n";
- }elsif ($answ_d_1_1 eq 2){
- print "Торговец: Всегда обращяйся!\n";
- }
- } elsif ($answ_d_1 eq 3) {
- print "Торговец: Извини... но у тебя нет нужного количества предметов.\n";
- print "Вы:\n";
- print "1.Ладно, я приду в другой раз.\n";
- print "2.Спасибо за помощь!.\n";
- print "Чтобы не вступать в беседу нажмите <Enter>\n";
- $answ_d_1_2 = <STDIN>;
- chomp $answ_d_1_2;
- if($answ_d_1_2 eq 1){
- print "Торговец: Буду ждать.\n";
- }elsif ($answ_d_1_1 eq 2){
- print "Торговец: Всегда обращяйся!\n";
- }
- } elsif ($answ_d_1 eq 4) {
- print "Торговец: Я не разговариваю с людьми! Проваливай!\n";
- print "Вы:\n";
- print "1.Ладно, я приду в другой раз.\n";
- print "2.Спасибо за помощь!.\n";
- print "Чтобы не вступать в беседу нажмите <Enter>\n";
- $answ_d_1_2 = <STDIN>;
- chomp $answ_d_1_2;
- if($answ_d_1_2 eq 1){
- print "Торговец: ПРОВАЛИВАЙ!.\n";
- }elsif ($answ_d_1_1 eq 2){
- print "Торговец: Всегда обращяйся!\n";
- }
- }
- } else {
- $gld = int(rand(3));
- if ($gld eq 1) {
- $characteristics{gold} = $characteristics{gold} + 30;
- $characteristics{score} = $characteristics{score} + 15;
- } elsif ($gld eq 2) {
- $characteristics{gold} = $characteristics{gold} + 15;
- $characteristics{score} = $characteristics{score} + 10;
- }
- $characteristics{item1} = undef;
- $characteristics{item2} = undef;
- $characteristics{item3} = undef;
- $answerd = int(rand(4));
- if ($answerd eq 1){
- print "Торговец: Спасибо, приходи ещё!\n";
- } elsif ($gld eq 2) {
- print "Торговец: Скажи хоть спасибо что я купил у тебя эти вещи за 15 золота!";
- } elsif ($answerd eq 2){
- print "Торговец: Я некромант! Наш клан не любит ваш поэтому сваливай быстрее!";
- } elsif ($answerd eq 3) {
- print "Торговец: Берегись монстров!";
- }
- }
- }
- }
- }
- }
- }
- sub dungeon($name_dung, $num_dung){
- while (1){
- print "Остаться Y N\n";
- $dung = uc <STDIN>;
- chomp $dung;
- if($dung eq "N"){
- last if($dung == "N");
- } else{
- if($dung == "Y"){
- print "Вы в $name_dung\n";
- &wasd;
- &monstr;
- if($key eq 1){
- $gold_random_dung_num = int(rand(3));
- if($gold_random_dung_num eq 1){
- $gold_random_dung = int(rand(2));
- print "Вы нашли $gold_random_dung золота";
- }
- }
- }
- }
- }
- }
- sub buildings {
- foreach $key(sort keys %buildings){
- if ($building eq $key){
- print $buildings{$key}."\n";
- if($key != 6){
- print "F зайти R не заходить\n";
- $dung = uc <STDIN>;
- chomp $dung;
- if($dung eq "F"){
- if($key eq 1){
- $name_dung = "шахте";
- } elsif($key eq 2){
- $name_dung = "замке";
- }elsif($key eq 3){
- $name_dung = "казарме";
- }
- elsif($key eq 4){
- $name_dung = "городе";
- }
- elsif($key eq 5){
- $name_dung = "башне с лучниками";
- }
- &dungeon($name_dung, $key);
- } elsif($dung eq "R") {
- print "Вы не стали заходить\n";
- last if($dung == "R");
- }
- }
- }
- }
- }
- sub monstr {
- #Тут с помощью int(rand(11)) вычисляется рандомное число от 0 до 10
- #если это число равно 8 перед вами монстр. С помощью int мы округляем число
- $monstrl = int(rand(11));
- #тип монстра: 1.Люди 2.Эльфы 3.Гномы 4.Орки 5.Демоны 6.Ангелы 7.Драконы 8.Кентавры 9минотавр
- $monstr_t = int(rand(10));
- if ($monstrl eq 8){
- print "Впереди монстр!\n";
- foreach $key(sort keys %monstrs){
- if ($monstr_t eq $key){
- print "Это ".$monstrs{$key}."\n";
- $z = 100;
- while ($z > 0){
- print "Убежать: r, ударить: f\n";
- $fight = uc <STDIN>;
- chomp $fight;
- if ($fight eq "F") {
- print "Какое оружие использовать? F - меч.\n";
- print "Оружие:\n";
- if ($characteristics{arrows} <= 0){
- print "1.(Недоступно)У вас нету нужного количества стрел.\n"
- } else{
- print "1. ".$characteristics{weapon1}."\n";
- }
- if ($characteristics{arrows} <= 0){
- print "2.(Недоступно)У вас нету нужного количества стрел.\n"
- } else{
- print "2. ".$characteristics{weapon2}."\n";
- }
- print "3. ".$characteristics{weapon3}."\n";
- print "Стрелы: $characteristics{arrows}.\n";
- print "Магия:\n";
- print "4. ".$characteristics{magic1}."\n";
- print "5. ".$characteristics{magic2}."\n";
- print "6. ".$characteristics{magic3}."\n";
- print "7. ".$characteristics{magic4}."\n";
- print "8. ".$characteristics{magic5}."\n";
- print "Мана: $characteristics{mana}\n";
- $fight_weapon = uc <STDIN>;
- chomp $fight_weapon;
- if ($fight_weapon eq "F"){
- $z = $z - $characteristics{uron}-$characteristics{power};
- $characteristics{uron} = $characteristics{uron}+$characteristics{power};
- print "Вы ударили ".$monstrs{$key}." у него осталось ".$z." здоровья \n";
- $characteristics{sword} = $characteristics{sword} -1;
- $characteristics{uron} = $characteristics{uron} +0.5;
- if ($z > 0) {
- $ud = int(rand(31));
- $characteristics{health} = $characteristics{health} - $ud + $protection;
- $ud = $ud + $protection;
- print "Монстр атаковал вас и снял $ud здоровья";
- } else {
- print "Вы победили монстра! +5 к здоровью, +10 золота.";
- $characteristics{health} = $characteristics{health} +5;
- $monstr_gold = int(rand(4));
- if($monstr_gold eq 1) {
- $characteristics{gold} = $characteristics{gold} +10;
- } elsif($monstr_gold eq 2){
- $characteristics{gold} = $characteristics{gold} +15;
- } elsif($monstr_gold eq 3){
- $characteristics{gold} = $characteristics{gold} +18;
- }
- $characteristics{score} = $characteristics{score} + 20;
- }
- if ($characteristics{health} <= 0){
- print "
- // ) )
- // ___ _ __ ___ ___ ___ __
- // ____ // ) ) // ) ) ) ) //___) ) // ) ) || / / //___) ) // ) )
- // / / // / / // / / / / // // / / || / / // //
- ((____/ / ((___( ( // / / / / ((____ ((___/ / ||/ / ((____ //
- ";
- die;
- }
- }
- elsif ($fight_weapon eq 1) {
- if(!$characteristics{weapon1}){
- print " У вас нету оружия";
- } else {
- if ($characteristics{arrows} <= 0){
- print "1.(Недоступно)У вас нету нужного количества стрел.\n"
- } else {
- $z = $z - $characteristics{bow};
- print "Вы ударили ".$monstrs{$key}." у него осталось ".$z." здоровья \n";
- $characteristics{bow} = $characteristics{bow} +0.5;
- $characteristics{arrows} = $characteristics{arrows} -1;
- if ($characteristics{arrows} <= 0){
- print "У вас недостаточно стрел.";
- }
- if ($z > 0) {
- $ud = int(rand(31));
- $characteristics{health} = $characteristics{health} - $ud + $protection;
- $ud = $ud + $protection;
- print "Монстр атаковал вас и снял $ud здоровья";
- } else {
- print "Вы победили монстра! +5 к здоровью, +10 золота.";
- $characteristics{health} = $characteristics{health} +5;
- $characteristics{gold} = $characteristics{gold} +10;
- }
- if ($characteristics{health} <= 0){
- print "
- // ) )
- // ___ _ __ ___ ___ ___ __
- // ____ // ) ) // ) ) ) ) //___) ) // ) ) || / / //___) ) // ) )
- // / / // / / // / / / / // // / / || / / // //
- ((____/ / ((___( ( // / / / / ((____ ((___/ / ||/ / ((____ //
- ";
- die;
- }
- }
- }
- }
- elsif ($fight_weapon eq 2) {
- if(!$characteristics{weapon2}){
- print " У вас нету оружия";
- } else {
- if ($characteristics{arrows} <= 0){
- print "1.(Недоступно)У вас нету нужного количества стрел.\n"
- } else {
- $z = $z - $characteristics{crossbow};
- print "Вы ударили ".$monstrs{$key}." у него осталось ".$z." здоровья \n";
- $characteristics{crossbow} = $characteristics{crossbow} +0.5;
- $characteristics{arrows} = $characteristics{arrows} -1;
- if ($characteristics{arrows} <= 0){
- print "У вас недостаточно стрел.";
- }
- if ($z > 0) {
- $ud = int(rand(31));
- $characteristics{health} = $characteristics{health} - $ud + $protection;
- $ud = $ud + $protection;
- print "Монстр атаковал вас и снял $ud здоровья";
- } else {
- print "Вы победили монстра! +5 к здоровью, +10 золота.";
- $characteristics{health} = $characteristics{health} +5;
- $characteristics{gold} = $characteristics{gold} +10;
- }
- if ($characteristics{health} <= 0){
- print "
- // ) )
- // ___ _ __ ___ ___ ___ __
- // ____ // ) ) // ) ) ) ) //___) ) // ) ) || / / //___) ) // ) )
- // / / // / / // / / / / // // / / || / / // //
- ((____/ / ((___( ( // / / / / ((____ ((___/ / ||/ / ((____ //
- ";
- die;
- }
- }
- }
- } elsif ($fight_weapon eq 3) {
- if(!$characteristics{weapon3}){
- print " У вас нету оружия";
- } else {
- $z = $z - $characteristics{axe};
- print "Вы ударили ".$monstrs{$key}." у него осталось ".$z." здоровья \n";
- $characteristics{axe} = $characteristics{axe} +0.5;
- if ($z > 0) {
- $ud = int(rand(31));
- $characteristics{health} = $characteristics{health} - $ud + $protection;
- $ud = $ud + $protection;
- print "Монстр атаковал вас и снял $ud здоровья";
- } else {
- print "Вы победили монстра! +5 к здоровью, +10 золота.";
- $characteristics{health} = $characteristics{health} +5;
- $characteristics{gold} = $characteristics{gold} +10;
- }
- if ($characteristics{health} <= 0){
- print "
- // ) )
- // ___ _ __ ___ ___ ___ __
- // ____ // ) ) // ) ) ) ) //___) ) // ) ) || / / //___) ) // ) )
- // / / // / / // / / / / // // / / || / / // //
- ((____/ / ((___( ( // / / / / ((____ ((___/ / ||/ / ((____ //
- ";
- die;
- }
- }
- } elsif ($fight_weapon eq 4) {
- if(!$characteristics{magic1}){
- print " У вас нету магии";
- } else {
- if ($characteristics{mana} < 20){
- print "a.(Недоступно)У вас нету нужного количества маны.\n";
- } else {
- $z = $z - $characteristics{lightning} - $characteristics{magic};
- print "Вы ударили ".$monstrs{$key}." у него осталось ".$z." здоровья \n";
- $characteristics{lightning} = $characteristics{lightning} +0.5;
- $characteristics{mana} = $characteristics{mana} -20;
- $characteristics{magic} = $characteristics{magic} + 0.1;
- if ($characteristics{mana} < 20){
- print "У вас недостаточно маны.\n";
- }
- if ($z > 0) {
- $ud = int(rand(31));
- $characteristics{health} = $characteristics{health} - $ud + $protection;
- $ud = $ud + $protection;
- print "Монстр атаковал вас и снял $ud здоровья";
- } else {
- print "Вы победили монстра! +5 к здоровью, +10 золота.";
- $characteristics{health} = $characteristics{health} +5;
- $characteristics{gold} = $characteristics{gold} +10;
- }
- if ($characteristics{health} <= 0){
- print "
- // ) )
- // ___ _ __ ___ ___ ___ __
- // ____ // ) ) // ) ) ) ) //___) ) // ) ) || / / //___) ) // ) )
- // / / // / / // / / / / // // / / || / / // //
- ((____/ / ((___( ( // / / / / ((____ ((___/ / ||/ / ((____ //
- ";
- die;
- }
- }
- }
- } elsif($fight_weapon eq 5){
- if(!$characteristics{magic2}){
- print " У вас нету магии";
- } else {
- if ($characteristics{mana} < 20){
- print "a.(Недоступно)У вас нету нужного количества маны.\n";
- } else {
- $z = $z - $characteristics{fireball} - $characteristics{magic};
- print "Вы ударили ".$monstrs{$key}." у него осталось ".$z." здоровья \n";
- $characteristics{lightning} = $characteristics{lightning} +0.5;
- $characteristics{mana} = $characteristics{mana} -20;
- $characteristics{magic} = $characteristics{magic} + 0.1;
- if ($characteristics{mana} < 20){
- print "У вас недостаточно маны.\n";
- }
- if ($z > 0) {
- $ud = int(rand(31));
- $characteristics{health} = $characteristics{health} - $ud + $protection;
- $ud = $ud + $protection;
- print "Монстр атаковал вас и снял $ud здоровья";
- } else {
- print "Вы победили монстра! +5 к здоровью, +10 золота.";
- $characteristics{health} = $characteristics{health} +5;
- $characteristics{gold} = $characteristics{gold} +10;
- }
- if ($characteristics{health} <= 0){
- print "
- // ) )
- // ___ _ __ ___ ___ ___ __
- // ____ // ) ) // ) ) ) ) //___) ) // ) ) || / / //___) ) // ) )
- // / / // / / // / / / / // // / / || / / // //
- ((____/ / ((___( ( // / / / / ((____ ((___/ / ||/ / ((____ //
- ";
- die;
- }
- }
- }
- }
- } elsif ($fight eq "R"){
- $death_f = int(rand(5));
- if ($death_f eq 1) {
- print "Вы увязли в земле и монстр вас догнал...\n";
- } elsif($death_f eq 2) {
- print "Монстр кинул клинок вам в спину и догнал вас!\n";
- } elsif($death_f eq 3) {
- print "Вы упали и монстр вас догнал!\n";
- }
- elsif($death_f eq 4) {
- print "У вас получилось убежать\n";
- last if($fight == "R");
- }
- }
- }
- }
- }
- }
- }
- #/START FRAGMENT#
- #INPUT FRAGMENT#
- while(True) {
- #Постройка
- #1.Шахта
- #2.Замок
- #3.Казарма
- #4.Город
- #5.Башня с лучниками.
- #6.Дерево
- $building = int(rand(20));
- &wasd;
- &monstr;
- &buildings;
- &items;
- &dealers;
- &mdw;
- }
- #/INPUT FRAGMENT#
Add Comment
Please, Sign In to add comment