| !\ Okay, so this is the code to the game I wrote while trying to learn the basics of Hugo. | |
| As you can see, I started off with the shell.hug file and added from there. | |
| I ended up borrowing code from Guilty Bastards, Spur, sample.hug, and help from others | |
| (who I don't want to incriminate by saying their names). | |
| In any case, it's my hope that despite my ugly coding, some things might be easier for | |
| newbies to understand (like, getting NPCs to follow and basic NPC interaction) just | |
| because this game is so simplistic. | |
| Unfortunately, this game is pretty juvenile and was originally only written as an | |
| inside joke between my siblings and I. I apologize if the tone offends you; I did | |
| edit out some of the swears and what not. | |
| \! | |
| !\--------------------------------------------------------------------------- | |
| HUGO v2.5 SHELL | |
| by Kent Tessman (c) 1995-1998 | |
| ---------------------------------------------------------------------------\! | |
| ! Uncomment the following to use a precompiled version of the Hugo Library: | |
| ! #set PRECOMPILED_LIBRARY | |
| ! Uncomment the following to include the HugoFix Debugging Library: | |
| ! #set DEBUG | |
| ! Uncomment the following to include verb stub routines: | |
| #set VERBSTUBS | |
| #ifset DEBUG | |
| #switches -d | |
| #endif | |
| !---------------------------------------------------------------------------- | |
| ! NEW GRAMMAR: | |
| verb "read" | |
| * object DoRead | |
| verb "choke" | |
| * DoChoke | |
| verb "escape" | |
| * DoEscape | |
| verb "play" | |
| * "ping" "pong" DoPing | |
| * object "in" "ping" "pong" DoPing | |
| * "ping" "pong" "against" object DoPing | |
| #include "verblib.g" ! grammar must come first | |
| constant INDENT_SIZE 0 | |
| #ifset PRECOMPILED_LIBRARY | |
| #link "hugolib.hlb" | |
| #else | |
| #include "hugolib.h" | |
| #endif | |
| !global rank | |
| routine init | |
| { | |
| counter = -1 | |
| STATUSTYPE = 1 ! score/turns | |
| TEXTCOLOR = DEF_FOREGROUND | |
| BGCOLOR = DEF_BACKGROUND | |
| SL_TEXTCOLOR = DEF_SL_FOREGROUND | |
| SL_BGCOLOR = DEF_SL_BACKGROUND | |
| prompt = ">" | |
| color TEXTCOLOR, BGCOLOR | |
| MAX_SCORE = 30 | |
| MAX_RANK = 4 | |
| ranking[0] = "Jerk-Faced Loser" | |
| ranking[1] = "The Ponginator" | |
| ranking[2] = "King Pong" | |
| ranking[3] = "Spartacus Jonez" | |
| cls | |
| "You dreaded this day. In fact, you wish it was still nothing more | |
| than a cold-sweat-inducing nightmare that woke you in the darkest hours | |
| of the night. Alas, the day has come that you would need Anne's help.\n" | |
| Font(BOLD_ON | DEFAULT_FONT) | |
| "Anne and the Terrordome of Evil" | |
| Font(BOLD_OFF) | |
| "An Interactive True Story\n" | |
| print BANNER | |
| player = you ! player initialization | |
| location = emptyroom | |
| old_location = location | |
| move player to location | |
| FindLight(location) | |
| DescribePlace(location) | |
| location is visited | |
| CalculateHolding(player) | |
| #ifset USE_PLURAL_OBJECTS | |
| InitPluralObjects | |
| #endif | |
| } | |
| #ifset PRECOMPILED_LIBRARY | |
| replace main | |
| { | |
| #else | |
| routine main | |
| { | |
| #endif | |
| counter = counter + 1 | |
| PrintStatusLine | |
| run location.each_turn | |
| runevents | |
| RunScripts | |
| if parent(speaking)~=location | |
| speaking = 0 | |
| } | |
| !\ I put this stuff in here to see if I could get resources to work. | |
| It worked fine with the 32-bit DOS interpreter, but I had actually been confused | |
| about whether the other DOS interpreters have any kind of sound or graphic | |
| capabilities... I guess they don't. | |
| #set COMPILE_RESOURCES | |
| resource "anne_snd" | |
| { | |
| "c:\windows\ding.wav" | |
| } | |
| \! | |
| player_character you "you" | |
| { | |
| nouns "me" | |
| long_desc | |
| { | |
| "You are as cool as twelve velvet Elvis's and a bag of Cheetos.\n" | |
| }} | |
| room emptyroom "Entrance to the Terrordome of Evil" | |
| { | |
| long_desc | |
| { | |
| "To the west is the Terrordome of Evil. By golly, it looks fun!\n\n | |
| There seems to be activity to the east.\n" | |
| } | |
| cant_go { | |
| "There's nothing of interest in that direction.\n" | |
| } | |
| w_to { | |
| if Anne is not blah | |
| {"As much as you'd like to go to the Terrordome of Evil, you lack the | |
| courage to do it alone."} | |
| else | |
| {print "With Anne following you around like a lame little hell-puppy, you confidently | |
| stroll into the Terrordome of Evil. It's everything you hoped it would be.\n" | |
| score = score + 10 | |
| endflag = 1} | |
| } | |
| in_to { return self.w_to } | |
| e_to { | |
| !\ sound "anne_snd", "ding", 100 | |
| One of the times that I tested the sound resources. | |
| \! | |
| return anneroom | |
| } | |
| } | |
| object terrordome "Terrordome of Evil" | |
| { | |
| in emptyroom | |
| nouns "terrordome" "evil" | |
| adjectives "terrordome" "of" | |
| long_desc | |
| {"Wow! You can't wait to enter it!"} | |
| is hidden | |
| is static | |
| } | |
| object activity "activity" | |
| { | |
| in emptyroom | |
| nouns "activity" | |
| long_desc | |
| {"You can't see much from here."} | |
| is hidden | |
| is static | |
| } | |
| room anneroom "Temple of Anne" | |
| { | |
| nouns "temple" | |
| adjectives "temple" "of" | |
| long_desc | |
| {"This is where Anne sits and worships herself. You feel like | |
| burning it all down but somehow manage to resist the urge. | |
| Besides the exit to the west, there is also a cloud of darkness | |
| to the south.\n"} | |
| w_to { return emptyroom } | |
| s_to {print "\nAs you approach the cloud of darkness, it becomes | |
| apparent that it isn't actually darkness, persay. Truthfully, it | |
| actually seems to be a...\n" | |
| return daveroom} | |
| } | |
| attribute blah alias special | |
| character anne "Anne" | |
| { | |
| in anneroom | |
| noun "anne" | |
| short_desc | |
| { | |
| "Anne is here, worshipping herself.\n" | |
| self is moved | |
| } | |
| long_desc | |
| { | |
| "Anne reminds you why it's so cool to be you and not | |
| someone like her.\n" | |
| } | |
| before | |
| { | |
| object DoKiss | |
| { "You don't want to put your lips on that!"} | |
| } | |
| after | |
| { | |
| xobject DoGive | |
| { | |
| select object | |
| case belt | |
| { | |
| print "Naw, that'd be silly. Anne just has to earn it someday like | |
| a real man." | |
| return true | |
| } | |
| case else | |
| return false | |
| } | |
| xobject DoShow | |
| { | |
| select object | |
| case belt | |
| { | |
| if (Anne is not blah) | |
| { "\"Wow, you must've beat Dave. I am truly in awe of your | |
| mad ping-ponginating skillz. I shall follow you | |
| to the ends of the earth, so that I may learn | |
| the Way of the True Ping Pong Master.\"" | |
| Activate(anne_following) | |
| Anne is blah | |
| score = score + 10 | |
| } | |
| else | |
| "You don't need to rub it in." | |
| } | |
| case else | |
| return false | |
| } | |
| object DoAsk | |
| { | |
| select xobject | |
| case anne | |
| "\"I'm the coolest thing since | |
| ChiPs, yo.\"" | |
| case anneroom | |
| "\"This place rocks.\"" | |
| case belt | |
| "\"The one who holds the championship | |
| ping pong belt has the respect and admiration | |
| of millions. I'd follow that person to the ends | |
| of the earth. One day, I will wear it myself.\"\n | |
| \n | |
| You hold back a guffaw." | |
| case dave | |
| "\"He bites my ass. What can I say?\"" | |
| case else | |
| "Anne's eyes start glazing over and drool | |
| dribbles out of the corner of her mouth. | |
| I guess she doesn't know anything about | |
| that.\"" | |
| } | |
| } | |
| } | |
| event in anne | |
| { | |
| if (Anne is not blah) | |
| { | |
| if (belt is worn) | |
| {print "Anne notices the shiny golden goodness that is your | |
| ping pong championship belt." | |
| Perform( &DoShow, belt, Anne) | |
| } | |
| } | |
| } | |
| daemon anne_following | |
| { | |
| timer 0 | |
| } | |
| event in anne_following | |
| { | |
| if anne in location or location = old_location ! no need to follow | |
| return | |
| ! Deal with special following messages for certain locations: | |
| select location | |
| ! locations: | |
| case daveroom ! Cloud of Ugly | |
| { | |
| "\nAnne follows you into the cloud." | |
| } | |
| case anneroom ! Temple of Anne | |
| { | |
| if old_location = daveroom | |
| "\nAnne exits the Cloud of Ugly and | |
| follows you back to the temple." | |
| else | |
| "\nAnne follows you back to the temple." | |
| } | |
| case emptyroom | |
| { | |
| if old_location = anneroom | |
| "\nAnne follows you west." | |
| } | |
| move anne to location | |
| } | |
| scenery cloud "cloud of darkness" | |
| { | |
| in anneroom | |
| noun "cloud" "darkness" | |
| adjective "cloud" "of" | |
| article "the" | |
| long_desc {"It's certainly a strange thing. There's no logical | |
| reason for the cloud of darkness to the south."} | |
| door_to ! so a player can "go cloud" | |
| {return daveroom} | |
| before | |
| { | |
| object DoEnter | |
| { | |
| return daveroom | |
| } | |
| } | |
| } | |
| room daveroom "Cloud of Ugly" | |
| { | |
| long_desc | |
| {"You are choking in a big cloud of Ugly. It's definitely not | |
| fun. Escape is to the north.\n"} | |
| n_to {return anneroom} | |
| } | |
| object pingpong "ping pong table" | |
| { | |
| in daveroom | |
| nouns "pong" "table" "paddles" "ball" | |
| adjectives "ping" "pong" | |
| short_desc | |
| {"Surprisingly enough, there is a ping pong table here.\n"} | |
| long_desc | |
| {"You almost missed it in this whole cloud of Ugly, but there's no | |
| denying that yes, there's a ping pong table, complete with paddles | |
| and everything.\n"} | |
| before | |
| { | |
| object DoGet | |
| { "You don't need to take that, but feel free to play some | |
| wild and crazy ping pong!" } | |
| } | |
| is static | |
| } | |
| character dave "Dave" | |
| { | |
| in daveroom | |
| noun "dave" "david" | |
| adjective "ugly" | |
| short_desc | |
| { | |
| "It's obvious that the source of all of the ugliness is Dave, | |
| who is standing nearby, doing stupid Dave things. He holds a ping pong | |
| championship belt.\n" | |
| self is moved | |
| } | |
| long_desc | |
| "In ancient times, Dave is what would've been called a \"jerk-faced loser.\" | |
| You do your best to not slap him around.\n" | |
| before | |
| { | |
| parent(object) DoGet | |
| { | |
| "Dave holds "; | |
| The(object) | |
| " away from you. \"Easy there, leadbelly.\"" | |
| } | |
| object DoKiss | |
| { | |
| "You don't want to put your lips on that!" | |
| } | |
| } | |
| after | |
| { | |
| object DoAsk | |
| { | |
| select xobject | |
| case anne | |
| "\"Ha! She thinks she can beat me at | |
| ping pong, but we all know she can't hang. At least, she does | |
| everything I say because I am the True Ping Pong Champion.\"" | |
| case dave | |
| "\"What can I say? I'm the best there | |
| ever was.\"" | |
| case belt | |
| "\"This proves that I am as great in ping | |
| pong as I am ugly!\"" | |
| case cloud | |
| "\"It's not much, but I call it home.\"" | |
| case else | |
| "Dave's eyes start glazing over and drool | |
| dribbles out of the corner of his mouth. | |
| I guess he doesn't know anything about | |
| that.\"" | |
| } | |
| } | |
| } | |
| object belt "championship ping pong belt" | |
| { | |
| in dave | |
| noun "belt" | |
| adjective "championship" "ping" "pong" | |
| long_desc | |
| { | |
| "The belt seems to almost have a certain glow to it." | |
| } | |
| article "a" | |
| is hidden | |
| is clothing | |
| } | |
| !---------------------------------------------------------------------------- | |
| ! NEW VERB ROUTINES | |
| !---------------------------------------------------------------------------- | |
| routine DoRead | |
| { | |
| select object | |
| case belt | |
| {"Etched into its face are the words, \"He who wears this belt | |
| is truly master over the wannabes.\""} | |
| else | |
| { | |
| "There's nothing to read there." | |
| } | |
| } | |
| routine DoChoke | |
| { | |
| if (player in daveroom) | |
| {"That goes without saying."} | |
| else | |
| "But why?" | |
| } | |
| routine DoEscape | |
| { | |
| if (player in daveroom) | |
| {return anneroom} | |
| else | |
| "But where?" | |
| } | |
| routine DoPing | |
| { | |
| if player not in daveroom | |
| "There's no ping pong table here!" | |
| else | |
| { | |
| if Dave in Daveroom | |
| { print "You ask Dave to play a game of ping pong and he confidently accepts | |
| your offer. It doesn't seem like quite a match, though, and you beat him | |
| easily.\n\n | |
| \"Was there anything wrong?\" you ask. \"Did you have all of | |
| your limbs cut off when I wasn't looking? Or maybe you just | |
| really do suck. That was \Beasy\b!\"\n\n | |
| Tears streaming down his face, | |
| he hands you the belt and runs off to wallow in his ugliness. You feel bad | |
| for the guy.\n | |
| \n | |
| Strangely enough, the Cloud of Ugly remains." | |
| move belt to player | |
| remove Dave | |
| belt is not hidden | |
| score = score + 10 | |
| return true } | |
| else | |
| { | |
| if Anne in Daveroom | |
| { "You easily beat Anne. C'mon now! What did you expect?"} | |
| else | |
| "There's no one to play here!" | |
| } | |
| } | |
| } | |
| property is_following | |
Xet Storage Details
- Size:
- 11.4 kB
- Xet hash:
- 4d54e5a8ccab2a6eb7ed687967b55c05e2da262653350f736050ecfe30275bdb
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.