Upload files to 'FreeBasic_Data_Compiler'
This commit is contained in:
parent
68a8776e21
commit
73ab63cdaf
|
@ -0,0 +1,27 @@
|
|||
DATA "ACTIONS","I","HERE'S MY VOCABULARY OF ACTIONS:"
|
||||
DATA "BACK","I","SORRY, >I NO LONGER SEEM TO REMEMBER HOW IT WAS YOU GOT HERE."
|
||||
DATA "CLOSE","T","I DON'T KNOW HOW TO OPEN OR CLOSE SUCH A THING."
|
||||
DATA "DROP","T","YOU AREN'T CARRYING IT."
|
||||
DATA "EAST","I","YOU CAN'T GO THAT WAY."
|
||||
DATA "NORTH","I","YOU CAN'T GO THAT WAY."
|
||||
DATA "SOUTH","I","YOU CAN'T GO THAT WAY."
|
||||
DATA "WEST","I","YOU CAN'T GO THAT WAY."
|
||||
DATA "FIGHT","I","THERE'S NOTHING HERE TO FIGHT."
|
||||
DATA "GIVE","T","THERE'S NO ONE HERE."
|
||||
DATA "HELP","I",""
|
||||
DATA "INVENTORY","I","YOU'RE CARRYING:"
|
||||
DATA "JUMP","I","YOU LANDED IN A PIT THEN CRAWLED A LONG WAY."
|
||||
DATA "KICK","I","THERE'S NOTHING HERE TO KICK."
|
||||
DATA "LOOK","I",""
|
||||
rem DATA "","I",""
|
||||
DATA "OPEN","T","IT CAN'T BE OPENED."
|
||||
rem DATA "","I",""
|
||||
DATA "QUIT","I","DO YOU REALLY WANT TO QUIT NOW?"
|
||||
DATA "READ","T","NOTHING IS WRITTEN ON IT."
|
||||
DATA "TAKE","T","YOU CAN'T CARRY ANYTHING MORE. YOU'LL HAVE TO DROP SOMETHING FIRST."
|
||||
DATA "USE","T","IT IS NOT IMMEDIATELY USEFUL."
|
||||
DATA "VERBOSE","I","FULL DESCRIPTIONS ONLY ON FIRST VISIT. SAY `LOOK` FOR FULL DESCRIPTIONS."
|
||||
DATA "XPLORE","I","YOU HAVE CRAWLED AROUND IN SOME LITTLE HOLES..."
|
||||
DATA "YES","I","I COULDN'T AGREE MORE."
|
||||
DATA "ZZZ...","I","THAT WAS REFRESHING. EVEN THE KISSES OF THE DWARVES COULD NOT WAKE YOU."
|
||||
|
Can't render this file because it contains an unexpected character in line 1 and column 6.
|
|
@ -0,0 +1,524 @@
|
|||
#include "CHK_colossal_cave_ROOMS.csv"
|
||||
#include "CHK_colossal_cave_VERBS.csv"
|
||||
#include "CHK_colossal_cave_OBJECTS.csv"
|
||||
#include "CHK_colossal_cave_COMMANDS.csv"
|
||||
#include "CHK_colossal_cave_GENERAL_HELP.csv"
|
||||
|
||||
CONST XCB_DATA_START_MEM as USHORT = &H082B 'the XCB data will start from here!
|
||||
|
||||
declare function findRoomNumber(sStringToSearch as STRING) as UBYTE
|
||||
declare sub encodeFixedString(sLabel as STRING, sFixedStringToEncode as STRING)
|
||||
|
||||
Dim iTotalScore as USHORT 'UBYTE ?
|
||||
|
||||
type tStringArch
|
||||
sArchivedString as STRING
|
||||
uArchivedOffset as USHORT
|
||||
end type
|
||||
|
||||
function encodeString(byVal sStringToEncode as STRING) as USHORT
|
||||
dim iLineCharPos_Start as INTEGER
|
||||
dim iLineCharPos_End as INTEGER
|
||||
dim iCharPosition as INTEGER
|
||||
dim bByteCharacter as UBYTE
|
||||
|
||||
Static aStringArchive(1 To 512) as tStringArch
|
||||
Static iStringArchIndex as INTEGER
|
||||
|
||||
Static iMemoryOffset as USHORT
|
||||
Static iPreviousOffset as USHORT
|
||||
|
||||
Dim L as INTEGER 'all-purpose for-next index
|
||||
|
||||
|
||||
if sStringToEncode = "" then return 0
|
||||
|
||||
if iStringArchIndex then
|
||||
For L = iStringArchIndex To 1 Step -1
|
||||
with aStringArchive(L)
|
||||
if sStringToEncode = .sArchivedString then
|
||||
print .sArchivedString ''''''''''''''''''''debug
|
||||
return .uArchivedOffset
|
||||
end if
|
||||
end with
|
||||
next L
|
||||
else
|
||||
iMemoryOffset = XCB_DATA_START_MEM
|
||||
end if
|
||||
|
||||
iStringArchIndex += 1
|
||||
with aStringArchive(iStringArchIndex)
|
||||
.sArchivedString = sStringToEncode
|
||||
.uArchivedOffset = iMemoryOffset
|
||||
end with
|
||||
|
||||
iPreviousOffset = iMemoryOffset
|
||||
|
||||
if len(sStringToEncode) > 40 then
|
||||
iLineCharPos_Start = 1
|
||||
iLineCharPos_End = 40
|
||||
do
|
||||
iCharPosition = iLineCharPos_Start
|
||||
do
|
||||
iCharPosition = instr(iCharPosition, sStringToEncode, Any "*@>#$|")
|
||||
if iCharPosition > 0 and iCharPosition <= iLineCharPos_End then
|
||||
if mid$(sStringToEncode, iCharPosition, 1) = "|" then
|
||||
iLineCharPos_End = iCharPosition
|
||||
exit do
|
||||
else
|
||||
iLineCharPos_End += 1
|
||||
iCharPosition += 1
|
||||
end if
|
||||
else
|
||||
exit do
|
||||
end if
|
||||
loop
|
||||
|
||||
if iLineCharPos_End < len(sStringToEncode) then
|
||||
|
||||
if (mid$(sStringToEncode, iLineCharPos_End + 1, 1) = " ") OR _
|
||||
(mid$(sStringToEncode, iLineCharPos_End + 1, 1) = "|") then 'if the next 40-char line starts with a space or forced CR...
|
||||
iLineCharPos_End += 1
|
||||
mid$(sStringToEncode, iLineCharPos_End, 1) = chr$(10) 'this space/CR will get eliminated during the encoding
|
||||
elseif mid$(sStringToEncode, iLineCharPos_End, 1) = "|" then 'if there's a forced Carriage Return here...
|
||||
mid$(sStringToEncode, iLineCharPos_End, 1) = chr$(13)
|
||||
else
|
||||
iLineCharPos_End = InStrRev(sStringToEncode, " ", iLineCharPos_End)
|
||||
mid$(sStringToEncode, iLineCharPos_End, 1) = chr$(13)
|
||||
end if
|
||||
|
||||
end if
|
||||
|
||||
iLineCharPos_Start = iLineCharPos_End + 1
|
||||
iLineCharPos_End +=40 '39 + 1 to skip the space!
|
||||
loop until iLineCharPos_End > len(sStringToEncode)
|
||||
end if
|
||||
|
||||
if right$(sStringToEncode, 1) = "." then
|
||||
bByteCharacter = asc(right$(sStringToEncode, 2))
|
||||
if (bByteCharacter AND &B01000000) AND (bByteCharacter <> 96) then ' if the next-to-last character is a letter and NOT a back-quote...
|
||||
sStringToEncode = left$(sStringToEncode, len(sStringToEncode) - 1)
|
||||
end if
|
||||
end if
|
||||
|
||||
print #1, "DATA AS BYTE";
|
||||
|
||||
for L = 1 to len(sStringToEncode)
|
||||
bByteCharacter = asc(sStringToEncode, L)
|
||||
select case bByteCharacter
|
||||
case 10 'skip "Line Feeds" (actually removed spaces from above)
|
||||
Continue For
|
||||
case 96 '"fake" quotes become _real_ quotes
|
||||
bByteCharacter = 34
|
||||
end select
|
||||
bByteCharacter -= 32 '"encodes" the character
|
||||
if L < len(sStringToEncode) then
|
||||
select case asc(sStringToEncode, L + 1)
|
||||
case 32
|
||||
if L < (len(sStringToEncode) - 1) then
|
||||
bByteCharacter OR= &B01000000 'bits 7-6 = 01 -> indicates SPACE
|
||||
L += 1 'skip next space
|
||||
end if
|
||||
case 13
|
||||
bByteCharacter OR= &B10000000 'bits 7-6 = 10 -> indicates CARRIAGE RETURN
|
||||
if L < (len(sStringToEncode) - 1) then L += 1 'skip next CR
|
||||
end select
|
||||
else
|
||||
bByteCharacter OR= &B11000000 'bits 7-6 = 11 -> indicates END OF STRING
|
||||
end if
|
||||
|
||||
print #1, " $" ; hex(bByteCharacter, 2) ; iif(L < len (sStringToEncode), ",", "") ;
|
||||
iMemoryOffset += 1
|
||||
next L
|
||||
|
||||
print #1, ""
|
||||
encodeString = iPreviousOffset
|
||||
end function
|
||||
|
||||
type tRooms
|
||||
sName as STRING
|
||||
'Not interested in the short name, on the XCB side - I'll use the first letter though, for the blocked rooms on the Map
|
||||
|
||||
sDirections as STRING
|
||||
bDirections as UBYTE
|
||||
wpBlockingReason as USHORT
|
||||
|
||||
sDescription as STRING
|
||||
wpDescription as USHORT
|
||||
|
||||
bAlreadySolved as BOOLEAN
|
||||
end type
|
||||
Const ROOM_INITIAL_COUNT as INTEGER = 83
|
||||
Dim SHARED iRooms_number as INTEGER : iRooms_number = ROOM_INITIAL_COUNT
|
||||
Dim SHARED aRooms(1 to 128) as tRooms
|
||||
|
||||
for nRoom as INTEGER = 1 to ROOM_INITIAL_COUNT
|
||||
with aRooms(nRoom)
|
||||
read .sName, .sDirections, .sDescription
|
||||
end with
|
||||
next nRoom
|
||||
|
||||
type tVerbs
|
||||
sName as STRING
|
||||
wpName as USHORT
|
||||
|
||||
sTransitive as STRING
|
||||
'No equivalent in XCB for sTransitive, I'll use the highest bit of wpName for that!
|
||||
|
||||
sDefaultMessage as STRING
|
||||
wpDefaultMessage as USHORT
|
||||
|
||||
bCommandStartIndex as UBYTE
|
||||
end Type
|
||||
Dim aVerbs(1 to 26) as tVerbs
|
||||
|
||||
dim nArrayPos as INTEGER
|
||||
dim sTempString as STRING
|
||||
do
|
||||
read sTempString
|
||||
nArrayPos = asc(sTempString) - 64
|
||||
with aVerbs(nArrayPos)
|
||||
.sName = sTempString
|
||||
read .sTransitive, .sDefaultMessage
|
||||
.bCommandStartIndex = 255 'initialised to "-1"
|
||||
end with
|
||||
loop until left$(sTempString, 1) = "Z"
|
||||
|
||||
type tObjects
|
||||
sName as STRING
|
||||
wpName as USHORT
|
||||
|
||||
sKind as STRING
|
||||
bObjectFlags as UBYTE
|
||||
|
||||
sDescription as STRING
|
||||
wpDescription as USHORT
|
||||
end Type
|
||||
Dim aObjects(1 to 26) as tObjects
|
||||
|
||||
do
|
||||
read sTempString
|
||||
nArrayPos = asc(sTempString) - 64
|
||||
with aObjects(nArrayPos)
|
||||
.sName = sTempString
|
||||
read .sKind, .sDescription
|
||||
'SCORE************************************************************************************
|
||||
if .sKind = "$" then
|
||||
iTotalScore += 5
|
||||
end if
|
||||
end with
|
||||
loop until left$(sTempString, 1) = "Z"
|
||||
|
||||
type tCommands
|
||||
sAction as STRING
|
||||
bActionNumber as UBYTE
|
||||
|
||||
sObject as STRING
|
||||
bObjectNumber as UBYTE
|
||||
|
||||
sLocation as STRING
|
||||
bLocationNumber as UBYTE
|
||||
|
||||
sTransformedObject as STRING
|
||||
bNewObjectLocationNumber as UBYTE
|
||||
wpNewObjectDescription as USHORT
|
||||
|
||||
sTransformedLocation as STRING
|
||||
bNewLocationNumber as UBYTE
|
||||
wpNewLocationDescription as USHORT
|
||||
|
||||
sMessage as STRING
|
||||
wpMessage as USHORT
|
||||
bNewDirections as UBYTE
|
||||
end type
|
||||
Dim iCommands_Number as INTEGER
|
||||
Dim aCommands(1 to 128) as tCommands
|
||||
|
||||
do
|
||||
iCommands_Number += 1
|
||||
with aCommands(iCommands_Number)
|
||||
read .sAction, .sObject, .sLocation, .sTransformedObject, .sTransformedLocation, .sMessage
|
||||
end with
|
||||
loop until aCommands(iCommands_Number).sAction = "WEST" AND aCommands(iCommands_Number).sLocation = "DED"
|
||||
|
||||
Dim iHelpStringsNum as INTEGER
|
||||
Dim aHelpStrings(1 to 4) as tStringArch 're-using this type for the general Help strings
|
||||
|
||||
do
|
||||
iHelpStringsNum += 1
|
||||
read aHelpStrings(iHelpStringsNum).sArchivedString
|
||||
loop until instr(aHelpStrings(iHelpStringsNum).sArchivedString, "FINE")
|
||||
|
||||
'-------------------------------------S-T-R-I-N-G-S-----------------------------------------------------------------------
|
||||
Dim K as INTEGER
|
||||
Dim iFullStopPos as INTEGER
|
||||
|
||||
open "..\data_strings.bas" for output as #1
|
||||
|
||||
print #1, "'***********VERBS***********"
|
||||
for K = 1 to 26
|
||||
with aVerbs(K)
|
||||
if .sName <> "" then
|
||||
print #1, "' """ ; .sName ; """, """ ; .sTransitive ; """, """ ; .sDefaultMessage ; """"
|
||||
|
||||
.wpName = encodeString(.sName)
|
||||
if .sTransitive = "T" then .wpName OR= &B1000000000000000
|
||||
|
||||
.wpDefaultMessage = encodeString(.sDefaultMessage)
|
||||
end if
|
||||
end with
|
||||
next K
|
||||
print #1, ""
|
||||
|
||||
print #1, "'***********OBJECTS***********"
|
||||
for K = 1 to 26
|
||||
with aObjects(K)
|
||||
if .sName <> "" then
|
||||
print #1, "' """ ; .sName ; """, """ ; .sKind ; """, """ ; .sDescription ; """"
|
||||
|
||||
.wpName = encodeString(.sName)
|
||||
.bObjectFlags = asc(.sKind)
|
||||
.wpDescription = encodeString(.sDescription)
|
||||
|
||||
end if
|
||||
end with
|
||||
next K
|
||||
print #1, ""
|
||||
|
||||
print #1, "'***********ROOMS***********"
|
||||
for K = 1 to iRooms_number
|
||||
with aRooms(K)
|
||||
print #1, "' """ ;.sName ; """, """ ; .sDirections ; """, """ ; .sDescription ; """"
|
||||
|
||||
sTempString = .sDescription
|
||||
if instr(sTempString, "*") = 0 and len(.sDirections) <= 4 then 'always full descriptions in blocked rooms
|
||||
iFullStopPos = instr(sTempString, ".")
|
||||
if iFullStopPos < len(sTempString) then
|
||||
sTempString = left$(sTempString, iFullStopPos - 1) & "*" & mid$(sTempString, iFullStopPos)
|
||||
end if
|
||||
end if
|
||||
.wpDescription = encodeString(sTempString)
|
||||
|
||||
if len(.sDirections) > 4 then
|
||||
.wpBlockingReason = encodeString(.sDirections)
|
||||
.bDirections = 128 '%10000000 - BLOCKED with no open directions
|
||||
else
|
||||
.wpBlockingReason = 0
|
||||
.bDirections = IIf(instr(.sDirections, "N"), 8, 0)
|
||||
.bDirections OR= IIf(instr(.sDirections, "E"), 4, 0)
|
||||
.bDirections OR= IIf(instr(.sDirections, "S"), 2, 0)
|
||||
.bDirections OR= IIf(instr(.sDirections, "W"), 1, 0)
|
||||
end if
|
||||
|
||||
end with
|
||||
|
||||
next K
|
||||
print #1, ""
|
||||
|
||||
print #1, "'***********COMMANDS***********"
|
||||
for K = 1 to iCommands_Number
|
||||
with aCommands(K)
|
||||
print #1, "' """ ; .sAction ; """, ";
|
||||
print #1, """" ; .sObject ; """, ";
|
||||
print #1, """" ; .sLocation ; """, ";
|
||||
print #1, """" ; .sTransformedObject ; """, ";
|
||||
print #1, """" ; .sTransformedLocation ; """, ";
|
||||
print #1, """" ; .sMessage ; """"
|
||||
|
||||
.bActionNumber = asc(.sAction)
|
||||
.bObjectNumber = asc(.sObject)
|
||||
.bLocationNumber = findRoomNumber(.sLocation)
|
||||
|
||||
if aVerbs(.bActionNumber - 64).bCommandStartIndex = 255 then
|
||||
aVerbs(.bActionNumber - 64).bCommandStartIndex = K - 1
|
||||
end if
|
||||
|
||||
sTempString = .sTransformedObject
|
||||
if sTempString <> "" then
|
||||
select case left$(sTempString, 3)
|
||||
case "DRO"
|
||||
.bNewObjectLocationNumber = 252
|
||||
sTempString = ""
|
||||
case "TAK"
|
||||
.bNewObjectLocationNumber = 0 'previously 253
|
||||
sTempString = ""
|
||||
case "RMV"
|
||||
.bNewObjectLocationNumber = 254
|
||||
sTempString = ""
|
||||
case "RND"
|
||||
.bNewObjectLocationNumber = 255
|
||||
sTempString = mid$(sTempString, 6)
|
||||
case else
|
||||
if mid$(sTempString, 4, 1) = ":" then
|
||||
.bNewObjectLocationNumber = findRoomNumber(left$(sTempString, 3))
|
||||
sTempString = mid$(sTempString, 6)
|
||||
end if
|
||||
end select
|
||||
end if
|
||||
if sTempString <> "" then .wpNewObjectDescription = encodeString(sTempString)
|
||||
|
||||
if .sTransformedLocation <> "" then
|
||||
.bNewLocationNumber = findRoomNumber(left$(.sTransformedLocation, 3))
|
||||
if .bNewLocationNumber <> 254 then 'if the new room is not "WIN"...
|
||||
sTempString = mid$(.sTransformedLocation, 6)
|
||||
if instr(sTempString, "*") = 0 then
|
||||
iFullStopPos = instr(sTempString, ".")
|
||||
if iFullStopPos < len(sTempString) then
|
||||
sTempString = left$(sTempString, iFullStopPos - 1) & "*" & mid$(sTempString, iFullStopPos)
|
||||
end if
|
||||
end if
|
||||
.wpNewLocationDescription = encodeString(sTempString)
|
||||
.bNewDirections = IIf(instr(.sTransformedLocation, "NORTH"), 8, 0)
|
||||
.bNewDirections OR= IIf(instr(.sTransformedLocation, "EAST"), 4, 0)
|
||||
.bNewDirections OR= IIf(instr(.sTransformedLocation, "SOUTH"), 2, 0)
|
||||
.bNewDirections OR= IIf(instr(.sTransformedLocation, "WEST"), 1, 0)
|
||||
if .bNewDirections = 0 then .bNewDirections = 15 'set to all directions...
|
||||
end if
|
||||
|
||||
'SCORE************************************************************************************
|
||||
if aRooms(.bLocationNumber).bAlreadySolved = False then
|
||||
aRooms(.bLocationNumber).bAlreadySolved = True
|
||||
iTotalScore += 5
|
||||
'if the Object specified in the Command is a Treasure, *OR* the Object KIND specified is "Treasure"...
|
||||
if iif(asc(.sObject) > 64, aObjects(asc(.sObject) - 64).sKind = "$", .sObject = "$") then
|
||||
if .bNewObjectLocationNumber = 254 then 'if the Object used to solve gets "RMV"d after...
|
||||
iTotalScore -= 5
|
||||
end if
|
||||
end if
|
||||
end if
|
||||
|
||||
|
||||
end if
|
||||
|
||||
.wpMessage = encodeString(.sMessage)
|
||||
|
||||
end with
|
||||
next K
|
||||
print #1, ""
|
||||
|
||||
print #1, "'***********GENERAL HELP***********"
|
||||
for K = 1 to iHelpStringsNum
|
||||
with aHelpStrings(K)
|
||||
.uArchivedOffset = encodeString(.sArchivedString)
|
||||
end with
|
||||
next K
|
||||
|
||||
close #1
|
||||
|
||||
'--------------------------------------D A T A---D-A-T-A---D-A-T-A------------------------------------------------------
|
||||
open "..\data_verbs.bas" for output as #1
|
||||
For K = 1 to 26
|
||||
with aVerbs(K)
|
||||
print #1, "' """ ; .sName ; """, """ ; .sTransitive ; """, """ ; .sDefaultMessage ; """"
|
||||
print #1, "DATA AS WORD $" ; hex(.wpName, 4) ; ", $" ; hex(.wpDefaultMessage, 4)
|
||||
print #1, "DATA AS BYTE $" ; hex(.bCommandStartIndex, 2)
|
||||
end with
|
||||
next K
|
||||
close #1
|
||||
|
||||
open "..\data_objects.bas" for output as #1
|
||||
For K = 1 to 26
|
||||
with aObjects(K)
|
||||
print #1, "' """ ; .sName ; """, """ ; .sKind ; """, """ ; .sDescription ; """"
|
||||
print #1, "DATA AS WORD $" ; hex(.wpName, 4)
|
||||
print #1, "DATA AS BYTE $" ; hex(.bObjectFlags, 2)
|
||||
print #1, "DATA AS WORD $" ; hex(.wpDescription, 4)
|
||||
end with
|
||||
next K
|
||||
close #1
|
||||
|
||||
open "..\data_rooms.bas" for output as #1
|
||||
For K = 1 to ROOM_INITIAL_COUNT 'only the "starting" rooms!
|
||||
with aRooms(K)
|
||||
print #1, "' """ ; .sName ; """, """ ; .sDirections ; """, """ ; .sDescription ; """"
|
||||
print #1, "DATA AS BYTE $" ; hex(asc(.sName) + 128, 2) ; ", $" ; hex(.bDirections, 2)
|
||||
print #1, "DATA AS WORD $" ; hex(.wpBlockingReason, 4) ; ", $" ; hex(.wpDescription, 4)
|
||||
end with
|
||||
next K
|
||||
close #1
|
||||
|
||||
open "..\data_commands.bas" for output as #1
|
||||
For K = 1 to iCommands_Number
|
||||
with aCommands(K)
|
||||
print #1, "' """ ; .sAction ; """, ";
|
||||
print #1, """" ; .sObject ; """, ";
|
||||
print #1, """" ; .sLocation ; """, ";
|
||||
print #1, """" ; .sTransformedObject ; """, ";
|
||||
print #1, """" ; .sTransformedLocation ; """, ";
|
||||
print #1, """" ; .sMessage ; """"
|
||||
|
||||
print #1, "DATA AS BYTE $" ; hex(.bActionNumber, 2) ; ", $" ; hex(.bObjectNumber, 2) ; ", $" ; hex(.bLocationNumber, 2)
|
||||
print #1, "DATA AS BYTE $" ; hex(.bNewObjectLocationNumber, 2)
|
||||
print #1, "DATA AS WORD $" ; hex(.wpNewObjectDescription, 4)
|
||||
print #1, "DATA AS BYTE $" ; hex(.bNewLocationNumber, 2)
|
||||
print #1, "DATA AS WORD $" ; hex(.wpNewLocationDescription, 4)
|
||||
print #1, "DATA AS WORD $" ; hex(.wpMessage, 4)
|
||||
print #1, "DATA AS BYTE $" ; hex(.bNewDirections, 2)
|
||||
end with
|
||||
next K
|
||||
close #1
|
||||
|
||||
open "..\data_general_help.bas" for output as #1
|
||||
For K = 1 to iHelpStringsNum
|
||||
with aHelpStrings(K)
|
||||
print #1, "' """ ; .sArchivedString ; """"
|
||||
print #1, "DATA AS WORD $" ; hex(.uArchivedOffset, 4)
|
||||
end with
|
||||
next K
|
||||
close #1
|
||||
|
||||
open "..\fixed_strings.bas" for output as #1
|
||||
encodeFixedString("gamename", "ADVENT 101")
|
||||
encodeFixedString("credits", "- >ORIGINAL DEVELOPMENT BY #>WILL #>CROWTHER, 1976|- >GREATLY EXPANDED BY #>DON #>WOODS, 1977|" & _
|
||||
"- >STREAMLINED WITH RANDOM MAPS AND NEW PUZZLES BY #>JEFFREY #>HENNING, 2017|::TROYPRESS.COM|" & _
|
||||
"- >PORTED TO >C64 >X>C=>B>A>S>I>C 3, BUG-FIXED AND FURTHER TOUCHES BY #>J>J>FLASH, 2023|::JJFLASH.ITCH.IO|" & _
|
||||
"- >X>C=>B>A>S>I>C 3 BY #>CSABA #>FEKETE, 2022-2023|::XC-BASIC.NET|" & _
|
||||
"- >THANKS TO #>DIDUZ : DIDUZ.ITCH.IO")
|
||||
encodeFixedString("start_game", "SAY `HELP` FOR GENERAL & SPECIFIC HINTS. PRESS A KEY TO START YOUR CAVING ADVENTURE!")
|
||||
encodeFixedString("i_see_no", "I SEE NO ")
|
||||
encodeFixedString("here", " HERE.")
|
||||
encodeFixedString("it_is_now_closed", "IT IS NOW CLOSED.")
|
||||
encodeFixedString("it_was_already_closed", "IT WAS ALREADY CLOSED.")
|
||||
encodeFixedString("dropped", "DROPPED.")
|
||||
encodeFixedString("you_give_the", "YOU GIVE THE ")
|
||||
encodeFixedString("to_the", " TO THE ")
|
||||
encodeFixedString("headlamp", "LAMP")
|
||||
encodeFixedString("as_you_jumped_you_dropped_the", "AS YOU JUMPED, UNFORTUNATELY YOU DROPPED THE ")
|
||||
encodeFixedString("it_is_now_opened", "IT IS NOW OPENED.")
|
||||
encodeFixedString("it_was_already_opened", "IT WAS ALREADY OPENED.")
|
||||
encodeFixedString("youre_already_carrying_it", "YOU'RE ALREADY CARRYING IT.")
|
||||
encodeFixedString("taken", "TAKEN.")
|
||||
encodeFixedString("treasure_taken", "$TAKEN!")
|
||||
encodeFixedString("always_full_descriptions_on", "ALWAYS FULL DESCRIPTIONS FROM NOW ON.")
|
||||
encodeFixedString("that_was_a_rhetorical_question", "THAT WAS A RHETORICAL QUESTION.")
|
||||
encodeFixedString("your_score", "YOU SCORED A TOTAL OF ")
|
||||
encodeFixedString("maximum_score", " POINTS, OUT|OF A POSSIBLE MAXIMUM OF " & str$(iTotalScore) & " POINTS.")
|
||||
encodeFixedString("you_win", "YOU WIN!!")
|
||||
encodeFixedString("conquered", "YOU'VE SOLVED IT ALL!|HAIL THE CONQUERING ADVENTURER!")
|
||||
encodeFixedString("try_again", "PRESS ANY KEY TO TRY AGAIN.")
|
||||
close #1
|
||||
|
||||
print
|
||||
print "done!"
|
||||
print " Commands: " ; iCommands_Number
|
||||
print " Help lines: " ; iHelpStringsNum
|
||||
print
|
||||
print " Total SCORE: " ; iTotalScore
|
||||
sleep
|
||||
|
||||
function findRoomNumber(sStringToSearch as STRING) as UBYTE
|
||||
if sStringToSearch = " " then return 0
|
||||
if sStringToSearch = "WIN" then return 254
|
||||
For S as UBYTE = 1 to iRooms_number
|
||||
if aRooms(S).sName = sStringToSearch then return (S - 1)
|
||||
next S
|
||||
iRooms_number += 1
|
||||
aRooms(iRooms_number).sName = sStringToSearch
|
||||
findRoomNumber = (iRooms_number - 1)
|
||||
end function
|
||||
|
||||
sub encodeFixedString(sLabel as STRING, sFixedStringToEncode as STRING)
|
||||
print #1, "' """ ; sFixedStringToEncode ; """"
|
||||
print #1, "fixed_str_" ; sLabel ; ":"
|
||||
encodeString (sFixedStringToEncode)
|
||||
end sub
|
Loading…
Reference in New Issue