#!/usr/bin/perl -w # Version 1.2 ;) use strict; my ( $room, $choice, $shop ); my $wizard = 50; my $wizardl = 1; my $gold = 10; my $damage = 3; # various monsters my @monsters = ( { 'name' => 'goblins', 'health' => 12}, { 'name' => 'orcs', 'health' => 14}, { 'name' => 'trolls', 'health' => 13}, { 'name' => 'wolves', 'health' => 10}, { 'name' => 'rats', 'health' => 6}, { 'name' => 'bats', 'health' => 5} ); print "Welcome to Wizard! Type your wizard's name..."; my $name = ; chomp($name); print "Welcome $name to Wizard.\n You are now in Merlin's castle.\n You are surrounded by other mages and disscussion flows back "; print "and forth in the room. Suddenly Merlin stands up in front of all and says:<< I need a powerful man to go out and slay all the monsters that have been plauging my land.\n"; print "Which one of you can raise to the challenge?>> Slowly all those in the room rise, including yourself.\n\n"; print "<> merlin utters. Then be off.\n\n\n"; print "(note: the higher the number you choose, the more often you will encouter enemies!)\n\n\n"; sub goodbye { print "Thanks for playing, $name.\n\n"; exit; } sub toad { my ($monster, $monsterhealth) = @_; if ( $room != 6 ) { my $toad = int( rand 4 ) + 1; if ( $toad <= $wizardl ) { print "The $monster have been zapped into toads!\n"; $gold = $gold + 3; print "good job you got 3 gold!\n"; freedale(); } else { print "your spell has failed! -2 health\n"; $wizard = $wizard - 2; battle($monster, $monsterhealth); } } else { my $toad = int( rand 7 ) + 1; if ( $toad <= $wizardl ) { print "The demons have been zapped into toads!\n"; $gold = $gold + 6; print "great job you got 6 gold!\n"; freedale(); } elsif ( $toad > $wizardl ) { print "your spell has failed! -2 health\n"; $wizard = $wizard - 2; battle($monster, $monsterhealth); } } } sub battle { my ($monster, $monsterhealth) = @_; print "What do you want to do?..press 1 to use spells or 2 for combat.\n"; $choice = ; chomp $choice; if ( $choice eq '1' ) { toad($monster, $monsterhealth); } elsif ( $choice =~ "q" ) { goodbye(); } elsif ( $choice eq '2' ) { do { $monsterhealth = $monsterhealth - $damage; $wizard = $wizard - 2; print "wizard health: $wizard\t"; print "$monster health: $monsterhealth\n"; } until ( $monsterhealth <= 0 || $wizard <= 0 ); if ( $wizard > 0 ) { print "good job you got 3 gold!\n"; $gold = $gold + 3; freedale(); } elsif ( $wizard <= 0 ) { goodbye(); } } else { print "You must choose 1, 2, or q!\n"; battle($monster, $monsterhealth); } } sub forest { print "The forest is dark and smells of old mold and rotton fish. + The foul waters have turned this once peaceful place in to a\n"; +print "dark evil place.\n"; my $gobbo = int( rand 6 ) + 1; if ( $gobbo >= 5 ) { my $randommonster=$monsters[int( rand 6 )]; print "$randommonster->{name} attack\n"; battle( $randommonster->{name}, $randommonster->{health} ); } else { print "There are no monsters here now.\n"; freedale(); } } sub mountain { print "Its pretty cold up here, but from this altitude you can see + the whole town below you.\n"; print "Although it is clear that you are not the first one here!\n +"; my $gobbo = int( rand 6 ) + 1; if ( $gobbo >= 4 ) { my $randommonster=$monsters[int( rand 6 )]; print "$randommonster->{name} attack\n"; battle( $randommonster->{name}, $randommonster->{health} ); } else { print "There are no monsters here now.\n"; freedale(); } } sub dungeon { print "There is a heavy feeling in the air, it's very dark and mus +ty down here.\n"; print "You can see clear signs that goblins have been here, and ma +ybe worse things!\n"; my $gobbo = int( rand 6 ) + 1; if ( $gobbo >= 3 ) { my $randommonster=$monsters[int( rand 6 )]; print "$randommonster->{name} attack\n"; battle( $randommonster->{name}, $randommonster->{health} ); } else { print "There are no monsters here now.\n"; freedale(); } } sub splane { print "This is a mysterious place full of horribly powerful monsters...\n"; print "You see tracks unlike any other you have encountered before.\n"; my $gobbo = int( rand 6 ) + 1; if ( $gobbo >= 2 ) { print "Demons attack!\n"; battle( 'demons', 18 ); } else { print "There are no demons here now.\n"; freedale(); } } sub shop { print "Hello welcome to freedale market may I help you?\n"; print "type 1 for 30 more health......................................... +.....10 gold\n"; print "type 2 for daggers (increases damage per round by one)......................................... +....15 gold\n"; print "type 3 for magic wands(increases magic level by one)..................................... +30 gold\n"; print "type 4 to leave the shop\n"; $shop = ; if ( $shop == 1 ) { if ( $gold < 10 ) { print "you don't have enough gold\n"; freedale(); } else { print "Thank you\n"; $gold = $gold - 10; $wizard = $wizard + 30; freedale(); } } elsif ( $shop == 2 ) { if ( $gold < 15 ) { print "you don't have enough gold\n"; freedale(); } else { print "thank you\n"; $gold = $gold - 15; $damage = $damage + 1; freedale(); } } elsif ( $shop == 3 ) { if ( $gold < 30 ) { print "you don't have enough gold\n"; freedale(); } else { print "thank you\n"; $gold = $gold - 30; $wizardl = $wizardl + 1; freedale(); } } elsif ( $shop == 4 ) { print "Thank you for coming!\n"; freedale(); } else { print "Please enter a number between 1 and 4!\n"; freedale(); } } sub cheat { $wizardl = $wizardl + 2; $wizard = 100; $gold = 60; freedale(); } sub error { freedale(); } sub wizstat { print "health:\t$wizard\n"; print "magic level:\t$wizardl\n"; print "gold:\t$gold\n"; freedale(); } sub freedale { print "you are in freedale.\n"; print "where do you want to go?\n"; print "type 1 for the forest, 2 for the mountain, or 3 for the dungeon, 4 for the shop, 5 to view stats, 6 for the Shadow Plane, or q to quit.\n "; print "press q at anytime to quit.\n"; $room = ; chomp $room; if ( $room eq '1' ) { forest(); } elsif ( $room eq '2' ) { mountain(); } elsif ( $room eq '3' ) { dungeon(); } elsif ( $room eq '4' ) { shop(); } elsif ( $room eq '5' ) { wizstat(); } elsif ( $room eq '6' ) { if ( $wizardl < 3 ) { print "You're level isn't high enough! You must have a magic lvl of 3 to come here.\n"; freedale(); } elsif ( $wizardl => 3 ) { splane(); } } elsif ( $room eq '7' ) { cheat(); } elsif ( $room =~ "q" ) { goodbye(); } else { print "Please enter a number between 1 and 6 or q to quit!\n"; error(); } } freedale()