| ! ============================================================================ ! | |
| ! Cloak of Darkness - a simple demonstration of Interactive Fiction | |
| ! This version for IAGE written by R.Rawson-Tetley on 15 Nov 01 | |
| ! Built from Roger Firth's Inform source | |
| ! ============================================================================ ! | |
| #import "lib.ih" | |
| GameCode { | |
| Name "Cloak of Darkness" | |
| SinglePlayerGame yes | |
| StartingLocation foyer | |
| ShowAvailableExits no | |
| AllowPersist no | |
| Start: Override [ | |
| currentplayer.print "<br><br><i>Hurrying through the rainswept November night, you're glad to see the bright lights of the Opera House. It's surprising that there aren't more people about but, hey, what do you expect in a cheap demo game...?</i><br><br>" | |
| game.displayversion | |
| call StandardLib.DisplayLibraryVersion | |
| game.displaycurrentlocation | |
| cloak.currentlocation = currentplayer.containerlocation | |
| cloak.isworn = true | |
| ' Reset flags that could have been used in last game | |
| cloak.removeuserboolean(general) | |
| scrawledmessage.setvalue(number) = 0 | |
| bar.isdark = true | |
| ] | |
| Initialise: CodeExtend [ | |
| ' Add hang as synonymous with put | |
| addverb 7 hang | |
| ] | |
| } | |
| LibraryMessage 133 "<b>** You have lost **</b>" ! Override normal death message | |
| LibraryMessage 27 "(out of a possible 2) in" ! Override max score | |
| LibraryMessage 1 "<b>Cloak Of Darkness</b><br>An IF Demonstration. Written by R.Rawson-Tetley from Roger Firth's specification." | |
| ! ============================================================================ ! | |
| Location foyer "Foyer of the Opera House" { | |
| Description "You are standing in a spacious hall, splendidly decorated in red and gold, with glittering chandeliers overhead. The entrance from the street is to the north, and there are doorways south and west." | |
| S_to bar | |
| W_to cloakroom | |
| OnInput: [ | |
| ;go | |
| #north | |
| currentplayer.print "You've only just arrived, and besides, the weather outside seems to be getting worse." | |
| end | |
| endif | |
| endif | |
| ] | |
| } | |
| Location cloakroom "Cloakroom" { | |
| Description "The walls of this small room were clearly once lined with hooks, though now only one remains. The exit is a door to the east." | |
| E_to foyer | |
| } | |
| Item hook "a small brass hook" { | |
| StartsIn cloakroom | |
| Size 2 | |
| Nouns "small" "brass" "hook" "peg" | |
| has scenery supporter | |
| OnAction: [ | |
| ;examine | |
| if ( cloak.currentlocation = this.surfacelocation ) then | |
| currentplayer.print |"There is a velvet cloak hung on the " & hook.thename| | |
| end | |
| endif | |
| endif | |
| ] | |
| } | |
| Location bar "Foyer bar" { | |
| Description "The bar, much rougher than you'd have guessed after the opulence of the foyer to the north, is completely empty. There seems to be some sort of message scrawled in the sawdust on the floor." | |
| N_to foyer | |
| has darkness | |
| OnInput: [ | |
| if ( this.isdark = true ) then | |
| ;go | |
| #n | |
| end | |
| else | |
| scrawledmessage.setvalue(number) = |scrawledmessage.getvalue(number) + 2| | |
| currentplayer.print "Blundering around in the dark isn't a good idea!" | |
| end | |
| endif | |
| endif | |
| scrawledmessage.setvalue(number) = |scrawledmessage.getvalue(number) + 1| | |
| currentplayer.print "In the dark? You could easily disturb something!" | |
| endif | |
| ] | |
| } | |
| Item cloak "a velvet cloak" { | |
| Nouns "handsome" "dark" "black" "velvet" "satin" "cloak" | |
| Description "A handsome cloak, of velvet trimmed with satin, and slightly spattered with raindrops. Its blackness is so deep that it almost seems to suck light from the room." | |
| has wearable | |
| OnAction: [ | |
| end | |
| proc before_drop | |
| if ( currentplayer.currentlocation = cloakroom.id ) then | |
| bar.isdark = false | |
| end | |
| else | |
| returnvalue = "This isn't the best place to leave a smart cloak lying around." | |
| cancelevent | |
| end | |
| endif | |
| end | |
| proc before_insert | |
| #on | |
| if ( input.noun2 = hook.nounid ) and ( this.getuserboolean(general) = false ) then | |
| bar.isdark = false | |
| call StandardLib.AddScore 1 | |
| this.adduserboolean(general) | |
| returnvalue = |"You hang the velvet cloak on the " & hook.thename| | |
| end | |
| endif | |
| endif | |
| end | |
| proc after_get | |
| bar.isdark = true | |
| end | |
| end | |
| ] | |
| } | |
| Item scrawledmessage "a scrawled message" | |
| StartsIn bar | |
| Nouns "message" "sawdust" "floor" | |
| has scenery | |
| OnAction: [ | |
| ;read | |
| if ( this.getvalue(number) < 2 ) then | |
| call StandardLib.AddScore 1 | |
| currentplayer.print "The message, neatly marked in the sawdust, reads..." | |
| call StandardLib.Won | |
| end | |
| else | |
| currentplayer.print "The message has been carelessly trampled, making it difficult to read. You can just distinguish the words..." | |
| call StandardLib.Dead | |
| end | |
| endif | |
| endif | |
| ] | |
| } | |
Xet Storage Details
- Size:
- 5.08 kB
- Xet hash:
- d5d9bae547db7ef64ee7c474bbd8ce1a74a6fd33c99cd0bf23b3d028994e280a
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.