| ! HINTS Invisiclues-style Help menu | |
| ! "tool kit" fot Inform 5.5 or later by | |
| ! L. Ross Raszewski | |
| ! | |
| ! This file is not a hint generator, but it does provide some functions to | |
| ! help make a hint file. It performs the Infocom courtesy of offering the | |
| ! opertunity to disable the hints, and automatically displays hints that | |
| ! have already been read. This was tailored after some avid study of the | |
| ! invisiclues included with several Infocom games, and having made some | |
| ! changes for the sake of not needing to replace DoMenu. | |
| ! Before Inclusion, create an array Clues--> where Clues-->n is one less | |
| ! than the number of clues for the nth clue in your file. | |
| ! Create a function Main_Menu() to draw the first level of your hint system | |
| ! (using DoMenu, or such) | |
| ! Give your clue-giving functions three local variables (hint, cluesleft, flag) | |
| ! For each clue, have some code along the lines of: (n is the same as above, i | |
| ! is the literal value of Clues-->n. You'd use real numbers, but I won't) | |
| ! | |
| ! hint="The first hint"; | |
| ! flag=1; | |
| ! for(cluesleft=i:GiveHint(n,hint,cluesleft,flag)==0:cluesleft--) | |
| ! { flag=0; | |
| ! switch(cluesleft) | |
| ! {i: hint="The second hint to be revealed"; | |
| ! i-1: hint="and so on down to"; | |
| ! 1: hint="The Last Clue"; | |
| ! };};Clues-->n=Clues-->n+1; | |
| ! | |
| ! Just insert a piece like this into your code and GiveHint will produce text | |
| ! like: | |
| ! (Press Q to quit, or any other key for another hint) | |
| ! | |
| ! The First hint (i left) | |
| ! Pressing any key other than q or escape will print | |
| ! The second hint to be revealed (i-1 left) | |
| ! down to | |
| ! The Last Clue | |
| ! [That's All, Folks] | |
| ! | |
| ! If you exit the hint menu and then return, all previously revealed hints | |
| ! will be displayed as well. | |
| ! | |
| ! Set Clues-->0 to an initial value of 0, as it's used for internal purposes. | |
| ! This can probably be integrated into an adaptive hint system, though I | |
| ! haven't tried it. | |
| ! | |
| System_file; | |
| [ HelpSub; | |
| If (Clues-->0==0) | |
| {print "[Warning: It is recognized that the temptation for help \ | |
| may at times be so exceedingly strong that you might fetch hints \ | |
| prematurely. Therefore, you may at any time during the story type \ | |
| HINTS OFF, and this will disallow the seeking out of help for the \ | |
| present session of the story. If you still want a hint now, indicate \ | |
| HINT.]"; | |
| Clues-->0=1; | |
| rtrue;} | |
| If (Clues-->0==2) | |
| print_ret "Hints have been disabled."; | |
| Main_Menu(); | |
| ]; | |
| [ HelpOffSub; | |
| print "HINTS disabled."; | |
| Clues-->0=2; | |
| rtrue; | |
| ]; | |
| [ GiveHint h hint Clues_left flag keypress; | |
| if (flag==1) print "(Press Q to quit, any other key for another hint.)^^^^"; | |
| print (string) hint; | |
| if (Clues_left ~= 0) {print " (", Clues_left, " hint"; | |
| if (Clues_left > 1) print "s"; | |
| print " left.)";}; | |
| if (Clues_left==0) print "^^[That's all, folks]"; | |
| new_line; | |
| if (Clues_left~=Clues-->h) rfalse; | |
| Clues-->h=Clues-->h-1; | |
| @read_char 1 0 0 keypress; | |
| if (keypress == 'Q' or 'q' or 27 || Clues_left==0) rtrue; | |
| rfalse; | |
| ]; | |
| Verb meta "Help" "Hint" "hints" "clues" "clue" | |
| * "off" ->HelpOff | |
| * ->Help; | |
Xet Storage Details
- Size:
- 3.5 kB
- Xet hash:
- f34ec0ac59e480c254c719133899f894315e99d512f99657b30fda7dd6d93683
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.