[edit]
has anyone played mine the whole way through?
i'd really like to know what you think,
and in fairly honest but constructive terms,
because
i do plan to continue the story (in 3 further installments)
too easy/hard, too many/few commands, not enough depth,
not enough detail, whatever you can think of...
thanks.
here's a slightly better version of it:
Rem Project: Dark Basic Pro Project
Rem Created: Thursday, November 04, 2010
Rem Alien Abduction
Rem Part One
Rem The Awakeing
Rem text adventure for dbpro coding challenges.
Rem Bob Saunders (IBOL)
Rem ***** Main Source File *****
Rem ***** SETTINGS *****
set display mode 1024,768,32
set window on
set window position 50,50
set text font "lucida console"
set text size 18
SYNC OFF
HIDE MOUSE
Rem ***** TYPES *****
TYPE ROOMS
n as string
d1 as string
d2 as string
n1
e2
s3
w4
known
ENDTYPE
TYPE PROPS
IN
n as string
desc as string
ENDTYPE
` props are the things in a room that you can specifically examine.
` they can not be picked up or interacted with otherwise. FLAVOR.
TYPE OBJECTS
IN
n as string
desc as string
exa_desc as string
getable
ReadAble
contains
OPEN
vis
EVENT
ENDTYPE
` objects are containers, keys, guns, clothes, etc.
` if open=0, you must open it. then anything inside comes out.
` if open=1, 'you don't need to open that'
` vis = whether this can actually be SEEN, whether on the floor, or IN INVENTORY.
` ReadAble - a READ-ABLE object gives up it's .contains by READing it.
` perhaps a value of 99 in GETABLE will AUTOMATICALLY add it to your inventory.
TYPE PEOPLE
n as string
desc as string
IN
text_line
says1 as string
says2 as string
says3 as string
wants
gives
can_kill
kill_with
kill_words as string
drops
On_Dead_Becomes
ENDTYPE
` speech is LINEAR, up to 3 lines, never repeated except their last line.
` text_line says which line they're currently on. talk again to advance.
TYPE TRAPS
IN
need
Kill_words as string
Survive_Words as string
ENDTYPE
` TRAPS are lethal things in a room that kill you upon entering
` unless you have the proper item.
TYPE MONSTERS
IN
n as string
desc as string
Kill_Count
kill_words as string
blocks
need
you_kill_it_words as string
drops
ENDTYPE
` for BLOCKS : (1=n,2=e,3=s,4=w)
TYPE DOORS
IN
n as string
desc as string
needs
blocks
ENDTYPE
Rem ***** DIMS *****
dim rm(25) as rooms
dim prop(25) as props
dim mon(3) as monsters
dim obj(12) as objects
dim ppl(3) as people
dim trap(3) as traps
dim door(3) as doors
Rem ***** GLOBALS *****
GLOBAL IN
GLOBAL NumRooms
GLOBAL NumObjects
GLOBAL NumPeople
GLOBAL NumMonsters
GLOBAL NumTraps
GLOBAL NumProps
GLOBAL NumDoors
Global Verb$ as string
Global Noun$ as string
Global DEAD
Global MOVES
Global nor
Global sou
Global eas
Global wes
START_HERE:
Rem ***** DECLARE VARIABLES *****
IN=7
NumRooms=23
NumObjects=11
NumPeople=3
NumMonsters=2
NumTraps=1
NumProps=14
NumDoors=3
DEAD=0
MOVES=0
` initialize
Load_New_Game_Data()
` -----------------------------------------------------
Rem ***** MAIN LOOP *****
Title_Screen()
Tell_Opening_Story()
Where_Am_I()
DO
AUTO_PICK_UP()
IF DEAD
You_Are_Dead()
ENDIF
INC MOVES
IF IN=9 OR IN=22
YOU_WIN()
ENDIF
if Was_In=IN
Check_For_Timed_Deaths()
endif
Was_In=IN
Get_Action()
Valid=Process_Action()
IF VALID
ELSE
Print
Print "Huh?"
inc Invalid
if invalid>3
Show_Commands()
invalid=0
endif
ENDIF
print
LOOP
` -----------------------------------------------------
Rem ***** FUNCTIONS *****
Function AUTO_PICK_UP()
for t=1 to numobjects
if obj(t).IN=IN
if obj(t).getable=99
obj(t).IN=999
endif
endif
next t
Endfunction
Function Where_Am_I()
` first, describe the room.
set text size 24
set text to bold
a$="----"
for t=1 to len(rm(IN).n)
a$=a$+"-"
next t
print
print a$
print "- "+rm(IN).n+" -"
print a$
print
set text size 18
set text to normal
Textit(rm(IN).d1)
Textit(rm(IN).d2)
print
` now show all the various kinds of things that could be here:
Determine_Blocked_Exits()
set text to bold
` EXITS:
if rm(IN).n1
a$="=> You may go NORTH"
if rm(RM(IN).n1).known
a$=a$+" to "+rm(RM(IN).n1).n
endif
if nor=0
a$=a$+" BUT THE WAY IS BLOCKED"
endif
Print a$
endif
if rm(IN).e2
a$="=> You may go EAST"
if rm(RM(IN).e2).known
a$=a$+" to "+rm(RM(IN).e2).n
endif
if eas=0
a$=a$+" BUT THE WAY IS BLOCKED"
endif
Print a$
endif
if rm(IN).s3
a$="=> You may go SOUTH"
if rm(RM(IN).s3).known
a$=a$+" to "+rm(RM(IN).s3).n
endif
if sou=0
a$=a$+" BUT THE WAY IS BLOCKED"
endif
Print a$
endif
if rm(IN).w4
a$="=> You may go WEST"
if rm(RM(IN).w4).known
a$=a$+" to "+rm(RM(IN).w4).n
endif
if wes=0
a$=a$+" BUT THE WAY IS BLOCKED"
endif
Print a$
endif
set text to normal
print
for t=1 to NumObjects
if obj(t).IN=IN
print " You see a ";obj(t).n
print
endif
next t
for t=1 to NumPeople
if ppl(t).IN=IN
print " ";ppl(t).n;" is here"
print
endif
next t
for t=1 to NumMonsters
if mon(t).IN=IN
print " ";mon(t).n;" is here"
print
endif
next t
for t=1 to NumDoors
if door(t).IN=IN
a$="North"
if door(t).blocks=2
a$="East"
else
if door(t).blocks=3
a$="South"
else
if door(t).blocks=4
a$="West"
endif
endif
endif
print " The way ";a$;" is blocked by ";door(t).n
endif
next t
` perhaps PROPS are just taken directly from the descriptive text,
` and are only mentioned if you EXAMINE them.
for t=1 to numTraps
if trap(t).IN=IN
print
a$="***********"
a$=a$+a$+A$+A$
` it might be possible to simply use a NEGATIVE VALUE to specify a trap
` that kills you ONLY IF YOU HAVE A PARTICULAR OBJECT
` (like the eye-gunk)
IF TRAP(T).NEED>0
` this is the standard case, where having the .NEED will SAVE YOU.
if obj(trap(t).need).IN=999
print a$
textit(trap(t).survive_words)
print a$
print
else
print a$
textit(trap(t).kill_words)
print a$
print
DEAD=1
endif
ELSE
` THIS IS THE CASE WHERE THE VALUE IS -*NEGATIVE*-
` signifying that if you HAVE the object, it will kill you.
A=abs(trap(t).need)
if obj(A).IN=999
print a$
textit(trap(t).kill_words)
print a$
print
else
print a$
textit(trap(t).survive_words)
print a$
print
DEAD=1
endif
ENDIF
trap(t).IN=0
endif
next t
Endfunction
Function get_action()
input " >>> ";a$
` ALL OF THIS DISSECTS VERB/NOUN PAIRS:
a$=upper$(a$)
` get rid of SPACES at the beginning of the VERB$
while left$(a$,1)=" "
a$=right$(a$,(len(a$)-1))
endwhile
verb$=a$
for t=1 to len(a$)
if mid$(a$,t)=" "
verb$=left$(a$,t-1)
EXIT
endif
next t
noun$=""
for t=2 to len(a$)
if mid$(a$,t)=" "
noun$=right$(a$,len(a$)-t)
EXIT
endif
next t
` get rid of SPACES at the beginning of the NOUN$
while left$(noun$,1)=" "
noun$=right$(noun$,(len(noun$)-1))
endwhile
` print " , VERB=";verb$;" , NOUN=";noun$
Endfunction
Function Process_Action()
Valid=0
if verb$<>"" AND verb$<>" "
` RIGHT HERE IS WHERE ALL ACTIONS TAKE PLACE:
` 6 letters is enough for any word.
if len(verb$)>6
verb$=left$(verb$,6)
endif
SELECT verb$
case "N","NOR","NORTH"
Valid=1
if rm(IN).n1>0 AND nor=1
IN=rm(IN).n1
rm(IN).known=1
Where_Am_I()
else
Print : Print "YOU CAN'T GO THAT WAY!" : print
endif
endcase
case "E","EAS","EAST"
Valid=1
if rm(IN).e2>0 AND eas=1
IN=rm(IN).e2
rm(IN).known=1
Where_Am_I()
else
Print : Print "YOU CAN'T GO THAT WAY!" : print
endif
endcase
case "S","SOU","SOUTH"
Valid=1
if rm(IN).s3>0 AND sou=1
IN=rm(IN).s3
rm(IN).known=1
Where_Am_I()
else
Print : Print "YOU CAN'T GO THAT WAY!" : print
endif
endcase
case "W","WES","WEST"
Valid=1
if rm(IN).w4>0 AND wes=1
IN=rm(IN).w4
rm(IN).known=1
Where_Am_I()
else
Print : Print "YOU CAN'T GO THAT WAY!" : print
endif
endcase
case "G","GET","TAK","TAKE","PIC","PICK"
` right now "GET" does NOT require a NOUN. it picks up everything that is pick-up-able.
VALID=1
for t=1 to numobjects
if obj(t).IN=IN
if obj(t).getable>0
print
print " You pick up the '";obj(t).n+"'"
obj(t).IN=999
endif
endif
next t
endcase
case "C","COM","COMMAN","H","HEL","HELP"
VALID=1
Show_Commands()
endcase
case "CLS","CLR","CLEAR"
VALID=1
cls
endcase
case "I","INV","INVENT","STO","STOCK"
VALID=1
Print
Print " You Have :"
for t=1 to numobjects
if obj(t).IN=999
` 999 is the code for being IN your INVENTORY
print " - "+obj(t).n
endif
next t
endcase
case "K","KIL","KILL","SHO","SHOOT","HIT","KIC","KICK","PUN","PUNCH"
` this also currently does NOT require a NOUN.
VALID=1
a$="There is nothing here to kill"
b$=""
for t=1 to NumMonsters
if mon(t).IN=IN
if mon(t).need=0 or obj(mon(t).need).IN=999
a$=mon(t).You_Kill_it_words
if mon(t).drops>0
obj(mon(t).drops).IN=IN
endif
mon(t).IN=0
else
a$=mon(t).kill_words
DEAD=1
endif
endif
next t
for t=1 to NumPeople
if ppl(t).IN=IN
if ppl(t).can_kill=1
if ppl(t).kill_with=0 or obj(ppl(t).kill_with).IN=999
a$=ppl(t).kill_words
if ppl(t).DROPS>0
` this person drops an OBJECT here.
obj(ppl(t).DROPS).IN=IN
b$ = "'"+ppl(t).n+"' Drops '"+obj(ppl(t).DROPS).n+"'"
endif
if ppl(t).on_dead_becomes>0
` this person now becomes an OBJECT.
obj(ppl(t).on_dead_becomes).IN=IN
endif
` remove the actual dead person
ppl(t).IN=0
endif
endif
endif
next t
print
Textit(a$)
if b$<>""
print
Textit(b$)
endif
print
Determine_Blocked_Exits()
endcase
case "L","LOO","LOOK","WHE","WHERE","SEE","VIEW","VIE"
VALID=1
Where_Am_I()
endcase
case "O","OPE","OPEN","UNL","UNLOCK","USE"
VALID=1
` DOORs and OBJECTs can be OPENED.
` we don't really NEED a NOUN in this case either.
a$="There doesn't seem to be anything here that needs opening."
for t=1 to numObjects
if obj(t).IN=IN
if obj(t).open=0
obj(t).open=1
if obj(t).contains>0
obj(obj(t).contains).IN=IN
a$="Opening the '"+obj(t).n+"' reveals '"+obj(obj(t).contains).n+"'"
endif
endif
endif
next t
for t=1 to numDoors
if Door(t).IN=IN
if obj(door(t).needs).IN=999
` SUCCESS
a$="Using the '"+obj(door(t).needs).n+"', you open the '"+Door(t).n+"'"
door(t).IN=0
else
` FAILURE
a$="You have no way to open the "+Door(t).n
endif
endif
next t
print
textit(a$)
print
Determine_Blocked_Exits()
endcase
case "R","REA","READ","PER","PERUSE"
` READing something AUTOMATICALLY gives you the thing it CONTAINS.
` you don't have to GET it.
VALID=1
a$="There's nothing here that you can read. Learn more languages."
for t=1 to numobjects
if obj(t).IN=IN
if obj(t).readable=1
if obj(t).contains>0
obj(obj(t).contains).IN=999
a$="You read the '"+obj(t).n+"' and now you have "+obj(obj(t).contains).n
obj(t).contains=0
obj(t).readable=0
endif
endif
endif
next t
print
textit(a$)
print
endcase
case "T","TAL","TALK","SPE","SPEAK","GAB","ASK","BLAB"
VALID=1
` talk only works with PEOPLE , and you hear it all at once.
for t=1 to numpeople
if ppl(t).IN=IN
print
print upper$(ppl(t).n)+" SAYS:"
textit(ppl(t).says1)
textit(ppl(t).says2)
textit(ppl(t).says3)
print
endif
next t
endcase
case "U","USE","OPERAT","ACTIVA","ACT"
VALID=1
` this doesn't work with anything yet...
endcase
case "WAI","WAIT","SLE","SLEEP","RES","REST"
VALID=1
` this is just a testing command...completely irrelevant.
endcase
case "CHEAT"
` for t=1 to numobjects
` if obj(t).getable
` obj(t).IN=999
` endif
` next t
endcase
case "X","EXA","EXAMIN"
VALID=1
if len(noun$)>1
n$=left$(noun$,3)
fail$="Either that's not here, or it's just completely unimportant."
` PROPS
for t=1 to numprops
if prop(t).IN=IN
a$=left$(prop(t).n,3)
b$=mid$(prop(t).n,4)+mid$(prop(t).n,5)+mid$(prop(t).n,6)
c$=right$(prop(t).n,3)
print
if n$=a$ or n$=b$ or n$=c$
textit(prop(t).desc)
fail$=""
endif
endif
next t
` OBJECTS
for t=1 to numObjects
if obj(t).IN=IN or obj(t).IN=999
O$=upper$(OBJ(T).N)
for u=1 to len(o$)
P$=mid$(o$,u)+mid$(o$,u+1)+mid$(o$,u+2)
if n$=p$
fail$=""
` print "EXAMINE ";upper$(obj(t).n)+" : ":print
textit(obj(t).desc)
textit(obj(t).exa_desc)
EXIT
endif
next u
endif
next t
` DOORS
for t=1 to numDoors
if door(t).IN=IN
O$=upper$(door(T).N)
for u=1 to len(o$)
P$=mid$(o$,u)+mid$(o$,u+1)+mid$(o$,u+2)
if n$=p$
fail$=""
` print "EXAMINE ";upper$(door(t).n)+" : ":print
textit(door(t).desc)
EXIT
endif
next u
endif
next t
` PEOPLE
for t=1 to numPeople
if ppl(t).IN=IN
O$=upper$(ppl(T).N)
for u=1 to len(o$)
P$=mid$(o$,u)+mid$(o$,u+1)+mid$(o$,u+2)
if n$=p$
fail$=""
` print "EXAMINE ";upper$(ppl(t).n)+" : ":print
textit(ppl(t).desc)
EXIT
endif
next u
endif
next t
` MONSTERS
for t=1 to numMonsters
if mon(t).IN=IN
O$=upper$(mon(T).N)
for u=1 to len(o$)
P$=mid$(o$,u)+mid$(o$,u+1)+mid$(o$,u+2)
if n$=p$
fail$=""
` print "EXAMINE ";upper$(mon(t).n)+" : ":print
textit(mon(t).desc)
EXIT
endif
next u
endif
next t
if fail$<>""
textit(fail$)
endif
else
print
print "Examine What?"
endif
endcase
ENDSELECT
endif
Endfunction Valid
Function Show_Commands()
print
print " N - North"
print " S - South"
print " E - East"
print " W - West"
print
print " C - Commands"
print " G - Get (take)"
print " H - Help"
print " I - Inventory (stock)"
print " K - Kill (shoot, kick, punch)"
print " L - Look (see, view)"
print " O - Open (unlock)"
print " R - Read"
print " T - Talk (speak)"
`print " U - Use"
print " X - Examine"
print ""
print " CLS - Clear Screen"
print
textit("Most commands just require a verb . 'EXAMINE' is an exception.")
print
Endfunction
Function Tell_Opening_Story()
cls
Print : Print
Textit("You awaken to a violent shaking and the feeling of falling.")
Textit("Sitting upright, you are immediately sick to your stomach,")
Textit("and in the same motion, bump your head on the low ceiling.")
Ask_For_More()
Textit("As you hit the cold metal floor, your senses are assaulted ")
Textit("by a bone-shaking CRASH!")
Ask_For_More()
Textit("When all is calm, you stand and realize that you don't know where you are.")
Textit("Nor do you know who you are. You can't seem to remember anything about yourself,")
Textit("but you have a general unconscious familiarity with everything you see.")
Ask_For_More()
Textit("You are on a spaceship. You are in a holding cell.")
Textit("Your door is slightly ajar. It should be locked.")
Textit("Going through the door would be going 'North'.")
Textit("Hmm. Time to explore.")
Ask_For_More()
cls
Endfunction
Function Determine_Blocked_Exits()
nor=1
sou=1
eas=1
wes=1
for t=1 to numDoors
if door(t).IN=IN
if door(t).blocks=1 then nor=0
if door(t).blocks=2 then eas=0
if door(t).blocks=3 then sou=0
if door(t).blocks=4 then wes=0
endif
next t
for t=1 to numMonsters
if mon(t).IN=IN
if mon(t).blocks=1 then nor=0
if mon(t).blocks=2 then eas=0
if mon(t).blocks=3 then sou=0
if mon(t).blocks=4 then wes=0
endif
next t
Endfunction
Function Ask_For_More()
print : print
Print " (... press any key to continue ...)"
print : print
wait key
Endfunction
Function Textit(a$)
b$=""
if len(a$)>65
L=len(a$)
m=(L/2)
for t=m to L
if mid$(a$,t)=" "
c$=left$(a$,t)
b$=right$(a$,len(a$)-len(c$))
EXIT
endif
next t
PRINT " ";c$
PRINT " ";B$
else
print " ";a$
endif
Endfunction
Function Check_For_Timed_Deaths()
` when you get here, it has already been decided that any TIMERS SHOULD COUNT.
` this is for monsters that kill you after a certain time.
for t=1 to numMonsters
if mon(t).IN=IN
dec mon(t).Kill_Count
if mon(t).Kill_Count<1
` it is time for this monster to kill you.
print
Textit(mon(t).kill_words)
print
DEAD=1
endif
endif
next t
Endfunction
Function Load_New_Game_Data()
Load_Room_Data()
Load_Prop_Data()
Load_Monster_Data()
Load_People_Data()
Load_Object_Data()
Load_Trap_Data()
Load_Door_Data()
Endfunction
Function Load_Room_Data()
RESTORE ROOMS_DATA
for t=1 to NumRooms
read a$,b$,c$
rm(t).n=a$
rm(t).d1=b$
rm(t).d2=c$
read a,b,c,d,e
rm(t).n1=a
rm(t).e2=b
rm(t).s3=c
rm(t).w4=d
rm(t).known=e
next t
Endfunction
Function Load_Prop_Data()
restore PROPS_DATA
for t=1 to numProps
read a,a$,b$
prop(t).IN=a
prop(t).n=a$
prop(t).desc=b$
next t
Endfunction
Function Load_Monster_Data()
restore MONSTERS_DATA
for t=1 to NumMonsters
read a$,b$,c$,d$
mon(t).n=a$
mon(t).desc=b$
mon(t).kill_words=c$
mon(t).you_kill_it_words=d$
read a,b,c,d,e
mon(t).IN=a
mon(t).Kill_Count=b
mon(t).blocks=c
mon(t).need=d
mon(t).drops=e
next t
Endfunction
Function Load_People_Data()
RESTORE PEOPLE_DATA
for t=1 to NumPeople
read a$,b$
ppl(t).n=a$
ppl(t).desc=b$
read a,b
ppl(t).IN=a
ppl(t).text_line=b
read a$,b$,c$
ppl(t).says1=a$
ppl(t).says2=b$
ppl(t).says3=c$
read a,b,c
ppl(t).wants=a
ppl(t).gives=b
ppl(t).can_kill=c
read a,b,c
ppl(t).kill_With=a
ppl(t).Drops=b
ppl(t).On_Dead_Becomes=c
read a$
ppl(t).kill_words=a$
next t
Endfunction
Function Load_Object_Data()
Restore Objects_Data
for t=1 to numobjects
read a$,b$,c$
obj(t).n=a$
obj(t).desc=b$
obj(t).exa_desc=c$
read a,b,c
obj(t).IN=a
obj(t).getable=b
obj(t).ReadAble=c
read a,b,c
obj(t).contains=a
obj(t).OPEN=b
obj(t).vis=c
next t
Endfunction
Function Load_Trap_Data()
RESTORE TRAPS_DATA
for t=1 to numTraps
read a,b,a$,b$
trap(t).IN=a
trap(t).need=b
trap(t).Kill_words=a$
trap(t).Survive_Words=b$
next t
Endfunction
Function Load_Door_Data()
restore DOOR_DATA
for t=1 to numDoors
read a$,b$,a,b,c
door(t).n=a$
door(t).desc=b$
door(t).IN=a
door(t).blocks=b
door(t).needs=c
next t
Endfunction
Function Title_Screen()
cls
set text size 24
center text 512,200,"Alien Abduction"
center text 512,300,"Part One:"
center text 512,400,"The Awakening"
center text 512,700,"Press Any Key"
sync
wait key
set text size 18
cls
Endfunction
Function You_Are_Dead()
PRINT
PRINT
PRINT " YOU HAVE DIED"
PRINT
PRINT " Too bad... You were doing really well..."
wait 1000
PRINT : PRINT : PRINT
print "(Press Escape to quit, or any other key to try again)"
wait key
GOTO START_HERE : ` THE EVIL GOTO!
end
Endfunction
Function YOU_WIN()
` 50 moves or less gives many bonus points (perfect game)
` IN=9 is better that IN=22, but both win.
` clothes & name give points.
` SCORE: clothes : 10 pts
` name : 15 pts (25)
` IN=22 : 45 pts (70)
` IN=9 : 65 pts (90)
` moves<101 : 5 pts (95)
` moves<51 5 pts (100)
SCORE=0
if IN=22 then score=45
if IN=9 then score=65
if obj(6).IN=999 then INC SCORE,10
if obj(7).IN=999 then INC SCORE,15
if moves<101 then inc score,5
if moves<51 then inc score,5
cls
where_am_I()
print
print
print
print " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
Textit("You have Escaped from the alien ship, and won your freedom.")
print " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
print
Textit("You made "+str$(moves)+" moves,")
print
Textit("and scored "+str$(score)+" points,")
print
Textit("Out of a possible 100")
print
print
Textit("Your Adventure Will Continue In")
print
print " Alien Abduction"
print " Part Two:"
print " The Perilous Planet"
wait 3000
` "SAVE"
Repeat
print
print " >>> Your Progress Will Now Be Saved."
print
input " >>> Enter A Name For The Save >>> ";a$
a$=a$+".AAS"
fail=0
if file exist(a$)
print
print "That file already exists. Please enter a new name."
fail=1
endif
until fail=0
` VARIABLE THINGS THE PLAYER MIGHT OR MIGHT NOT HAVE:
` IN, score, MOVES
` clothes, name, eye-gunk
` THINGS THE PLAYER MUST HAVE, AND THEREFORE *DON'T* NEED TO BE WRITTEN:
` rifle, boots, key-card,spanner, gown are necessary
open to write 1,a$
write word 1,IN
write word 1,score
write word 1,moves
write word 1,obj(6).IN
write word 1,obj(7).IN
write word 1,obj(11).IN
wait 500
print
print " Your Game Has Been Saved. Congratulations!"
wait key
END
Endfunction
` -----------------------------------------------------
Rem ***** DATA *****
` -----------------------------------------------------
ROOMS_DATA:
` #1 - BRIDGE
DATA "BRIDGE"
DATA "This appears to be the control center of the ship. Alien displays and strange input devices fill the room."
DATA "You don't know how to work any of these controls"
DATA 2,0,0,0,0
` #2
DATA "SECURITY TRANSFER"
DATA "This room provides access to the bridge."
DATA "There are several dead, mangled aliens on the floor."
DATA 3,0,1,0,0
` #3
DATA "FORWARD CORRIDOR"
DATA "You are walking through a long corridor that stretches north and south."
DATA "There are no markings or instruments on the walls."
DATA 4,0,2,0,0
` #4
DATA "HABITATION JUNCTION"
DATA "This square room has exits in all directions."
DATA "There is a reinforced door to the north."
DATA 14,10,3,5,0
` #5 - PRISON HALL A
DATA "PRISON HALL A"
DATA "You stand in an oblong chamber. The ceilings are low, and the walls are a faint metallic lavender."
DATA "You may go in any direction."
DATA 6,4,7,8,0
` #6
DATA "CONFINEMENT CELL"
data "The door to this cell has failed as well."
data "Inside, it is more like an animal pen than a holding cell."
DATA 0,0,5,0,0
` #7
DATA "YOUR CELL"
DATA "It is hard to know how long you were kept in this small, circular compartment."
DATA "There is a high sleeping platform, and a non-specific hygiene area."
DATA 5,0,0,0,1
` #8
DATA "DAMAGED AREA"
DATA "This area is severely damaged. It appears that the spaceship you are in has crash-landed."
DATA "Part of the wall is missing, but a force-field has sealed it off. You see an idyllic forest setting, just out of reach."
DATA 0,5,0,9,0
` #9
DATA "SOUTHWEST EXIT"
DATA "You have exited the alien ship, into a beautiful forest setting."
DATA "You still have no idea what planet you are on, but you are FREE!"
DATA 0,0,0,0,0 : ` exits no longer have any connections
` #10 - PRISON HALL B
DATA "PRISON HALL B"
DATA "This oblong hall is similar to the one you first emerged into."
DATA "There is purple blood on the wall."
DATA 11,13,12,4,0
` #11
DATA "NORTH-B CELL"
DATA "The door to this room appears to have been smashed down."
DATA "Something quite dangerous has passed through here..."
DATA 0,0,10,0,0
` #12
DATA "SOUTH-B CELL"
DATA "You see another human being! Through the small window in the door, in a cell much like yours."
DATA "Unfortunately, this is the only cell door that hasn't failed."
DATA 10,0,0,0,0
` #13
DATA "STORAGE ROOM"
DATA "Cabinets line the walls of this circular chamber from floor to ceiling."
DATA ""
DATA 0,0,0,10,0
` #14
DATA "MEDICAL CHAMBER A"
DATA "You see a wide expanse of tables with all manner of medical exam equiptment."
DATA "To the north, you can see exposed cables falling from the ceiling, causing the occasional shower of sparks."
DATA 15,23,4,0,0
` #15 - DAMAGED MEDICAL BAY / ELECTRIFIED FLOOR
DATA "MEDICAL CHAMBER B"
DATA "This part of the medical bay is very dangerous, with electricity jumping everywhere."
DATA "Exposed wires hang from a hole in the ceiling. You can see more of the ship above you."
DATA 16,0,14,0,0
` #16
DATA "REFLECTIVE CORRIDOR"
DATA "You have entered a cramped passageway of thousands of twisting, shiny pipes."
DATA "It would be very easy to get lost in here..."
DATA 17,16,15,16,1
` #17
DATA "REFLECTIVE CORRIDOR"
DATA "You have entered a cramped passageway of thousands of twisting, shiny pipes."
DATA "It would be very easy to get lost in here..."
DATA 17,17,16,18,0
` #18
DATA "REFLECTIVE CORRIDOR"
DATA "You have entered a cramped passageway of thousands of twisting, shiny pipes."
DATA "It would be very easy to get lost in here..."
DATA 18,17,19,18,1
` #19
DATA "REFLECTIVE CORRIDOR"
DATA "You have entered a cramped passageway of thousands of twisting, shiny pipes."
DATA "It would be very easy to get lost in here..."
DATA 18,20,19,19,1
` #20 - LAST MAZE ROOM
DATA "REFLECTIVE CORRIDOR"
DATA "You have entered a cramped passageway of thousands of twisting, shiny pipes."
DATA "It would be very easy to get lost in here..."
DATA 21,20,20,19,1
` #21
DATA "ENGINE ROOM"
DATA "You stand in the power house of the ship."
DATA "Everything looks too complicated to operate."
DATA 0,22,20,0,0
` #22
DATA "NORTHEAST EXIT"
DATA "You exit the alien ship onto a steep mountainous slope covered in jagged rocks."
DATA "The way down looks dangerous, but you are free of the alien ship."
DATA 0,0,0,0,0 : ` exits no longer have any connections
` #23
DATA "MEDICAL STORAGE"
DATA "This room has more lockers, hangers, and storage bins."
DATA "There is spare medical equipment and strange clothing everywhere."
DATA 0,0,0,14,0
` -----------------------------------------------------
PROPS_DATA:
`TYPE PROPS
` IN
` n as string
` desc as string
`ENDTYPE
` props are the things in a room that you can specifically examine.
` they can not be picked up or interacted with otherwise. FLAVOR.
` their NAMES are sets of 3 letters, which as a noun trigger that PROP.
` # 1
data 1 : ` IN
data "DISDEVCON" : ` n
data "All the controls in this room are beyond your understanding." : ` desc
` # 2
data 3 : ` IN
data "MARINSWAL" : ` n
data "You can't examine the markings or instruments on the walls, because there aren't any." : ` desc
` # 3
data 5 : ` IN
data "CEIWAL" : ` n
data "The proportions and dimensions of the room seem uncomfortable to you." : ` desc
` # 4
data 6 : ` IN
data "PENCELFLO" : ` n
data "The floor is littered with a hay and animal droppings." : ` desc
` # 5
data 7 : ` IN
data "SLEPLA" : ` n
data "The sleeping platform is chest-high, hard and rectangular." : ` desc
` # 6
data 7 : ` IN
data "NONHYGARE" : ` n
data "The hygiene area consists of a water faucet and a small hole in the floor. " : ` desc
` # 7
data 8 : ` IN
data "DAMAREWAL" : ` n
data "A section of the wall is gone, and you can see a welcoming earth-like planet beyond the force-field." : ` desc
` # 8
data 10 : ` IN
data "PURBLOWAL" : ` n
data "The purple blood on the wall is probably from one of the aliens who run this ship." : ` desc
` # 9
data 11 : ` IN
data "DOOROOHER" : ` n
data "The inside of the cell is scarred and dented. The door is bent outward and gouged." : ` desc
` # 10
data 12 : ` IN
data "WINDOOCEL" : ` n
data "You see no way to open the door, but you can talk to the person inside." : ` desc
` # 11
data 13 : ` IN
data "CABWALCHA" : ` n
data "On closer inspection, most of the cabinets are locked. A few have spilled their contents onto the floor." : ` desc
` # 12
data 14 : ` IN
data "TABMEDEQU" : ` n
data "Unspeakable things were almost certainly done to your body and mind in this room." : ` desc
` # 13
data 23 : ` IN
data "LOCHANSTO" : ` n
data "It is likely that you would poison yourself, or perhaps lose a finger, if you played with the equipment here." : ` desc
` # 14
data 2 : ` IN
data "DEAMANALI" : ` n
data "These poor crewmen were ripped apart by the Razgax, so they won't be bothering you." : ` desc
` ` #
`data 0 : ` IN
`data "" : ` n
`data "" : ` desc
` -----------------------------------------------------
OBJECTS_DATA:
` # 1
data "Key Card" : ` n
data "This small white polymer card carries all the captain's authority." : ` d1
data "" : ` d2
data 1,1,0,0,1,1 : ` IN,getable,ReadAble,contains,OPEN,vis
` # 2
data "Foot Locker"
data "A two meter long rectangular metal box with a lid."
data ""
data 13,0,0,3,0,1 : ` IN,getable,ReadAble,contains,OPEN,vis
` # 3
data "Large Puffy Boots"
data "The strange oversized boots would probably stretch over both your feet."
data "Made of a foamy polymer, they weigh little, even in the high gravity."
data 0,1,0,0,1,1 : ` IN,getable,ReadAble,contains,OPEN,vis
` # 4
data "Heavy Energy Rifle"
data "This is obviously a powerful weapon."
data "The trigger and sight seem simple enough, even for you."
data 0,1,0,0,1,1 : ` IN,getable,ReadAble,contains,OPEN,vis
` # 5
data "Alien Corpse"
data "The dead alien is short and blue-grey, with large black eyes"
data "and enormous, billowy ears. It has thick fleshy antennae and three-clawed hands."
data 0,0,0,0,1,1 : ` IN,getable,ReadAble,contains,OPEN,vis
` # 6
data "Your Clothes"
data "This is your favorite outfit."
data "It is much better than the strange alien gown."
data 23,1,0,0,1,1 : ` IN,getable,ReadAble,contains,OPEN,vis
` # 7
data "Your Name"
data "You can now remember your name."
data "It feels good to have an identity."
data 0,1,0,0,1,1 : ` IN,getable,ReadAble,contains,OPEN,vis
` # 8
data "Magnetic Spanner"
data "This odd device has long pincers that hum and vibrate."
data "The air shimmers wherever you point it."
data 21,1,0,0,1,1 : ` IN,getable,ReadAble,contains,OPEN,vis
` # 9
data "Extraterestrial Gown" : ` n
data "An oversized white cloth gown of non-human design." : ` d1
data "It has alien symbols on the chest." : ` d2
data 999,1,1,0,0,1 : ` IN,getable,ReadAble,contains,OPEN,vis
` # 10
Data "Databank"
data "Among the scrolling alien symbols,"
data "you see some words that you might be able to read..."
data 15,0,1,7,1,1
` # 11
data "Eye Gunk" : ` n
data "When you killed the weird herbivore,." : ` d1
data "you got splattered with its eye-gunk." : ` d2
data 0,99,0,0,1,1 : ` IN,getable,ReadAble,contains,OPEN,vis
` -----------------------------------------------------
PEOPLE_DATA:
data "Fellow Human" : ` n
data "A forty-something human male in a gown similar to yours." : ` desc
data 12,0 : ` IN,text_line
data "HEY! It's good to see you! No, I don't even know my name. " : ` says 1-3
data "But i did see a terrible monster in the hall after the crash. I escaped once, and found myself in a maze."
data "I Thought I was just circling to the left: North,West,South,East. But I made it to the engine room."
data 0,0 : ` wants,gives
data 0,0,0,0 : ` can kill, kill with, drops, on dead becomes (OBJECT #)
data "" : ` kill_words
data "Dying Alien" : ` n
data "This is one of the creatures that abducted you. It is clutching a rifle to its chest, and gasping for air. " : ` desc
data 10,0 : ` IN,text_line
data "Washgosh flosh-spisash" : ` says 1-3
data "(Guurrrrgggggllllle)"
data "Shroooshhhh...."
data 0,0 : ` wants,gives
data 1,0,4,5 : ` can kill, kill with, drops, on dead becomes (OBJECT #)
data "You decide to kick the alien hard in the ribs. Its breathing stops." : ` kill_words
data "Self" : ` n
data "You seem to be slightly shorter and heavier than you thought. Depressing." : ` desc
data 0,0 : ` IN,text_line
data "" : ` says 1-3
data ""
data ""
data 0,0 : ` wants,gives
data 0,0,0,0 : ` can kill, kill with, drops, on dead becomes (OBJECT #)
data "" : ` kill_words
` -----------------------------------------------------
TRAPS_DATA:
data 15,3 : ` IN,need
data "As you walk into the room, the electrified floor paralyzes you. Your heart stops and your body fries."
data "The thick alien boots protect you from the electric current pulsing through the floor."
` --------------------------------------------------------------------------------------------------------------------
MONSTERS_DATA:
` # 1
data "Weird Herbivore"
data "A squat biped with a huge central eye and a thick fin on its back, jittering around the room."
data "The little creature finally recognizes your weak spot. It lunges and kills you."
data "You smash the creature's giant eye, which splatters all over you. It dies twitching."
data 6,20,0,0,11 : ` IN,Kill_Count, blocks, need,drops
` # 2
data "Razgax"
data "A large dangerous creature, with six spindly legs, huge fore-arms, and an oval mouth lined with rows of teeth."
data "You can do little to harm this viscious predator, as it rips you limb from limb."
data "You fire a ball of plasma that burns through the razgax. Its death throes bring it to within inches of your face."
data 2,5,3,4,0 : ` IN,Kill_Count, blocks, need,drops
` ---------------------------------------------------------------------------------------------------------------------------
DOOR_DATA:
data "Secure Metal Door"
data "This door seems to need a security clearance ID"
data 4,1,1 : ` in,blocks,needs
data "Emergency Forcefield"
data "A transparent but solid sparkling field of energy."
data 8,4,8: ` in,blocks,needs
data "Emergency Forcefield"
data "A transparent but solid sparkling field of energy."
data 21,2,8: ` in,blocks,needs
` ---------------------------------------------------------------------------------------------------------------------------
Rem ***** WHATEVER *****
` ---------------------------------------------------------------------------------------------------------------------------
Rem ***** STOP *****
` ---------------------------------------------------------------------------------------------------------------------------
[/edit]