QUEST V2.00 THE ADVENTURE CONTINUES PUBLIC DOMAIN COPYPRIGHT 1987 BRUCE GREENEBRG COMPUSERVE ID# 76606,3613 QUEST IS AN ADVENTURE GAME IN BASIC TANDY M100 (A 8-LINE LAP COMP) BASIC. IT SHOULD BE ADAPTABLE TO OTHER BASIC DIALECTS AND PLEASE NOTIFY ME OF SUCH TRANSLATION FOR UPLOADING TO FORUM DL'S. THE QUEST SYSTEM PLAYS A SAMPLE GAME FROM A FILE CALLED 'QROOM.DO'. IT SHOULD BE IN DL AS 'QUEST.ADV' TYPE 'HELP' AT THE PROGRAM 'COMAND>' FOR DESCRIPTION OF 'GET' 'USE' 'DROP' AND 'ME?' COMMANDS. BUT THIS IS MORE THEN A GAME PROGRAM IF NO 'QROOM' FILE IS PRESENT OR IF THE 'QROOM' FILE HAS NOT BEEN DESIGNATED AS A "RUN GAME" FILE THEN QUEST WILL AUTOMATICLY GO INTO INTERPITER MODE SETTING UP THE FILES NEEDED TO PROGRAM AND MODIFY QUEST ADVENTURES. THESE FILES WILL BE: 'QROOM.DO' A SEQUENTIAL FILE OF PERMINENT ADVENTURE 'LINES' WHICH ARE 'SAVED' DURRING ADVENTURE BUILDING FROM A BUFFER THAT IS SAVED IN AN UNCOMPLEATED ADVENTURE AS; 'QBUF.DO' THIS FILE IS LOADED INTO AN ARRAY DURRING GAME PROGRAMING AND IS INTERACTIVLY CHANGEABLE LIKE BASIC. 'QPLAY.DO' IS A FILE THAT IS MADE WHATEVER MODE THE PROGRAM IS IN AND HAS THE PLAYERS AND GAME STATUS. WHAT FOLLOWS IS A DISCRIPTION OF HOW TO CREATE A 'QUEST' ADVENTURE' WITH ONLY THE MAIN QUEST PROGRAM RUNING AND NO FILES PRESENT. THE QROOM AND QBUF FILES WILL BE CREATED AFTER WHICH YOU WILL BE PROMPTED FOR "MAX BUFFER SIZE". THIS WILL ME THE MAX NUMBER OF ROOMS THAT YOU WILL BE ABLE TO HAVE IN MEMORY TO EDIT AS YOU CREATE YOUR ADVENTURE. YOU WILL NEXT BE CAUGHT IN AN ERROR TRAP AS THE PROGRAM TRIES TO ENTER THE NEW PLAYER CURRENT ROOM WHICH HAS'ENT BEEN PROGAMED YET..ADD THIS ROOM BY RESPONDING 'Y' TO THE 'ADD TO BUFFER REQUEST' YOU WILL NOW BE PROGRAMING A ROOM. BUT WHAT IS A ROOM? A ROOM IS A LINE OF INSTRUCTIONS THAT THE INTERPITER WILL TRY TO RUN WHEN THAT ROOM IS JUMPED TO. A 'ROOM' (BETTER NAME WOULD BE LINE#) HAS THE FOLLOWING FORMAT: ROOM DESCRIPTION/SUB/SUB/SUB/ THERE MAY BE MANY "SUB'S" WHICH WILL BE DESCRIBED SHORTLY BUT THE ROOM WILL BE RUN AS FOLLOWS WHEN THE ROOM IS JUMPED TO THE ROOM DESCRIPTION WILL BE DESPLAYED. ONLY A FRESH JUMP WILL CAUSE THIS. THEN THE PLAYER/PROGRAMER WILL BE GIVEN A COMAND> PROMPT AT WHICH HE/SHE MAY ENTER A GAME COMMAND/GUESS OR A PROGRAM COMMAND(DESCUSED LATTER) AFTER THE COMMAND>INPUT PROGRAM COMANDS WILL BE PROCESSED IF GIVEN. IF THE INPUT IS NOT A PROGRAM COMAND THEN THE "SUB'S" WILL RUN WHEN ALL THE ACCESSABLE SUBS HAVE RUN THE COMMAND> PROMPT WILL AGAIN APPEAR. *NOTE IF NO DESCRIPTION IS GIVEN I.E. THE LINE STARTS WITH A "/" THEN THE SUB'S WILL EXECUTE BEFORE A COMAND> PROMPT IS DISPLAYED/ BUT THE CYCLE IS THE SAME. SUBS HAVE TWO MAJOR FORMS 1)#KEYWORD.OPTIONAL RETURN ROOM# # SYMBOLIZES A ROOM NUMBER THAT WILL BE JUMPED TO IF THE COMMAND>INPUT STRING IS INSTRING TO THE KEYWORD. I.E. IF THE KEYWORD IS 'WEST' AND THE INPUT IS 'WES' THEN JUMP. THE OPTIONAL RETURN ROOM IS PRECEDED BY A PERIOD AND WILL SET THAT ROOM # TO BE RETURNED TO IF A RETURN SUB IS ENCOUNTERED LATTER (FOLLOWING TEXT) 2)!SUB#.VARIABLE.VARIABLE... THE "!" MARK TELLS THE INTERPITER THAT A SUBROTINE NUMBER FOLLOWS.THAT SUB WILL BE EXECUTED AS IS DESCRIBED BELOW. BEFORE THE SUB IS DONE THE VARIABLES WILL BE LOADED *NOTE-THE VARIABLES ARE SEPERATED BY PERIODS AND THE LINE ENDS IN A PERIOD. ALL "!" SUBS MUST HAVE AT LEAST TWO PERIODS FOLLOWING THE SUB NUMBER. A LIST OF SUB INSTRUCTIONS FOLLLOWS: !1 SAY 1)ACCESS (DECUSSED LATTER) 2)KEY 3)OUTPUT THIS SUB WILL OUTPUT VARIABLE 3 IF THE ACCESS IS 0 AND THE KEY IS INSTRING TO THE LAST PLAYER INPUT !2 DJUMP 1)JUMP ROOM 2)OPTIONAL RETURN THIS WILL CAUSE A ROOM JUMP TO VARIABLE 1 AND WILL PUT VARIABLE 2 AS THE RETURN ROOM IF IT IS PRESENT !3 GETABLE ROOM JUMP 1)ACCESS 2)JUMP TO ROOM 3)NAME THIS IS A SUB THAT CAN BE 'GOT' BY THE PLAYER (TYPE 'HELP' AT COMAND>) IF IT'S ACCESS IS 0 AND THE PLAYER INPUT IS INSTRING TO THE NAME IN VARIABLE 3. ONCE 'GOTTEN' - IF IT IS 'USED' THEN; THE CURRENT ROOM WILL BE PUT AS THE RETURN ROOM AND A JUMP WILL BE MADE TO VARIABLE 2'S ROOM. !4 POTION 1)ACCESS 2)HEALTH CHANGE 3)ABILITY CHANGE AGAIN THIS IS A 'GET'ABLE SUBROTINE WHEN 'USED' VARIABLE 2 WILL BE ADDED TO THE PLAYER'S HEALTH AND VARIABLE 3 TO THE PLAYER'S SKILL. !5 ACTOR 1)ACCESS 2)HITS (HOW MANY THE ACTOR WILL) (TAKE BEFORE IT 'DIES' ) 3)HITFOR (ABOUT HOW MANY HITS THE) (ACTOR WILL CAUSE EACH ) (ROUND-DEPENDENT ON ) (PLAYER'S SKILL ) 4)SPECIAL 5)NAME THE 'ACTOR' SUB WILL BE CALLED IF IT'S ACCESS IS 0.IT WILL SUBTRACT ABOUT VARIABLE 2'S VALUE FROM THE PLAYER NOTE THAT "HIT'S" MAY BE ZERO. NO FURTHER SUB'S IN THE ROOM WILL BE RUN IF AN ACTOR WITH ACCESS IS CALLED. HOWEVER IF THE ACTOR IS KILLED,THEN IN THE NEXT TURN THE REMAINING ROOM SUB'S WILL BE RUN SINCE THE ACTOR'S ACCESS WILL BE SET TO 1. 'NAME' IS OPTIONAL! *NOTE 'SPECIAL' AS IT PRETAINS TO BELOW !6 OBJECT 1)ACCESS 2)HIT FOR 3)LEVEL 4)SPECIAL 5)NAME AN OBJECT THE A 'GETABLE' SUB THAT CAN ONLY BE GOTTEN IF IT'S ACCESS IS 0. ONCE GOTTEN IT'S ACCESS IS SET TO 1. IT IS GOTTEN BY IT'S 'NAME' THOUGH IT CAN ALSO BE GOTTEN BY IT'S 'SPECIAL' HOWEVER 'NAME' IS NEEDED TO SEE THE OBJECT IN THE PLAYER'S CARRYING LIST *SEE DROP COMMAND FAR BELOW. WHEN 'USED' AN OBJECT WILL CAUSE ABOUT 'HITFOR' POINTS DAMAGE TO AN ACTOR IN THE ROOM.DEPENDENT ON THE RATIO OF THE OBJECT LEVEL TO THE PLAYERS SKILL. *HOWEVER IT WILL ONLY HIT IF THE OBJECT SPECIAL IS THE SAME AS THE ACTORS! *A SHORT DESCRIPTION OF 'INFO' *THERE IS A STRING ARRAY OF 1-10 WHICH INFO SUBS CAN ACCESS. IT IS SAVED IN THE 'QPLAY' FILE !7 INFO IN 1)INFO # 2)STRING PROMPT THIS SUB WILL PRINT THE 'STRING PROMPT' AND INPUT A STRING FROM THE PLAYER WHICH IT WILL PUT IN THE 'INFO#' !8 INFO OUT 1)INFO # 2)STRING TO PRINT BEFORE 'INFO OUT' WILL PRINT VARIABLE 2 THEN THE STRING IN THE INFO ARRAY THAT IS AT THE 'INFO #' !9 INV/SET ACCESS 1)ACCESS # TO INV/SET 2)OPTIONAL # TO SET ACCESS THIS WILL ACT ON THE 'ACCESS' AT VARIABLE 1.IF THAT ACCESS IS 1 IT WILL BE SET TO 0. AND IF 0 THEN SET TO 1. IF VARIABLE 2 IS PRESENT THEN THE # IN VARIABLE 2 (WHICH WILL BE 1 OR 0) WILL BE SET INTO THE ACCESS #. !10 INFO JUMP 1)JUMP ROOM# 2)MATCH KEY STRING 3)OPTIONAL RETURN ROOM# INFO JUMP WILL CAUSE A ROOM JUMP TO THE JUMP ROOM# IF THE STRING IN INFO 2 IS EQUAL TO THE MATCH STRING IF VARIABLE 3 IS PRESENT THEN THAT NUMBER WILL PUT IN THE RETURN ROOM #. !11 INFO SAY 1)MATCH KEY 2)SAY IF THE STRING IN INFO 2 IS INSTRING TO THE MATCH KEY THEN VARIABLE 2 WILL BE PRINTED. !12 INFO PUT 1)INFO # TO PUT INTO 2)STRING TO PUT THIS SUB CAUSE VARIABLE 2 TO BE PUT INTO THE INFO ARRAY AT INFO#. !13 END THIS IS JUST A SHORT END GAME ROTINE. THAT RESULTS IN A RETURN TO MENU. THOUGH IT HAS NO VARIABLES IT MUST HAVE TWO PERIODS! !14 RETURN THIS WILL CAUSE A RETURN TO THE ROOM # THAT HAD BEEN PREVIOUSLY SET BY ABOVE FUNCTION. ALSO NO VARIABLES! !15 INFO COPY 1)INFO FROM# 2)INFO TO# THIS SUB WILL GET A STRING FROM INFO# IF VARIABLE 1 IS POSITIVE. IF VARIABLE 1 IS NEGATIVE THEN IT WILL GET THE ACCESS (0 OR 1) FROM THE ABS OF THAT # ! IN ITHER CASE IT WILL PUT THE RESULT TO THE INFO ARRAY AT VARIABLE 2. !16 RND ROOM JUMP 1)ACCESS 2)JUMP TO ROOM# 3)RANDOM FACTOR 4)OPTIONAL RETURN SET # IF ACCESS IS 0 THEN A RANDOM # FROM 0 TO 100 WILL BE GENERATED. IF VARIABLE 3'S VALUE IS GREATER THAN THE RANDOM NUMBER A JUMP TO ROOM # IN VARIABLE 2 WILL OCCUR. IF VARIABLE 4 IS PRESENT THEN THAT VALUE WILLBE SET AS THE RETURN ROOM#. PROGRAMING COMANDS SINCE QUEST IS PROGRAMED DURRING THE EXECUTION OF AN ADVENTURE THERE ARE COMMANDS THAT ARE AVAILABLE FROM THE 'COMAND>' PROMPT(WHICH IS ALSO USED BY) ( A GAME PLAYER ) THESE COMANDS ARE: 'SAVE GAME' THIS COMAND IS ALSO KNOW BY A PLAYER BUT IS USED TO SAVE THE GAME INCLUDING NEW ROOMS-BEFORE EXITING PROGRAM *NOTE-IF THE GAME IS BROKEN OUT OF THEN NEW ROOMS ARE LOST!!!! THE 'QPLAY' FILE CAN BE DELETED WITHOUT LOSS OF ANY ROOM DATA 'MAKE' THIS COMAND WILL ALLOW THE PROGRAMER TO PUT SOMTING IN A ROOM WITHOUT ADDING IT TO THE ROOM DESCRIPTION IN BUFFER. USED TO TEST A SUB'S FUNCTION OR TO GET AN OBJECT THAT YOU NEED TO OVERCOME AN OBSTICLE IN THE ROOM *NOTE YOU MUST GET AND USE THE 'MADE' THING! 'EDIT'(ROOM NUMBER) THE WORD 'EDIT' FOLLOWED BY A NUMBER WILL PUT YOU INTO EDIT MODE AT THAT ROOM IF IT IS IN THE BUFFER. IF NOT IT WILL PROMPT YOU TO ADD IT. IN EDIT MODE FOLLOW THE ON SCREEN INSTRUCTIONS TO PROGRAM THE ROOM. 'LIST' THIS COMMAND WILL PROMPT YOU FOR TYPES OF LISTING OPTIONS. WITH IT YOU CAN SAVE ROOMS FROM THE BUFFER INTO THE PERMENENT FILE(THUS FREEING ROOM IN THE BUFFER) YOU CAN ALSO DELETE BUFFER ROOMS NOTE THE INSTRUCTIONS,AND REMEMBER- IF YOU TRY TO PRINT THERE MUST BE AN ACTIVE PRINTER ATTACHED OR PROGRAM WILL GET STUCK! 'ROOM?' THIS COMAND WILL JUST PRINT THE CURRENT ROOM #. 'SORT!' THIS COMAND WILL SORT THE BUFFER BY ROOM VALUE,MAKING GAMES EASYER TO READ. 'ROOM!' THIS COMAND WILL CAUSE A PROMPT FOR A ROOM TO JUMP TO.NO RETURN ROOM WILL BE SET. CLUES TO PROGRAMING FIRST MAKE A ONE PAGE LIST OF THE ABOVE SUB DATA. AS YOU CREATE AN ADVENTURE MAKE A MAP SHOWING EACH ROOM AND CONECTIONS BETWEEN THEM. KEEP A RECORD OF THE USE OF ACCESS #'S AND INFO STRING ARRAY SPACE. REMEMBER THAT 'ROOM' IS JUST A LINE # AND A LOCATION IN YOUR ADVENTURE CAN HAVE AS MANY 'ROOMS' AS NECESSARY. INFACT CREATURES CAN BE CREATED MADE OF 'ROOMS' USEING THE RETURN FUNCTION. AS YOU GAIN EXPERIANCE WITH QUEST YOU WILL SEE THAT ALMOST ANY SIDUATION YOU CAN THINK OF-CAN BE PROGRAMED. SOME LIMITATIONS THERE ARE 200 ACCESS NUMBERS AVAILABLE BUT A NULL OR 0 ACCESS CAN BE USED FOR MANY ACCESS SUBS-ALLOWING ONLY TEMPORY SETTING TO 1.WHICH ENTERING A NEW ROOM WILL MAKE 0 AGAIN. THERE ARE 1-10 INFO STRING POSITIONS PLEASE NOTE: !10 INFO JUMP AND !11 INFO SAY ALWAYS USE INFO 2 THERE IS ONLY ONE RETURN ROOM SET # WHICH ANY RETURN SET WILL ACCESS. FINAL NOTES IF YOU HAVE COMPLEATED AN ADVENTURE YOU CAN PUT THE LINE: 'RUN GAME' AT THE START OF THE 'QROOM' FILE THAT ALL ROOMS HAVE BEEN SAVED TO THROUGH THE PROGRAM-THE BUFFER SHOULD BE EMPTY. THIS WILL MAKE A PROGRAM RUNNING OFF THAT 'QROOM' FILE HAVE AN UNFUNCTIONAL BUFFER..WHICH A 'SIMPLE' PLAYER WOULD'ENT KNOW HOW TO ACCESS ANYWAY! ALSO-IF YOU WRITE A SHORT PROGRAM THAT TAKES A COMPLEATED 'QROOM' FILE AND SAVES IT INTO A MERGABLE FILE CONTAINING ALL THAT FILES ROOMS AS 'DATA' THAT IS TO SAY DATA IN PROGRAM LINE FORMAT THEN-BEING SURE THAT THE DATA LINES DO NOT OVERWRITE THE PROGAM LINES APPEND THE FILE TO THE PROGAM. THIS WILL CREATE A PROGRAM THAT CONTAINS THE ADVENTURE WITH ALL EDITING FUNCTIONS OFF! WELL THAT'S IT..HAVE FUN.