!\----------------------------------------------------------------------- Beta.h version 2.8, based on code written by Bert Byfield, updated by Mike Snyder, and turned into this by Jon Blask. This code has been integrated into Roodylib, so if you are using Roodylib, just #set-ing BETA in your game will give you the same functionality. This extension now just exists for non-Roodylib games. In that case, add this to your init routine before any text is printed: #ifset BETA BetaInit #endif That, combined with the replaced DoRestart routine, will reset the transcript_is_on property to true if the game is restarted while scripting. Suggestion- add the following line to the top of your newshell.hug file: !#set BETA After the inclusion of hugolib.h, add: #ifset BETA #include "beta.h" #endif Doing it that way will also let you do something like this: routine Version { color LIGHT_RED "\BGuilty Bastards\b" color TEXTCOLOR "Copyright (c) 1998 by Kent Tessman" print "\nRelease "; RELEASE; " "; serial$; #ifset BETA " \B(beta-test version)\b" #endif print newline "Written using the Hugo Compiler "; print HUGO_VERSION "\B(New players should type \"help\".)\b" #ifset BETA "\n\B(NOTE: This beta release is intended for testing only, not for distribution to the general public. Please report any errors, bugs, etc. to the author.)\n\n To make a comment, type \"* COMMENT TEXT\" at the prompt.\b" #endif #ifset DEBUG "\n\B(Compiled with DEBUG set)\b" #endif } -----------------------------------------------------------------------\! #ifclear _BETA_H #set _BETA_H #ifset VERSIONS #message "Beta.h Version 2.8" #endif object betalib "beta" {} routine BetaInit { if word[10] = "beta" betalib is special else { BetaMessage(&BetaInit,1) ! Would you like to start a transcript? !: fancy pause stuff below local key if system_status or system(61) ! if simple port pause else { while true { key = system(11) ! READ_KEY if key { word[0] = key break } system(32) ! PAUSE_100TH_SECOND } } if word[0] = 'b','B' { if (not scripton) { "" BetaMessage(&DoScriptOnOff, 1, (betalib is special)) } !\ "Transcription is already on." or "Unable to begin transcription.", depending \! else { "" betalib is special BetaMessage(&DoScriptOnOff, 2) ! "Transcription on." } } else { "" BetaMessage(&BetaInit,2) ! "No transcript started." } "" BetaMessage(&BetaInit,3) ! "[press a key]" pause "\n" cls } } replace DoScriptOnOff { if word[2] = "on" or words = 1 { if betalib is special or (not scripton) BetaMessage(&DoScriptOnOff, 1, (betalib is special)) !\ "Transcription is already on." or "Unable to begin transcription.", depending \! else { betalib is special BetaMessage(&DoScriptOnOff, 2) ! "Transcription on." } } elseif word[2] = "off" { if betalib is not special or (not scriptoff) BetaMessage(&DoScriptOnOff, 3, (betalib is special)) !\ "Transcription is not currently on." or "Unable to end transcription.", depending \! else { betalib is not special BetaMessage(&DoScriptOnOff, 4) ! "Transcription off." } } } ! The NewParseError replacement routine has been changed for better ! coexisting with other NewParseError code if the game calls for it replace NewParseError(errornumber, obj) { ! changed some unnecessary string-matching code if word[1] = "*" { if betalib is special BetaMessage(&DoScriptOnOff, 5) ! Comment recorded! else BetaMessage(&DoScriptOnOff, 6) ! Comment not recorded! return true ! we'll just return true if someone tried to do a comment } select errornumber ! if you have code hijacking any other error messages, it'd go here: ! select errornumber ! case 1: (etc) case else : return false ! if a specific case was NOT mentioned, return ! false return true ! this line is only reached if an error message was replaced } ! We replace DoRestart so we can reset the transcript_is_on global to true if ! the game is restarted while scripting replace DoRestart { VMessage(&DoRestart, 1) ! "Are you sure?" GetInput if YesorNo = true { if betalib is special word[10] = "beta" if not restart VMessage(&DoRestart, 2) ! "Unable to restart." } } replace DoRestore { if betalib is special word[10] = "beta" if restore { if word[10] = "beta" betalib is special VMessage(&DoRestore, 1) ! "Restored." PrintStatusline DescribePlace(location, true) return true } else: VMessage(&DoRestore, 2) ! "Unable to restore." } routine BetaMessage(r, num, a, b) { if NewBetaMessages(r, num, a, b): return select r case &BetaInit { select num case 1 : "This is a beta release! If you'd like to start a transcript right away, press \"B\". Otherwise, push any other key to begin without starting a transcript." case 2 : "No transcript started." case 3 : print "[ press a key ]"; } case &DoScriptOnOff { select num case 1 { if a ! a = betalib.transcript_is_on print "Transcription is already on." else print "Unable to begin transcription." } case 2: print "Transcription on." case 3 { if not a ! a = betalib.transcript_is_on print "Transcription is not currently on." else print "Unable to end transcription." } case 4: print "Transcription off." case 5: print "Comment recorded!" case 6: print "Comment not recorded!" } } !\ The NewBetaMessages routine may be REPLACED and should return true if a replacement message exists for routine \! routine NewBetaMessages(r, num, a, b) { return false } #endif