T.A.B. ADVENTURE AUTHORING SCRIPT LANGUAGE ========================================== By Catventure 2005-2026 X and Y must be valid numbers. The max limit of X or Y may be indicated within parentheses () X$ and Y$ must be valid text strings. CONDITIONS ========== PARSER CONDITIONS: Verb conditions v [ >= | <= | <> | > | < | = ] X (500) Example: "v<=55" Noun 1 conditions n1 [ >= | <= | <> | > | < | = ] X (500) Example: "n1=400" Noun 2 conditions n2 [ >= | <= | <> | > | < | = ] X (500) Example: "n2<40" Preposition conditions p [ >= | <= | <> | > | < | = ] X (200) Example: "p<>28" Object Noun 1 conditions objn1 [ >= | <= | <> | > | < | = ] X (200) Example: "objn1<50" Object Noun 2 conditions objn2 [ >= | <= | <> | > | < | = ] X (200) Example: "objn2>=199" Character Noun 1 conditions charn1 [ >= | <= | <> | > | < | = ] X (100) Example: "charn1=22" Character Noun 2 conditions charn2 [ >= | <= | <> | > | < | = ] X (100) Example: "charn2<>17" objn1=objn2 - is object noun1 the same as object noun2? objn2=objn1 objn1<>objn2 - is object noun1 not the same as object n2? objn2<>objn1 charn1=charn2 charn2=charn1 charn1<>charn2 charn2<>charn1 n1=n2 n2=n1 n1<>n2 n2<>n1 v=? - can be used to check if an input consists of a verb typed twice in succession as an input command CHARACTER CONDITIONS: charlocn1 [ >= | <= | <> | > | < | = ] room Example: "charlocn1>=room" charlocn2 [ >= | <= | <> | > | < | = ] room Example: "charlocn2>=room" charlocn1 [ >= | <= | <> | > | < | = ] X Example: "charlocn1>=40" charlocn2 [ >= | <= | <> | > | < | = ] X Example: "charlocn2>=37" charlocX [ >= | <= | <> | > | < | = ] room Example: "charloc5=room charlocX [ >= | <= | <> | > | < | = ] Y Example: "charloc1=5" charsexn1=male - Is the gender of Character n1 male? charsexn1=female charsexn1=it charsexn2=male charsexn2=female charsexn2=it charsexn1<>male charsexn1<>female charsexn1<>it charsexn2<>male - Is the gender of Character n2 female or "it"? charsexn2<>female charsexn2<>it charmaleX - is Character X male? charfemaleX charitX - is Character X not male or female? charpresentn1 - Is Character n1 in player's current room? charpresentn2 charabsentn1 charabsentn2 charpresentX (100) - is Character X present in same room as Player? charabsentX (100) charitemscarrX[ >= | <= | <> | > | < | = ] Y eg: #charitemscarr1<3#rem: Is character number 1 carrying less than 3 items? charitemswornX[ >= | <= | <> | > | < | = ] Y eg: #charitemsworn16>=9#rem: Is character number 16 wearing 9 or more items? charitemscarrn1[ >= | <= | <> | > | < | = ] Y eg: #charitemscarrn1<3#rem: Is character charn1 carrying less than 3 items? charitemscarrn2[ >= | <= | <> | > | < | = ] Y eg: #charitemscarrn2<3#rem: Is character charn2 carrying less than 3 items? charitemswornn1[ >= | <= | <> | > | < | = ] Y eg: #charitemswornn1>=9#rem: Is character charn1 wearing 9 or more items? charitemswornn2[ >= | <= | <> | > | < | = ] Y eg: #charitemswornn2<3#rem: Is character charn2 wearing less than 3 items? charsamelocX,Y - Are characters X and Y present in SAME ROOM? charfollowingn1 - is character n1 following the player? charfollowingn2 - is character n2 following the player? charfollowingX - is character X following the player? anycharsroom - are any characters present in current room? anycharsX - are any characters present in room X? notanycharsroom - TRUE if no characters in player's current room. notanycharsX - TRUE if no characters in room X. anycharsfollow - true if ANY chars are following player notanycharsfollow - true if NO characters are following player speechcount=X - handles speech processing when commands given to an absent character speechcount<>x Char Speech Conditions: objlocn1=speechpresent (true if objn1 in speech character's room, carried or worn location) objlocn1=speechabsent objlocn2=speechpresent objlocn2=speechabsent objlocn1=speechcarrworn (true if objn1 in speech character's carried or worn location) objlocn1<>speechcarrworn objlocn2=speechcarrworn objlocn2<>speechcarrworn ========== ========== ========== OBJECT CONDITIONS: objlocn1 [ >= | <= | <> | > | < | = ] room Example: "objlocn1>=room" Is the location of object n1 a greater number or equal to the number of the current room? objlocn2 [ >= | <= | <> | > | < | = ] room Example: "objlocn2>=room" objlocn1 [ >= | <= | <> | > | < | = ] X Example: "objlocn1>=56" objlocn2 [ >= | <= | <> | > | < | = ] X Example: "objlocn2=35" weightobjn1 [ >= | <= | <> | > | < | = ] X Example: "weightobjn1=2" weightobjn2 [ >= | <= | <> | > | < | = ] X Example: "weightobjn2>=4" weightX [ >= | <= | <> | > | < | = ] Y Example: "weight32<>4" Is the weight of object 32 not equal to 4? objlocX [ >= | <= | <> | > | < | = ] Y | room Example: "objloc22=78" ; "objloc30<>room" Is object 22 in location 78? objn1size [ >= | <= | <> | > | < | = ] X Example: "objn1size<=6" objn2size [ >= | <= | <> | > | < | = ] X Example: "objn2size<3" sizeX [ >= | <= | <> | > | < | = ] Y Example: "size5>1" tweight [ >= | <= | <> | > | < | = ] Y Example: "tweight>20" Is total weight of objs carried and worn by player >30 ? carrweight [ >= | <= | <> | > | < | = ] Y Example: "carrweight<50" Is total weight of objects carried by player less than 50? wornweight [ >= | <= | <> | > | < | = ] Y Example: "wornweight>=30" Is total weight of objects worn by player >=30 ? itemscarr [ >= | <= | <> | > | < | = ] Y Example: "itemscarr=1" Is total number of objects CARRIED by player equal to 1? itemsworn [ >= | <= | <> | > | < | = ] Y Example: "itemsworn<=3" Is total number of objects WORN by player <=3 ? objlocn1=carried - is objn1 carried? objlocn2=carried objlocn1=notcarried - is objn1 not carried? objlocn2=notcarried objlocn1=worn - is objn1 worn? objlocn2=worn objlocn1=notworn - is objn1 not being worn? objlocn2=notworn objlocn1=carrworn - is object n1 carried or worn? objlocn2=carrworn objlocn1=carrworncont - is object n1 in a carried or worn container? objlocn2=carrworncont objlocn1=roomcont - is object n1 in a container in the current room? objlocn2=roomcont objlocn1<>carrworn - is object n1 not carried and not worn? objlocn2<>carrworn objlocn1<>carrworncont - is object n1 not in a carried or worn container? objlocn2<>carrworncont objlocn1<>roomcont - is object n1 not in a container in the current room? objlocn2<>roomcont objlocn1=carrwornroomcont - true if objn1 inside a container that is carried, worn or in player's current room objlocn2=carrwornroomcont - true if objn2 inside a container that is carried, worn or in player's current room objlocn1<>carrwornroomcont - true if objn1 is not inside a container that is carried, worn or in player's current room objlocn2<>carrwornroomcont - true if objn2 is not inside a container that is carried, worn or in player's current room objlocn1=charlocn2 - is location of object n1 at location of character n2? objlocn2=charlocn1 objlocn1=charlocX objlocn2=charlocX objn1container - is objn1 a container? objn2container objn1notcontainer - is objn1 not a container? objn2notcontainer objn1fitsintoobjn2 - TRUE if the size of object objn1 is less or equal to that of CONTAINER object objn2 OR if CONTAINER object objn2 has a size value of 0 (zero; ie. any objs can fit in it!) It will thus be TRUE if objn1 fits into the container objn2. objn1static - is objn1 static? objn2static objn1notstatic objn2notstatic objn1wearable - is objn1 wearable? objn2wearable objn1notwearable - is objn1 not wearable? objn2notwearable objlocn1=here - carried, worn or in present room? objlocn2=here objlocn1=absent - not carried, not worn and not in present room? objlocn2=absent openobjn1 - is object n1 open? closedobjn1 openobjn2 - is object n2 open? closedobjn2 objlocn1=contobjn2 - object n1 is in container object n2? objlocn2=contobjn1 objlocn1<>contobjn2 - object n1 not in container object n2? objlocn2<>contobjn1 objincontX,Y - is object X in container Y? objnotincontX,Y - is object X not in container Y? objn1lit - is object noun 1 a lightsource? objn2lit objn1notlit - is object noun 1 not a lightsource? objn2notlit litX - is object X a lightsource? notlitX - is object X not a lightsource? openedX - is container object X open? closedX carriedX - is object X being held by player? notcarrX wornX - is object X being worn by player? notwornX containerX - is object X a container? notcontainerX hereX - is object X carried, worn or in current room absentX staticX - is object X a static object? notstaticX wearableX - is object X a wearable object? notwearableX anyobjscarrcharn1 - are any objects carried by character n1? anyobjsworncharn1 - are any objects worn by character n1? anyobjscarrcharn2 anyobjsworncharn2 anyobjscontn2 - are any objects present in container object n2? anyobjscharlocn1 - any dynamic objects present in character noun1's location? anyobjscharlocn2 - any dynamic objects present in character noun2's location? anyobjscharlocX - any dynamic objects present in character X's location? anyobjsroom - TRUE if any dynamic objs in current room. anyobjsX - any dynamic objs present in room X? notanyobjsroom - TRUE if no dynamic objects present in current room. notanyobjsX - TRUE if no dynamic objects are in room X. anystaticroom - TRUE if any static objects in player's current room. anystaticX - TRUE if any static objects are in room X. notanystaticroom - TRUE if no static objects in player's current room. notanystaticX - TRUE if no static objects are in room X. anyinroom - TRUE if any static AND/OR dynamic objs are in current room. anyinX - TRUE if any static AND/OR dynamic objs are in room X. notanyinroom - TRUE if no static AND/OR dynamic objs are in current room. notanyinX - TRUE if no static AND/OR dynamic objs are in room X. anywearableX - are there any wearable objects wearable in location X? validmove - true if %directn1% a valid exit from player current location invalidmove - true if %directn1% is not a valid exit from player current location validcharmove - true if %directn1% a valid exit from commanded character's current location invalidcharmove - true if %directn1% is not a valid exit from commanded character's current location dark - true if player in a dark location notdark - true if player is not in a dark location undoenabled - is "undo" feature enabled? undodisabled - is "undo" feature disabled? NOTE: If using alternative action "endgame" in a coding entry then "undo" must be enabled/active in order for keypress option: "(U) Undo" to work correctly. (Undo is automatically enabled at the start of a game) FLAGS CONDITIONS: flagX [ >= | <= | <> | > | < | = ] Y Example: "flag16<17" equalX,Y - are values of flags X and Y both equal? notequalX,Y greaterorequalX,Y lessorequalX,Y lessX,Y - is value of flag X less than that of flag Y? greaterX,Y room=flagX - is current room number same as value held by flag X room<>flagX room>flagX room=flagX room<=flagX Check the current room number held as an integer in flagX. Note: Location 501 is the player's carried inventory Location 502 is the player's worn inventory Locations 601-700 are used for the inventory carried objects location of Characters (1-100) Locations 701-800 are used for the inventory worn location for Characters (1-100) MISCELLANEOUS CONDITIONS: score [ >= | <= | <> | > | < | = ] X Example: "score<25" room [ >= | <= | <> | > | < | = ] X Example: "room>4" turns [ >= | <= | <> | > | < | = ] X Example: "turns<50" - is number of turns taken less than 50? turns [ >= | <= | <> | > | < | = ] -1 (minus one) Example: "turns=-1" *can be used in Script 1 to initialise flags, load music before the game starts. turns=-1 Script 1 only. Useful for setting flags in Script1 to activate alternative Location or Message texts etc before game starts. turns=0 Script 2 only. Useful for adding text after location describe in opening location of game only or setting flags prior to beginning of game. anyobjsroom - are any dynamic objects in current room? maleplayer - is player male? femaleplayer - is player female? [obtained through getplayername if set in Settings Editor] answer=X$ - is answer obtained thru ask action = X$ ? answer<>X$ - is answer obtained thru ask action not equal to X$ ? sfxon - true if sound playing actions enabled with action "sfxon" sfxoff - true if sound playing actions disabled with action "sfxoff" musicfxon - true if music playing actions enabled with action "musicfxon" musicfxoff - true if music playing actions disabled with action "musicfxoff" samplefxon - true if sample playing actions enabled with action "samplefxon" samplefxoff - true if sample playing actions disabled with action "samplefxoff" speech [ >= | <= | <> | > | < | = ] X (100) Example: "speech=3" True if command given to character number 3. Example: "#speech>0#speech<5" True if command given to characters 1,2,3 and 4 only. IMPORTANT NOTE ============== ALL CONDITIONS CAN BE PRECEDED BY THE PREFIX "or_" TO CAUSE TAB TO GO INTO OR-CHECKING MODE. EXAMPLE SCRIPT 2 ENTRY: [start]or_room=1#or_room=52#flag1=0[acts]cmessYou are in either room 1 or room 52 and flag 1 holds a value of zero!![end] Roughly translated this reads: IF the player is in room 1 OR the player is in room 2 AND flag 1 is equal to 0 THEN print the custom message: "You are in either room 1 or room 52 and flag 1 holds a value of zero!!" THEN GOTO next Script 2 entry. (if any) SPECIAL RESPONSE EDITOR WORDS CONDITION ======================================== %_% - will cause TAB to do the entry no matter what VALID words are typed Example: [start]%_%#room=5[acts]cmessI am printed when the player types any valid phrase of input providing the player is in room 5 and no other response entries have triggered before me![end] "call_ACTION" is a CONDITION that allows you to call an action during condition processing before the [acts] tag in a coding entry. All actions can be prefixed by "call_" to cause TAB to briefly jump out of CONDITIONS to do the specified action. eg: #call_cmessI am a message.# : Print a cmess. TAB then continues checking the subsequent conditions as normal. The "call_" commands will prove to be a very useful addition to TAB and they can be used in Response, Script1 and Script 2. ==== ACTION COMMANDS: ========== else - An extension to TAB coding. Allows multiple conditions and actions in a single entry. EXAMPLE: [start]words conditions#condition#condition[acts]action#action#else#condition#condition[acts]action# action#else#condition#condition[acts]action#action#else#[acts]action[end] You can still use the or-checking syntax ( "or_" prefix on conditions) with #else# too. EXAMPLE: [start]words condition#or_ condition#or_condition[acts]action#else#or_condition#or_condition[acts]action#else#[acts]action[end] "call_CONDITION" is an ACTION that allows you to call a condition check whilst processing actions after the [acts] tag in a coding entry. All conditions can be prefixed by "call_" to cause TAB to briefly jump out of ACTIONS to check the specified condition. eg: #call_flag30=2# : Is flag 30 equal to 2? If the condition is passed as TRUE then TAB continues with the following ACTIONS. If it is FALSE then TAB exits that entry. This useful ACTION replaces the little used and not working correctly "then" action command which is now no longer supported by TAB and has been superceded by the "call_condition" action. getplayername - call Player Name Dialog Box to obtain player name info desc - redescribe location. (Should be used in RESPONSE only) moveplayer - move player via exit and describe new room (RESPONSE only) gotoX - move player to room X and describe room (RESPONSE only) gotoflagX - as above but moves player to room number held in flag X. (RESPONSE Only) room=X - set player current room to be X but do not describe room room=flagX - as above but set room to be room number held in flag X. randomroomX,X,X,X,X..... - Randomly selects one of the room numbers indicated then moves the player to that room but does not describe the room. #randomroom1, 5,23,56,70# Puts player in a random pick of one of the above rooms 1,5,23,56 or 70. Operates like a "room=X" action Note: Location 501 is the player's carried inventory Location 502 is the player's worn inventory Locations 601-700 are used for the inventory carried objects location of Characters (1-100) Locations 701-800 are used for the inventory worn location for Characters (1-100) score=X score-X score+X destroyobjn1 destroyobjn2 destroyX createobjn1 createobjn2 createX destroycharn1 - move character n1 to loc 0 and set pattern to static destroycharn2 destroycharX createcharn1 - create char n1 in current room createcharn2 createcharX charlocn1=X - create or move charn1 to loc X charlocn2=X charlocX=Y - create or move char X to loc Y charlocX=room - move char X to current room charlocX=charlocY - the current location of char X is changed to be the current location of char Y. messX - show message X without CRLF unless entered sysmessX - system message cmessX$ - custom message eg: cmessI am a custom message. typemessX$ - prints out a message letter by letter in a sort of typewriter fashion with a small pause between each letter, until the end of the text has been output. Might be useful in a particular situation eg: #typemessI am message written by the new typemess action!# NOTE: Because individual textual characters are printed singly, one by one, 'text formatting codes' or %tags% will NOT have any effect in a typemess... But you can set font and color etc. prior to using it. objn1mess objn2mess objmessX - show object examine message charn1mess charn2mess charmessX - show character examine message smessX - same as "messX" except only valid if used in Character Speech Command Response List scmessX$ - same as "cmessX$" except only valid if used in Character Speech Command Response List dialogmessX$ - show a message in a dialog box revmessX - print message X in REVERSE text! (handy for cluehints) followchar followstop weightobjn1=X weightobjn2=X weightX=Y charn1inv charn2inv charinvX -show character X carried and worn objs charinvplusX - where X can be the tags: n1, n2, %speech% OR a valid character number (1-100) Lists objects carried and worn by Character X in sentence listing fashion eg: Joseph the farmer is carrying a rope, a penknife and a lamp. He is wearing a multicolored coat. NOTE: the "objlistoff" action must be activated before usage of the 'charinvplusX' action! invlistoff - default to concatenated inventory listing for PLAYER. objlistoff - default to concatenated room object listing. charlistoff - default to concatenated character announcement listing. speechlistoff - default to not report speech character messages if speech character not in same room as Player. objliston - list objects normally charliston - list characters normally invliston - list inventory normally speechliston - report speech entries when Character not in player room showexits - show exit listing from current room. (only if exits turned ON) showobjs - list objects visible in current room. (listing fashion is dependent on "objlistoff" setting) showchars - list characters present in current room (listing fashion is dependent on "charlistoff" setting) showcontents - list objects inside open containers and objects residing ON any supporting object that is in the current room when it is described. showinv - list characters carried and worn inventory when listing characters in room description. NOTE: In order for the "showinv" and "showcontents" commands to work the "objlistoff" and/or "charlistoff" must NOT have been activated anywhere in the database. showinvoff - switch back to default character listing in room descriptions. showcontentsoff - stop showing objects in open containers or residing ON a supporting object when listing objects visible in a room sizeX=Y - change the size attribute of object X to Y. objn1size=Y - change the size of object n1 to Y. objn2size=Y listobjsroom - list objects present in current room. listobjsX |carrcharn1|carrcharn2|worncharn1|worncharn2 - list objects in those locations. strength+X carrylimit+X openobjn1 - open container object n1 openobjn2 openobjX closeobjn1 - close container object n1 closeobjn2 closeobjX cleartext - refreshes adventure window brief - show short location description verbose - show full location description exitson - turn exit listing on exitsoff - turn exit listing off done - can be used in Responses ONLY to stop further processing/player commands. Do not use in Script1 or Script 2. wait - print "Time Passes" system message flagX=Y - set flag X to contain a value decflagX,Y - decrease flag X by Y incflagX,Y - increase flag X by Y room=flagX - set room number to be that held in flag X swapcharsX,Y - the positions (rooms) of characters X and Y are exchanged swapobjsX,Y - the locations of objects X and Y are exchanged swapflagsX,Y - the flag values held by Flags X and Y are swapped. pattcharn1=X$ pattcharn2=X$ pattcharX=Y$ - change a move pattern of a Character eg: pattcharn1=random ; pattchar3=p,p,p,2,1 ; pattcharn2=static ; pattchar16=follow randomizeflagX,Y - fill flag X with a random integer in the value of 1 to Y eg: randomizeflag15,20 moveallobjectsX,Y - move all objects from location X to location Y addX,Y - contents of flag X added to flag Y subX,Y - contents of flag X subtracted from flag Y copyflagX,Y - contents of flag X replaces contents of flag Y copyobjX,Y - location of object Y set to be location of object X objlocn1=room - move object n1 to current room objlocn2=room objn1loc=X - move object n1 to room X objn2loc=X objlocX=room objlocX=Y |carrcharn1|carrcharn2|worncharn1|worncharn2 objlocn1=charlocn2 objlocn2=charlocn1 - move object n2 to character n1's location objlocn1=charlocX objlocn2=charlocX makewearableX makenotwearableX putobjn1intoobjn2 - put object n1 into container object n2 ask - invoke an ask dialog box and wait for input from player (response can be tested using 'answer=X$' and 'answer<>X$ conditions) wintitle - Set/Change dialog window caption text. eg: #wintitleI am a changed message in the window titlebar!# alignleft alignright aligncenter fontname=X$ fontsize=X fgcolor=X bgcolor=X flash - flashes richedit background color randomly for a second or two before restoring default background color. fade - fades adventure window until disappears appear - fades window back into view again slideoff - slides window horizontally right until disappeared slideon - slides window horizontally left back into view again hide - instantly hides adventure window from view reveal - instantly reveals a previously window hidden with "hide" menuoff - remove titlebar menues menuon - show titlebar menues allX - must be FIRST action in an entry. Repeats all actions for each OBJECT N1 only in location X. Allows creation of custom 'all' type entries eg: [start]throw all#anyobjs501[acts]all501#cmessYou hurl the %objn1% to the floor.#objlocn1=room[end] allcontn2 - must be FIRST action in entry. Similar but repeats all actions for each object n1 that is in container object n2. pauseX (secs) connectX=Y$toY eg: connect6=eastto7; connect6=southto0 quit - call quit dialog box "Are you Sure?" - must be the LAST ACTION called in a RESPONSE entry only! restart - ask if want to play again replay - restart game without asking and without intro text gameover - end game dialog endgame - end game with options: "Would you like to (Q)uit, (R)estart, (L)oad a saved game or (U)ndo?" and then waits for a user keypress of Q, R, L or U... NOTE1: If using action "endgame" in a coding entry then "undo" MUST be enabled/active in order for keypress option: "(U) Undo" to work correctly. (Undo is automatically enabled at the start of a game) Always allow "undo" and do not allow players to change the status of undo if using an "endgame" action. NOTE2: restart, replay, endgame and gameover must be LAST ACTION in a RESPONSE or SCRIPT2 entry ONLY!! itnoun=n1 itnoun=n2 itnoun=objn1 itnoun=objn2 itnoun=charn1 itnoun=charn2 ' change the "it" noun if required autogetobj (also tries to get the object from off any supporting object in the room) autodropobj autowearobj autoremoveobj autoexamobj autoexamchar lookinobj ' automatic default actions lookinobjn2 - same as lookinobj lookinobjn1 - same as lookinobj but for object n1 container. lookincontn1 - same as lookinobj but text displayed in sentence listed fashion lookincontn2 - same as lookinobj but text displayed in sentence listed fashion. NOTE: the "objlistoff" action must be activated before usage of the 'lookincont' actions! lookonobj - lists any objects ON another object (object number + 1000) eg: If object 6 was a table you can send objects to 1006 (surface object container) to put items on to the table... Uses objn2 variable lookonobjn2 - same as lookonobj lookonobjn1 - same as lookonobj but for object noun1 listsurfaceX - list objects ON object X (location = X+1000) examall getall dropall wearall removeall takeout dropin takealloutobj dropallinobj 'more automatic actions getallplus - firstly tries to get all objects in any open containers in the room and then tries to get any objects in the room itself. (getall) autogetobjplus - tries to take the named object firstly from any open container which may be held, worn or in the current room then tries to get the named object from OFF any supporting object in the room; and finally tries to get it from the room location itself (autogetobj). speechwearall - special action to deal with commanded character inven - show player inventory score - show player current score turns - show turns taken so far scoreturns - prints player's score AND also turns taken time - prints current time and date timeout=X (secs) - set input to be timed out by value X save - saves game position file load - load a previously saved game position quicksave - saves a game position without the file requester as a ".qsav" file quickload - loads the last saved game position ".qsav" file previously saved with quicksave enableundo - set "undo" feature to on disableundo - set "undo" feature to off NOTE1: If using action "endgame" in a coding entry then "undo" MUST be enabled/active in order for keypress option: "(U) Undo" to work correctly. (Undo is automatically enabled at the start of a game) Always allow "undo" and do not allow players to change the status of undo if using an "endgame" action. about - show about box (system message 49) help - autoload Notepad with a file named "help.txt" from game directory Sound actions: -------------- playmusicX$ - load and play a music file (.mod, .aiff, .wav, .ogg, mp1, mp2, mp3) playsampleX$ - load and play a sound sample file loopsampleX$ - load, play and loop a sound sample eg: #loopsamplewind.wav# (stop sample playing with "samplestop" or samplepause" action) musicstop - stop currently playing music samplestop - stop currently playing sample musicpause - halt/pause a currently playing music file samplepause - halt/pause a currently playing sample file musicresume - resume playing loaded music file from paused point sampleresume - resume playing loaded sample file from paused point musicrestart - restart currently loaded music from beginning of file samplerestart - restart currently loaded sample from beginning of file musicvol=X - where X is a value of 1 (lowest) to 100 (full volume) samplevol=X - where X is a value of 1 (lowest) to 100 (full volume) Controls volume of music or sample channel. eg: #musicvol=80#loopsamplewindsound.wav# eg: #loopsamplewindsound.wav#musicvol=50# Can be used before sound is playing or after sound is playing. sfxon - allow all sound playing actions sfxoff - disable all sound playing actions. Any sound playing is immediately ceased. musicfxon - turn on music playing actions musicfxoff - stops any currently playing music and turns off music playing actions samplefxon - turn on sample playing actions samplefxoff - stops any currently playing sample and turns off sample playing actions NOTE: "sfxoff" (turns off both music and sample playing actions) has priority sfxdir=X$ - tell TAB which folder to use for sound and music eg: sfxdir=/sounds/ Graphic actions (display mode 2 only): -------------------------------------- NOTE: These action commands are for TEXT/GRAPHIC VERSION. (pic3box commands for Split-Screen Text/graphic Version only) Must be an allowed image file (.jpg, .gif, .bmp, .png) pic1box$filename$ eg: pic1boxMyPic1 (show image in picbox1) pic2box$filename$ eg: pic2boxMyPic2 (show image in picbox2) pic3box$filename$ eg: pic2boxMyPic3 (show image in picbox3) showobjn1aspic1 - show object n1 image in picbox1 showobjn1aspic2 - show object n1 image in picbox2 showobjn1aspic3 - show object n1 image in picbox2 showobjn2aspic1 - show object n2 image in picbox1 showobjn2aspic2 - show object n2 image in picbox2 showobjn2aspic3 - show object n2 image in picbox3 showcharn1aspic1 - show character n1 image in picbox1 showcharn1aspic2 - show character n1 image in picbox2 showcharn1aspic3 - show character n1 image in picbox3 showcharn2aspic1 - show character n2 image in picbox1 showcharn2aspic2 - show character n2 image in picbox2 showcharn2aspic3 - show character n2 image in picbox3 clearpic1 - clear picbox1 clearpic2 - clear picbox2 clearpic3 - clear picbox3 playmovieFILENAME$ - play a .wmv video clip in adventure text window ONCE ONLY. eg: playmovieMyMovie.wmv playmovie1FILENAME$ - play a .wmv video clip in picbox1 ONCE only playmovie2FILENAME$ - play a .wmv video clip in picbox2 ONCE only playmovie3FILENAME$ - play a .wmv video clip in picbox3 ONCE only eg: playmovie2MyMovie.wmv loopmovieFILENAME$ - loop a .wmv video clip in adventure text window until [ESC] key pressed. eg: loopmovieMyMovie.wmv loopmovie1FILENAME$ - loop a .wmv video clip in picbox1 loopmovie2FILENAME$ - loop a .wmv video clip in picbox2 loopmovie3FILENAME$ - loop a .wmv video clip in picbox3 eg: loopmovie3MyMovie.wmv Note: Player can press key to exit/halt videoclips gfxdir=X$ - tell TAB which folder to use for all graphics and videos. eg:gfxdir=/gamepics/ ---------------------------------------- transcripton - turn on game transcript logging transcriptoff - turn it off keypress - wait until key [SPACE] pressed before continuing presskey - wait until key C pressed before continuing newline - print a blank line linkX$ - autoload and run a database from the source directory into the Player eg:.....#pause5#cleartext#linkpart2.tab[end] Use in Response or Script 2 only. Must be the LAST action in an entry. Special Action: jumpLABEL jumpLABEL - where LABEL is a word(s) further ahead in the code. Can be used in Response, Script1,Script2 and Character Speech coding editors. EXAMPLE RESPONSE ENTRY [start]push %n1%/push %objn1%/push %charn1%[acts]jumpPUSH_CODE[end] 'REM if player types verb "push" + valid noun jump over subsequent code to label PUSH_CODE ........ ....... ....... ....... ....... ....... PUSH_CODE: 'REM note COLON after label marker name! Label name does not need to be capitalised and can be numeric or alphanumeric. 'REM Continue processing conditions and actions from here after the "jump" [start]push button#room=1#flag20=2[acts]flag20=3#cmessYou push the button...etc[end] Special Action: updatecommand updates a player input command to be keyword string sentence equivalent of parser variables set in a coding entry by the parser variable actions. Usage: just before a "jump" action is executed. eg: .....#updatecommand#jumpPUSH_CODE[end] PARSER variable ACTION COMMANDS: ============================= objn2=objn1 objn1=objn2 charn2=charn1 charn1=charn2 v=X n2=n1 n1=n2 n1=X n2=X p=X objn1=X objn2=X charn1=X charn2=X Character Speech Actions -------------------- speech=charn1 - set speech to be number of charn1 speech=charn2 - set speech to be number of charn2 speech=X - set speech to character number X (1-100) charobjn1msg - Prints objn1 examine text response by speech character charobjn2msg - Prints objn2 examine text response by speech character charcharn1msg - similar to "charobjn1msg". Prints Character n1 examine text response by speech character charcharn2msg - similar to "charobjn2msg". Prints Character n2 examine text response by speech character charmsgX - replies by different characters can be put in Message X. trust=X trust<>X (ADVANCED TAB CODERS) Character "charmsg" ACTION extended to include optional facility to include Character compliance level messages. If using this note that flags 501 to 600 will need to be reserved to hold the "trust/compliance" level for each Character. New CONDITION "trust=X" where X is the compliance level held in the corresponding flag linked to the Character being commanded. More info on this in TAB forum/Email Group. FORMATTING CODES ================ These format codes can be used in Response Entry Word Conditions: (Below codes are replaced with Vocab KEYWORDS) %directn1% - n1 is a direction noun %directn2% - n2 is a direction noun %v% - valid verb %p% - valid prep %n1% %n2% %objn1% %objn2% %charn1% %charn2% %anyn1% - ordinary, object or character n1 %anyn2% - ordinary, object or character n2 %charname1% - character noun 1's NameText %charname2% - character noun 2's Name Text %anywords% - anything at all typed by the player! (LAST ENTRY IN A CODING TABLE) ? - for nonsense word detection. (Below tag codes can be used in CONDITIONS/ACTIONS following words conditions: %speech% - substitutes commanded character number %speechcarr% - substitutes commanded character carried location number %speechworn% - substitutes commanded character worn location number %speechloc% - substitutes commanded character's current location number %room% - substitutes player location number %contn1% - substitutes object container contents location of object n1 %contn2% - substitutes object container contents location of object n2 %surfacen1% - substitutes objn1 number +1000 (surface location of object n1) %surfacen2% - substitutes objn2 number +1000 (surface location of object n2) In addition to these the following codes can be used in TEXT MESSAGES and will be replaced by the contents of the relevant coding %tags% : %score% - prints score value %turns% - print # of turns taken %brief% - print abbreviated current location text %strength% - print strength value %carrylimit% - print numerical carrylimit %fullname% - print player fullname %firstname% - print player firstname %surname% - print player surname %v% - print verb KEYWORD %n1% - print ordinary noun 1 KEYWORD %p% - print preposition KEYWORD %n2% - print ordinary noun 2 KEYWORD %objX% - prints Object noun KEYWORD for object X (1-200) %objn1% - prints Object n1 KEYWORD %objn2% - prints Object n2 KEYWORD %charn1% - prints Character n1 KEYWORD %charn2% - prints Character n2 KEYWORD %charname1% - prints Character n1 "name" text %charname2% - prints Character n2 "name" text %directn1% - prints n1 direction word %directn2% - prints n2 direction word %anyn1% - prints ordinary, object or character n1 KEYWORD %anyn2% - prints ordinary, object or character n2 KEYWORD %flagX% - prints numerical value of flag X %objtextX% - prints object text description of object X %objtextn1% - prints object text description of object n1 %objtextn2% - prints object text description of object n2 %sizeX% - prints size value of object X %vsyn% - prints verb synonym of verb keyword %psyn% - prints prep synonym of prep keyword %n1syn% - prints ordinary, object or character n1 synonym %n2syn% - prints ordinary, object or character n2 synonym %r% - used as a separator for elements of a random text message %speechnoun% - substitutes character noun keyword of commanded character %speechname% - substitutes character name text of commanded character %ucase% - capitalise first letter of next word in text %lcase% - make first letter of next word lower case %up% - Set to output UPPERCASE text %/up% - Unset UPPERCASE text %cap% format tag. Auto-capitalises first letter of first word in text only. Useful for "character name text" that does not start with a capital letter eg: "%cap%the black cat" %exits% - Will just list the exits and NOT include the system message 41 "Exits Lead:" or the trailing full stop and carriage return. eg: "north, east and south". (Only works if room not dark and exits are currently turned on) %lcase% and %ucase% can now be used in conjunction with ALL other text format %tags% eg: "The following noun in this sentence will start with a capital letter - %ucase%%anyn1%. The following will operate on valid Character noun1 and/or Character noun 2 words typed by player: %he.she.n1% - print "he", "she" or "it" depending on Char Noun 1's gender (male, female or "it") %he.she.n2% - print "he", "she" or "it" depending on Char Noun 2's gender (male, female or "it") %him.her.n1% - print "him", "her" or "it" depending on Char Noun 1's gender (male, female or "it") %him.her.n2% - print "him", "her" or "it" depending on Char Noun 2's gender (male, female or "it") %his.her.n1% - print "his", "her" or "its" depending on Char Noun 1's gender (male, female or "it") %his.her.n2% - print "his", "her" or "its" depending on Char Noun 2's gender (male, female or "it") %he.she.speech% - print "he", "she" or "it" depending on speech character's gender (male, female or "it") %him.her.speech% - print "him", "her" or "it" depending on speech character's gender (male, female or "it") %his.her.speech% - print "his", "her" or "its" depending on speech character's gender (male, female or "it") French text %tags% for Male and Female characters only: %il.elle.n1% - prints "il" or "elle" depending on Character n1 gender (male or female only) %ils.elles.n1% - prints "ils" or "elles" depending on Character n1 gender %il.elle.n2% - prints "il" or "elle" depending on Character n2 gender %ils.elles.n2% - prints "ils" or "elles" depending on Character n2 gender %il.elle.speech% - prints "il" or "elle" depending on Character speech number's gender %ils.elles.speech% - prints "ils" or "elles" depending on Character speeech number's gender The respective valid charn1, charn2 or speech variable must holds a value >0. %c% - cyclic text element tag %r% - random text element tag %?% - substitutes nonsense word Object Prefix tags. Optional. Maximum of 9 for each object. %n1.x% - x is in range 1 to 9 %n2.x% - x is in range 1 to 9 %x.x% - x is in range 1 to 200; x is in range 1 to 9 [These tags will require definitions entered into System Message 18 to work] They print an object prefix only. Character Prefix Tabs. Optional. Maximum of 9 for each character. %cn1.x% - x is in range 1 to 9 %cn2.x% - x is in range 1 to 9 %cx.x% - x is in range 1 to 100; x is in range 1 to 9 [These tags will require definitions entered into System Message 99 to work] They print a character prefix only. %endmess% - special tag that can be used at the end of an object or character examine text to enable further speech replies by Characters to be inserted and enclosed using %chX% tags. (X=Character number) EXAMPLE ======= Object 1 text description: an apple %endmess% %ch1%The %speechnoun% says: "You might need an apple on your quest!" %ch1% %ch2%%speechname% says: "Beware - the apples in this forest are poisonous!" %ch2% default reply by any other character not listed above: %chdef%%speechname% says: "Sorry. I can't tell you anything about this apple. Looks like a perfectly ordinary apple to me." %chdef% ========= >say to farmer,examine apple The farmer says: "You might need an apple on your quest!" Example usage in "Char_Command_Demo.tab. See Object texts. ========== Predefined Color Equates: Red Colors ========= %RGB_INDIANRED %RGB_LIGHTCORAL %RGB_SALMON %RGB_DARKSALMON %RGB_LIGHTSALMON %RGB_CRIMSON %RGB_RED %RGB_FIREBRICK %RGB_DARKRED Pink Colors ========= %RGB_PINK %RGB_LIGHTPINK %RGB_HOTPINK %RGB_DEEPPINK %RGB_MEDIUMVIOLETRED %RGB_PALEVIOLETRED Orange Colors =========== %RGB_LIGHTSALMON %RGB_CORAL %RGB_TOMATO %RGB_ORANGERED %RGB_DARKORANGE %RGB_ORANGE Yellow Colors ========== %RGB_GOLD %RGB_YELLOW %RGB_LIGHTYELLOW %RGB_LEMONCHIFFON %RGB_LIGHTGOLDENRODYELLOW %RGB_PAPAYAWHIP %RGB_MOCCASIN %RGB_PEACHPUFF %RGB_PALEGOLDENROD %RGB_KHAKI %RGB_DARKKHAKI Purple Colors ========== %RGB_LAVENDER %RGB_THISTLE %RGB_PLUM %RGB_VIOLET %RGB_ORCHID %RGB_MAGENTA %RGB_MEDIUMORCHID %RGB_MEDIUMPURPLE %RGB_BLUEVIOLET %RGB_DARKVIOLET %RGB_DARKORCHID %RGB_DARKMAGENTA %RGB_PURPLE %RGB_INDIGO %RGB_SLATEBLUE %RGB_DARKSLATEBLUE %RGB_MEDIUMSLATEBLUE Green Colors ========== %RGB_GREENYELLOW %RGB_CHARTREUSE %RGB_LAWNGREEN %RGB_LIME %RGB_LIMEGREEN %RGB_PALEGREEN %RGB_LIGHTGREEN %RGB_MEDIUMSPRINGGREEN %RGB_SPRINGGREEN %RGB_MEDIUMSEAGREEN %RGB_SEAGREEN %RGB_FORESTGREEN %RGB_GREEN %RGB_DARKGREEN %RGB_YELLOWGREEN %RGB_OLIVEDRAB %RGB_OLIVE %RGB_DARKOLIVEGREEN %RGB_MEDIUMAQUAMARINE %RGB_DARKSEAGREEN %RGB_LIGHTSEAGREEN %RGB_DARKCYAN %RGB_TEAL Blue Colors ========= %RGB_CYAN %RGB_LIGHTCYAN %RGB_PALETURQUOISE %RGB_AQUAMARINE %RGB_TURQUOISE %RGB_MEDIUMTURQUOISE %RGB_DARKTURQUOISE %RGB_CADETBLUE %RGB_STEELBLUE %RGB_LIGHTSTEELBLUE %RGB_POWDERBLUE %RGB_LIGHTBLUE %RGB_SKYBLUE %RGB_LIGHTSKYBLUE %RGB_DEEPSKYBLUE %RGB_DODGERBLUE %RGB_CORNFLOWERBLUE %RGB_MEDIUMSLATEBLUE %RGB_ROYALBLUE %RGB_BLUE %RGB_MEDIUMBLUE %RGB_DARKBLUE %RGB_NAVY %RGB_MIDNIGHTBLUE Brown Colors ========== %RGB_CORNSILK %RGB_BLANCHEDALMOND %RGB_BISQUE %RGB_NAVAJOWHITE %RGB_WHEAT %RGB_BURLYWOOD %RGB_TAN %RGB_ROSYBROWN %RGB_SANDYBROWN %RGB_GOLDENROD %RGB_DARKGOLDENROD %RGB_PERU %RGB_CHOCOLATE %RGB_SADDLEBROWN %RGB_SIENNA %RGB_BROWN %RGB_MAROON White Colors ========== %RGB_WHITE %RGB_SNOW %RGB_HONEYDEW %RGB_MINTCREAM %RGB_AZURE %RGB_ALICEBLUE %RGB_GHOSTWHITE %RGB_WHITESMOKE %RGB_SEASHELL %RGB_BEIGE %RGB_OLDLACE %RGB_FLORALWHITE %RGB_IVORY %RGB_ANTIQUEWHITE %RGB_LINEN %RGB_LAVENDERBLUSH %RGB_MISTYROSE Gray Colors ========= %RGB_GAINSBORO %RGB_LIGHTGRAY %RGB_SILVER %RGB_DARKGRAY %RGB_GRAY %RGB_DIMGRAY %RGB_LIGHTSLATEGRAY %RGB_SLATEGRAY %RGB_DARKSLATEGRAY %RGB_BLACK Usage eg: [color=%rgb_beige]I am some beige text. [color=%rgb_red]I am printed in red.[/color] I have returned to beige.[/color] I am printed in the default text color! Works with [bcolor] too: [color=%rgb_red][bcolor=%rgb_black]I am red text printed on black background[/color][/color] I am default text color with normal control color background The second [/color] turns off the black background text color and reinstates the previous bcolor (in this case the default) and [ccolor] [ccolor=%rgb_limegreen] Adventure text window is changed to lime green. These enhancements are in addition to the existing way of setting colors within text. ======================== SPECIAL TAB CODING NOTES ======================== TAB version 68 and above supports the use of Vocabulary KEYWORDS of verbs, nouns, prepositions, object nouns or character nouns instead of their respective numbers in RESPONSE, SCRIPT1 or SCRIPT 2 coding entries - providing that there is not more than ONE entry for the same KEYWORD in the particular Vocabulary List. You may prefer to use this OPTIONAL new syntax as it should help to clarify entries greatly! However, if there IS more than one keyword entry for the same type of word then best to use only the default standard numerical syntax for those keywords instead. Below is a list of the particular TAB conditions and actions that can use this facility. ========== CONDITIONS ========== IMPORTANT: use KEYWORDS only for Vocabulary 'words' and Object/Character noun words. For extra clarity Locations can be referred to by their lower case 'BRIEF' description instead of their assigned numerical equivalent. For example: [the lounge] or [!the lounge] if the location has been signified to be 'dark'. v=[get] eg: is verb keyword equal to "get"? v<>[drop] eg: is verb keyword not equal to "drop"? p=[to] eg: is the preposition typed equal to "to"? p<>[around] eg: is the preposition typed not "around"? n1=[wall] eg: is first ORDINARY noun "wall"? n1<>[river] eg: is first ORDINARY noun not "river"? n2=[curtains] eg: is second ORDINARY noun "curtains"? n2<>[floor] eg: is second ORDINARY noun not "floor"? objn1=[gun] eg: is object noun1 "gun"? objn1<>[gun] eg: is object noun1 not the "gun"? objn2=[knife] eg: is object noun2 the "knife"? objn2<>[knife] eg: is object noun2 not the "knife"? charn1=[policeman] eg: is character noun1 "policeman"? charn1<>[vampire] eg: is character noun1 not "vampire"? charn2=[policeman] eg: is character noun2 "policeman"? charn2<>[vampire] eg: is character noun2 not the "vampire" charloc[policeman]=[police station] eg: Is the location of the "policeman" character at the "police station" location? charloc[policeman]<>[police station] eg: Is the location of the "policeman" character NOT the "police station" location? charloc[policeman]>=7 eg: Is the "policeman character at a location greater than or equal to 7? objloc[rope]=room eg: Is the location of object "rope" the current room of PLAYER? objloc[rope]=[forest path] eg: Is the "rope" object at the "forest path" location? objloc[rope]<>[forest path] eg: true if the "rope" object is not in the "forest path" location. objloc[knife]>4 eg: Is the "knife" object at a location number greater than 4? charpresent[policeman] eg: Is the "policeman" character present in the PLAYER'S current room? charabsent[policeman] eg: Is the "policeman" character NOT in the PLAYER's current room? charitemscarr[policeman]=6 eg: Is the "policeman" carrying a total of six objects? charitemscarr[policeman]<>4 eg: Is the "policeman" not carrying a total of 4 objects? charitemsworn[policeman]=2 eg: Is the "policeman" wearing only 2 items? charitemsworn[policeman]<>5 eg: Is the "policeman" not wearing 5 items? charfollowing[policeman] eg: Is the "policeman" character following the PLAYER? weight[rope]=2 eg: Does object "rope" have a weight value of 2? weight[rope]<>2 eg: Is the weight value of object "rope" not equal to 2? weight[rope]>=1 eg: Is the weight value of object "rope" greater than or equal to 1? size[rope]=1 eg: Is the size of object "rope" equal to 1? size[rucksack]>=5 eg: Is the size of object "rucksack" equal to 5 or above? lit[lamp] eg: Is object "lamp" a lightsource? notlit[lamp] eg: Is object "lamp" not a lightsource? opened[box] eg: Is container object "box" open? closed[box] eg: Is container object "box" closed? worn[coat] eg: Is object "coat" being worn by the PLAYER? notworn[coat] eg: Is object "coat" not being worn by the PLAYER? here[rope] eg: Is the "rope" object in the player's current room or being carried or worn by the PLAYER? absent[rope] eg: Is the "rope" not being carried or worn by the PLAYER and is also not in the PLAYER'S current room? container[box] eg: Is object "box" a container object? notcontainer[box] eg: Is the "box" object not a container? carried[rope] eg: Is the "rope" being carried by the PLAYER? notcarr[rope] eg: Is the "rope" not being carried by the PLAYER? static[rope] eg: Is the rope a STATIC object? notstatic[rope] eg: Is the rope a normal dynamic object and not STATIC? wearable[coat] eg: Is the "coat" object a wearable object? notwearable[coat] eg: Is the "coat" unable to be worn? charsameloc[elephant],[vampire] eg: Are the "elephant" and "vampire" characters in the same room? room=[lounge] eg: Is the current room the "lounge"? room<>[the kitchen] eg: Is the current room not "the kitchen"? anyobjscharloc[shopkeeper] eg: Are there any dynamic objects in the "shopkeeper" character's location? anyobjs[lounge] eg: Are there any dynamic objects in the "lounge" location? anyin[library] eg: Are there any dynamic OR static objects in the "library" location? notanyobjs[hallway] eg: Are there no dynamic objects in the "hallway" location? notanyin[forest path] eg: True if there are no dynamic OR static objects in the "forest path" room. anychars[cave] eg: Are any characters present at all in the "cave" location? notanychars[garden] eg: True if no characters are currently in the "garden" location. anystatic[garden] eg: Are there any static type of objects in the "garden" location? notanystatic[cellar] eg: True if no static objects are in the "cellar" location. anywearable[drawing room] eg: Are there any wearable objects in the "drawing room" location? ================= SPEECH CONDITIONS ================== speech=[policeman] eg: Are commands addressed to the character "policeman" speech<>[smith] eg: True if speech commands are not being given to character "smith" ======= ACTIONS ======= IMPORTANT: use KEYWORDS only for Vocabulary 'words' and Object/Character noun words. For extra clarity Locations can be referred to by their lower case 'BRIEF' description instead of their assigned numerical equivalent. For example: [the lounge] or [!the lounge] if the location has been signified to be 'dark'. v=[unscrew] eg: Let verb variable = "unscrew". n1=[wall] eg: Set first ORDINARY noun to be "wall". n2=[bush] eg: Let second ORDINARY noun be equal to number of "bush". p=[to] eg: Set preposition to number of "to". objn1=[matchstick] eg: Set object noun1 number to be that of "matchstick" object. objn2=[carrot] eg: Set object noun2 number to be the "carrot" object. charn1=[policeman] eg: Let the character noun1 variable be the "policeman" character. charn2=[vampire] eg: Let the character noun2 variable match that of the "vampire" character. destroy[rope] eg: Remove the "rope" object from the game. (location 0) create[rope] eg: Put the "rope" object to the PLAYER'S current room. objloc[hat]=room eg: Put object "hat" in PLAYER'S current room. objloc[hat]=[study] eg: Move object "hat" to location "study". createchar[policeman] eg: Place the "policeman" character to PLAYER'S current room. charloc[policeman]=[barn] eg: Move the "policeman" character to the "barn" location. objmess[rope] eg: Print the object 'examine' message associated with the "rope" object. charmess[policeman] eg: Print the character 'examine' message associated with the "policeman" character. weight[rope]=5 eg: Make the weight of the "rope" object equal to 5. charinv[policeman] eg: Show the inventory message for the "policeman" character. charinvplus[policeman] eg: List objects carried and worn by "policeman" in sentence listing fashion. size[rope]=3 eg: Make the size attribute of the "rope" object equal to 3. openobj[box] eg: Open the "box" container to make contents viewable/gettable. closeobj[box] eg: Close the "box" container to make contents not viewable/gettable. swapchars[policeman],[vampire] eg: the positions (rooms) of characters "policeman" and "vampire" are exchanged. swapobjs[rope],[coat] eg: the locations of objects "rope" and "coat" are exchanged. pattchar[vampire]=random pattchar[policeman]=static pattchar[ghost]=follow pattchar[simon]=p,p,p,2,1 eg: change a move pattern of a Character makewearable[coat] eg: Change the status of the "coat" object to be a wearable object. makenotwearable[coat] eg: Make the coat to be not wearable. listobjs[bedroom] eg: List any objects present in the "bedroom" location. listsurface[table] eg: List objects ON the "table" object location (object number + 1000) (See listsurfaceX) all[kitchen] eg: Repeats all actions for each OBJECT N1 only in location "kitchen". Allows creation of custom 'all' type entries eg: [start]kick all#anyobjs[kitchen][acts]all[kitchen]#cmessYou kick the %objn1%.[end] charinvplus[robot] eg: Lists objects carried and worn by Character "robot" in sentence listing fashion eg: Joseph the farmer is carrying a rope, a penknife and a lamp. He is wearing a multicoloured coat. NOTE: the "objlistoff" action must be activated before usage of the 'charinvplusX' action! charinv[wizard] eg: Print character "wizard" carried and worn objects. room=[hilltop] eg: Set current room of PLAYER to be "hilltop" location. goto[outside front door] eg: Move player to "outside front door" and DESCRIBE room. objlocn1=[cliff edge] eg: Move the object noun1 object to the "cliff edge" location. objlocn2=[cliff edge] eg: Move the object noun2 object to the "cliff edge" location. charlocn1=[hut] eg: Put character noun1 to the "hut" location. charlocn2=[sandy beach] eg: Put character noun2 to the "sandy beach" room. moveallobjects[study],[kitchen] eg: move all objects from location "study" to be at location "kitchen". copyobj[knife],[trashcan] eg: The location of object "trashcan" is set to be same location as object "knife". connect[study]=northto[library] eg: Open a north exit from the "study" location leading to the "library" location. doall[study],[library] eg: See note below for more explanatory usage. ============== SPEECH ACTIONS ============== speech=[policeman] eg: Set Speech to equal speech number of "policeman" character to ensure commands are given to "policeman" character. ============ DOALL ACTION ============ Similar to "allX" action. You'll need to customise 2 ordinary messages depending on your use of "doall". The opening message does not have a carriage return; the closing message does and consists of a "." fullstop. For example if you wanted to throw all objects carried into a room : Message40: "You have thrown the " Message41: "." + carriage return Your coding entry might look like this: [start]throw all/throw all on floor#room=[study]#anyobjs501[acts]mess40#doall501,[study]#mess41[end] The printed result, unlike "allX" which LISTS objects will show the object keyword nouns concatenated into one sentence eg: >throw all You have thrown the map, compass, bag and frog. What now? However if you amend the closing message to have some extra text eg: Message41: " on to the floor." + carriage return >throw all You throw the comb, tape player, pillow, painful death tape, novel and twenty dollar bill on to the floor. What now? ================================= DEFAULT DATABASE SYSTEM MESSAGES ================================= System Message 1: You now have the %objn1%. ========== System Message 2: You've dropped the %objn1%. ========== System Message 3: You're now wearing the %objn1%. ========== System Message 4: You've removed the %objn1%. ========== System Message 5: There isn't one of those here. ========== System Message 6: You don't have the %objn1%. ========== System Message 7: You can't wear the %objn1%. ========== System Message 8: You're already wearing the %objn1%. ========== System Message 9: You already have the %objn1%. ========== System Message 10: You're not wearing the %objn1%. ========== System Message 11: owns: ========== System Message 12: You are carrying: ========== System Message 13: (worn) ========== System Message 14: You can't carry any more things. ========== System Message 15: Your score is %score% out of 100. ========== System Message 16: only. ========== System Message 17: You have taken %turns% turn(s). ========== System Message 18: Object Prefixes Table. ========== System Message 19: In the %objn2% is: ========== System Message 20: You can't see a %objn1%. ========== System Message 21: The %objn1% is now in the %objn2%. ========== System Message 22: The %objn1% isn't in the %objn2%. ========== System Message 23: Press [SPACEBAR] To Continue ========== System Message 24: Sure you want to quit? ========== System Message 25: Would you like to play again? ========== System Message 26: Okay. ========== System Message 27: You can't do that. ========== System Message 28: You can't. You're wearing the %objn1%. ========== System Message 29: You don't have one of those. ========== System Message 30: You're not wearing one of those. ========== System Message 31: You can't remove the %objn1%. ========== System Message 32: There isn't one of those in the %objn2%. ========== System Message 33: Your hands are full. ========== System Message 34: There doesn't appear to be anything lying around that you can take. ========== System Message 35: You're not carrying anything! ========== System Message 36: You have nothing to wear. ========== System Message 37: You're not wearing anything! ========== System Message 38: There isn't anything in the %objn2%. ========== System Message 39: You cannot take the %objn1%. ========== System Message 40: Also here you can see: ========== System Message 41: Exits lead: ========== System Message 42: You are unable to go ========== System Message 43: Please enter your instructions.%r%What now?%r%I'm waiting for your commands.%r%OK, now what?%r%Tell me what to do next please.%r%You pause, contemplating your next action...%r%Please tell me your next command. ========== System Message 44: A quicksave file does not exist. ========== System Message 45: You cannot use undo after an undo! ========== System Message 46: Would you like to (Q)uit, (R)estart, (L)oad a save game or (U)ndo? ========== System Message 47: On the %objn1% is: ========== System Message 48: TAB PLAYER CONFIGURATION MESSAGES (Customisable) ============================================== [1]Start Adventure[1] splash graphic intro button [2]Exit game?[2] Window x(close) button confirmer [3]Really exit?[3] Quit from splash screen graphic [4]No position to save yet![4] Cannot save/quicksave if no turns taken [5]Saved game files[5] File requester sub-header [6]Save game position[6] File requester sub-header [7]Load game position[7] File requester sub-header [8]Cannot load file: Does not belong to [8] Not a valid game position [9]File saved by: [9] database name [10] File loading error![10] Loading error [11] does not appear to exist[11] Gfx/music/sample file cannot be found [12]Can't initialise sound device[12] Sound device not accessed [13]Can't play the background music file [13] Unable to play/locate file [14]Can't play the sound sample file [14] Unable to play/locate file [15]Help[15] alert box title [16]Please check game folder for a helpfile[16] alert box message [17]Transcript Text Files[17] File requester header [18]Create a transcript text file[18] Sub-header [19]Transcript recording Is already ON![19] text [20]Transcript recording is now ON.[20] text [21]Transcript recording Is already OFF![21] text [22]Transcript recording is now OFF[22] text [23]No transcript file selected[23] text [24]T.A.B. adventure files[24] File requester header [25]Open an adventure file[25] File requester text [26]Save an adventure file[26] File requester text [27]Please enter your response[27] input box dialog request [28]Request for information[28] Player name dialog title [29]Player Name Request[29] messagebox title [30]First Name[30] textbox label [31]Surname[31] textbox label [32]Player Gender: [32] text [33]I am male.[33] checkbox text [34]I am female.[34] checkbox text [35]Submit Name Details[35] button text [36]Please Enter Your First Name[36] textbox label [37]Please Enter Your Surname[37] textbox label [38]My name is [38] text [39]Are your name details correct?[39] Question text for y/n button [40]>[40] cursor symbol with/without space [41]Please type in your answer...[41] input box text for "ask" action [42]Adventure[42] Menu 1 title [43]Help[43] Menu 2 title [44]Open Adventure Game[44] [45]Restart Current Game[45] [46]Save Game Position[46] [47]Load Game Position[47] [48]Transcript On[48] [49]Transcript Off[49] [50]Exit[50] [51]Help[51] [52]About[52] ========== System Message 49: (Customisable) "THINBASIC ADVENTURE BUILDER" The Interactive Fiction & Text Adventure Maker Author: Catventure 2022 Registered To User: Catventure Credits ------- Testing: Petr Schreiber & Jason Nicholls Help: Eros Olmi & Thinbasic Development Team mciVideo routines: Michael Hartlef http://tab.thinbasic.com ========== System Message 50: The %objn2% weighs too much for you and would exceed your carryable weight limit. ========== System Message 51: You are wearing ========== System Message 52: Arial (default fontname) ========== System Message 53: You're not carrying or wearing anything, and there appears to be nothing obvious lying around to examine. ========== System Message 54: nothing. ========== System Message 55: nothing at all. ========== System Message 56: Sure You Want To Quit? ========== System Message 57: There isn't a %objn2% here. ========== System Message 58: On the %objn2% is: ========== System Message 59: You can't see a %objn2%. ========== System Message 60: Parser command separators in addition to comma and fullstop symbol. [1] and [1] remember [2] and then [2] [3] then [3] word for "undo" [4]undo[4] word for "again" [5]again[5] word for "oops" [6]oops[6] default word for undefined definite object article [7]the[7] default word for undefined indefinite object article [8]the[8] Preposition keyword for "but/except" [9]but[9] Internal keywords for verb "say" and preposition "to" when commanding characters: [10]say[10] [11]to[11] These words must exist in the Vocabulary! Internal word for "it" keyword: [12]it[12] Internal word for "all/everything" keyword: [13]all[13] ========== System Message 61: That's not possible. ========== System Message 62: (conjugation used for sentence listing) and ========== System Message 63: Time passes... ========== System Message 64: The %objn1% weighs too much for you and would exceed your carryable weight limit. ========== System Message 65: You drop that as your hands are full. ========== System Message 66: That was too heavy. You drop it. ========== System Message 67: The %objn1% will not fit in the %objn2%. ========== System Message 68: Game position saved. ========== System Message 69: Press C to Continue... ========== System Message 70: default (Quicksave file ID name) ========== System Message 71: You are unable to look in the %objn2%. ========== System Message 72: You are unable to get the %objn1% out of the %objn2%. ========== System Message 73: You are unable to put the %objn1% into the %objn2%. ========== System Message 74: You are unable to look in the %objn1%. ========== System Message 75: In the %objn1% is: ========== System Message 76: You are unable to take anything out of the %objn2%. ========== System Message 77: You are unable to put anything into the %objn2%. ========== System Message 78: It's too dark. You can't see anything. ========== System Message 79: It's too dark to do that. ========== System Message 80: Turn undone. ========== System Message 81: Tutorial Demo: Dragoria ========== System Message 82: %brief% ========== System Message 83: Score: %score% Turns: %turns% ========== System Message 84: >Whoops! Please type something in. ========== System Message 85: Undo is not available yet until you've entered a normal input command. ========== System Message 86: %speechname% listens to you. ========== System Message 87: Inside the %objn1% is: ========== System Message 88: isn't here! ========== System Message 89: appears.%r% enters.%r% arrives... ========== System Message 90: departs and goes %r% goes %r% leaves and moves %r% sets off, heading %r% travels ========== System Message 91: %speechname% wears the ========== System Message 92: %charname2% was unable to go %directn1%. ========== System Message 93: He is wearing ========== System Message 94: She is wearing ========== System Message 95: It is wearing ========== System Message 96: For concatenated sentence listing actions: [1]You now have the [1] [2]You've dropped the [2] [3]You're wearing the [3] [4]You've removed the [4] ========== System Message 97: You follow ========== System Message 98: follows you.| follow you. ========== System Message 99: Character Prefix Table. ========== System Message 100: Sorry. I didn't understand all of that. Please simplify your command, rephrase or try again. ========== The names of the conditions and actions are subject to change. This list may be expanded due to new additions. Catventure.