X X X X X X oiX X X X X X E
X X X X X X X X X X X X X E
X X X X X X X X X X O X X X E
X X X X X X O X X I X X X X X D
X X X X X X X X X X X X X X X D
X X X X X X X X X X X X X X X D
X X X X X X oiX X X X X X X X
X X X X X X X X X X X X X
X X X X X X X X X X
X X X X X X X
X X X X X
X X X
X
Alex wrote:I would have the directions set as scripts. They would increment or decrement a co-ordinate and/or "distance travelled" variable, act accordingly and then put the player back in the same room.
I'd probably avoid having 115 locations in a desert. You're not talking about exciting gameplay here if a player has to slog his way through 115 pretty near identical locations.
set string <oasis[0]; 2,5>
set string <oasis[1]; 3,2>
set string <oasis[2]; 3, 5>for <i=0;i=$ubound(oasis)$> {
set string <checking; #game:x#,#game:y#>
if (#checking#; #oasis[i]#) then {
#move player to oasis room...#
} else {
#move player to desert room#
}for <i=0;i=$ubound(oasis)$> {
set string <checking; #game:x#,#game:y#>
if (#checking#; #oasis[i]#) then {
#move player to oasis room...#
} else {
#move player to desert room#
}oasis[0] = room3
oasis[1] = room3
oasis[2] = room3
oasis[3] = room4
oasis[4] = room3
oasis[5] = room3Computer Whizz wrote:
You can have 2 rooms if you want, for 30 oasis' (2 different rooms entirely, one with an exit to another world, another with only a sand beach, palm tree's and water)... Just have the array like so:oasis[0] = room3
oasis[1] = room3
oasis[2] = room3
oasis[3] = room4
oasis[4] = room3
oasis[5] = room3
See what I mean?
so I may have to get back to you tomorrow...
Have a little think about it... Try to make some guesses, - maybe look at what I've typed, and instead of cut and pasting - perhaps selecting the commands in QDK and then typing in the appropriate stuff.
' "desert land"
' Created with QDK 3.52 - UNREGISTERED VERSION
define game <desert land>
asl-version <350>
gametype singleplayer
start <start>
game author <steve>
game info <Created with QDK 3.52 - UNREGISTERED EVALUATION VERSION.>
define variable <thirst>
type numeric
value <0>
onchange {
if ( %thirst% = 4 ) then msg <You are thirsty. You better find an oasis soon.>
if ( %thirst% = 6 ) then {
msg <You crumble under deep dehydration and wither to a dried plum.>
wait <press any key>
playerlose
clear
}
}
end define
end define
define synonyms
end define
define room <start>
west <desert>
end define
define room <desert>
east <start>
west {
inc <thirst; 1>
goto <desert1>
}
end define
define room <desert1>
south {
inc <thirst; 1>
goto <desert6>
}
east {
inc <thirst; 1>
goto <desert>
}
west {
inc <thirst; 1>
goto <desert2>
}
end define
define room <desert2>
south {
inc <thirst; 1>
goto <desert7>
}
east {
inc <thirst; 1>
goto <desert1>
}
west {
inc <thirst; 1>
goto <desert3>
}
end define
define room <desert3>
south {
inc <thirst; 1>
goto <desert8>
}
east {
inc <thirst; 1>
goto <desert2>
}
west {
inc <thirst; 1>
goto <desert4>
}
end define
define room <desert4>
south {
inc <thirst; 1>
goto <desert9>
}
east {
inc <thirst; 1>
goto <desert3>
}
west {
inc <thirst; 1>
goto <desert5>
}
end define
define room <desert5>
south {
inc <thirst; 1>
goto <desert10>
}
east {
inc <thirst; 1>
goto <desert4>
}
west <oasis>
end define
define room <desert6>
north {
inc <thirst; 1>
goto <desert1>
}
west {
inc <thirst; 1>
goto <desert7>
}
end define
define room <desert7>
north {
inc <thirst; 1>
goto <desert2>
}
east {
inc <thirst; 1>
goto <desert6>
}
west {
inc <thirst; 1>
goto <desert8>
}
end define
define room <desert8>
north {
inc <thirst; 1>
goto <desert3>
}
east {
inc <thirst; 1>
goto <desert7>
}
west {
inc <thirst; 1>
goto <desert9>
}
end define
define room <desert9>
north {
inc <thirst; 1>
goto <desert4>
}
east {
inc <thirst; 1>
goto <desert8>
}
west {
inc <thirst; 1>
goto <desert10>
}
end define
define room <desert10>
north <desert5>
east <desert9>
end define
define room <oasis>
prefix <the>
look <You've reached the oasis. What a pleasant treat to find among the desert sands.>
east <desert5>
command <drink> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
command <drink water> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
define object <oasis water>
alias <oasis>
look <Beautiful water. Nectar of the gods.>
take {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
prefix <the>
article <it>
gender <it>
end define
end define
define text <intro>
end define
define text <win>
end define
define text <lose>
end define
007bond wrote:this is what i was talking about in my list of Quest's needs. The ability to set the room type to small, indoor rooms, or big, outdoor areas like parks, or in this case a desert. Why is it that everyone opposes these sorts of ideas of mine, until someone else has the same idea/problem?
4. Different room types: Hallways, Halls (Large Rooms), Standard Rooms (Loungeroom), Stairwells (Large ones (in buildings), and Small Ones (In Backyards), Back and Front Yards, Caves, Forests, Parks, and Misc. Outside areas.
' "desert land"
' Created with QDK 3.52 - UNREGISTERED VERSION
define game <desert land>
asl-version <350>
gametype singleplayer
start <start>
game author <steve>
game info <Created with QDK 3.52 - UNREGISTERED EVALUATION VERSION.>
define variable <thirst>
type numeric
value <0>
onchange {
if ( %thirst% = 4 ) then msg <You are thirsty. You better find an oasis soon.>
if ( %thirst% = 6 ) then {
msg <You crumble under deep dehydration and wither to a dried plum.>
wait <press any key>
playerlose
clear
}
}
end define
startscript {
set string <oasis[0]; 0,6>
set string <oasis[1]; 2,3>
set string <oasis_room[0]; oasis1>
set string <oasis_room[1]; oasis2>
}
properties <desert_x=0; desert_y=0>
end define
define synonyms
end define
define room <start>
west <desert>
end define
define room <desert>
east <start>
west {
inc <thirst; 1>
inc <#game:desert_x#>
goto <$desertroom$>
}
end define
define room <oasis1>
prefix <the>
alias <oasis>
look <You've reached the oasis. What a pleasant treat to find among the desert sands.>
east <desert>
command <drink> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
command <drink water> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
define object <oasis water>
alias <oasis>
look <Beautiful water. Nectar of the gods.>
take {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
prefix <the>
article <it>
gender <it>
end define
end define
define room <oasis2>
prefix <the>
alias <oasis>
look <You've reached the oasis. What a pleasant treat to find among the desert sands.>
east <desert>
command <drink> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
command <drink water> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
define object <oasis water2>
alias <oasis>
look <Beautiful water. Nectar of the gods.>
take {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
prefix <the>
article <it>
gender <it>
end define
end define
define function <desertroom>
for <i; 0; $ubound(oasis)$> {
set string <dest; #game:desert_x#,#game:desert_y#>
if (#dest# = #oasis[i]#) then set string <returning; #oasis[i]#>
else {
if ( #game:desert_x# < 0 ) or (#game:desert_y# < 0 ) then set string <returning; start>
else {
set string <returning; desert>
}
}
}
return <#returning#>
end define
define text <intro>
end define
define text <win>
end define
define text <lose>
end define set string <dest; #game:desert_x#,#game:desert_y#>
if ( #dest# = #oasis[i]# ) then set string <returning; #oasis[i]#> else {
if ( #game:desert_x# < 0 ) or ( #game:desert_y# < 0 ) then set string <returning; start> else set string <returning; desert>
}
}
return <#returning#>
' "desert land"
' Created with QDK 3.52 - UNREGISTERED VERSION
define game <desert land>
asl-version <350>
gametype singleplayer
start <start>
game author <steve>
game info <Created with QDK 3.52 - UNREGISTERED EVALUATION VERSION.>
define variable <thirst>
type numeric
value <0>
onchange {
if ( %thirst% = 4 ) then msg <You are thirsty. You better find an oasis soon.>
if ( %thirst% = 7 ) then {
msg <You crumble under deep dehydration and wither to a dried plum.>
wait <press any key>
playerlose
clear
}
}
end define
startscript {
set string <oasis[1]; 6,0>
set string <oasis[2]; 2,3>
set string <oasis_room[1]; oasis1>
set string <oasis_room[2]; oasis2>
}
properties <desert_x=0; desert_y=0>
end define
define synonyms
end define
define room <start>
west <desert>
end define
define room <desert>
east <start>
west {
inc <thirst; 1>
set numeric <tempy; #game:desert_x# + 1>
property <game; desert_x = %tempy%>
set string <room; $desertroom$>
goto <#room#>
}
end define
define room <oasis1>
prefix <the>
alias <oasis>
look <You've reached the oasis. What a pleasant treat to find among the desert sands.>
east <desert>
command <drink> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
command <drink water> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
define object <oasis water>
alias <oasis>
look <Beautiful water. Nectar of the gods.>
take {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
prefix <the>
article <it>
gender <it>
end define
end define
define room <oasis2>
prefix <the>
alias <oasis>
look <You've reached the oasis. What a pleasant treat to find among the desert sands.>
east <desert>
command <drink> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
command <drink water> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
define object <oasis water2>
alias <oasis>
look <Beautiful water. Nectar of the gods.>
take {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
prefix <the>
article <it>
gender <it>
end define
end define
define function <desertroom>
set string <returning; 1>
set numeric <upper; $ubound(oasis)$>
for <i; 1; %upper%> {
set string <dest; #game:desert_x#,#game:desert_y#>
msg <#oasis[i]#==#dest#==>
if ( #dest# = #oasis[i]# ) then {
set string <returning; #oasis_room[i]#>
msg <this should work>
}
else {
if ( #returning# = 1) then {
if ( #game:desert_x# < 0 ) or (#game:desert_y# < 0 ) then set string <returning; start>
else {
set string <returning; desert>
}
}
}
}
return <#returning#>
end define
define text <intro>
end define
define text <win>
end define
define text <lose>
end define 10,0 9,0 8,0 7,0 6,0 5,0 4,0 3,0 2,0 1,0
10,1 9,1 8,1 7,1 6,1 5,1 4,1 3,1 2,1 1,1
10,2 9,2 8,2 7,2 6,2 5,2 4,2 3,2 2,2 1,2
etc...define function <desertroom>
set string <returning; 1>
set numeric <upper; $ubound(oasis)$>
for <i; 1; %upper%> {
set string <dest; #game:desert_x#,#game:desert_y#>
if ( #dest# = #oasis[i]# ) then {
set string <returning; #oasis_room[i]#>
msg <this should work>
}
else {
if ( #returning# = 1 ) then {
if ( #game:desert_x# < 0 ) or ( #game:desert_y# > 0 ) then set string <returning; start> else set string <returning; desert>
}
}
}
return <#returning#>
end definedefine function <desertroom>
set string <returning; 1>
set numeric <upper; $ubound(oasis)$>
for <i; 1; %upper%> {
set string <dest; #game:desert_x#,#game:desert_y#>
if ( #dest# = #oasis[i]# ) then {
set string <returning; #oasis_room[i]#>
msg <this should work>
}
else {
if ( #returning# = 1 ) then {
if ( #game:desert_x# = 0 ) and ( #game:desert_y# = 0 ) then set string <returning; start> else set string <returning; desert>
}
}
}
return <#returning#>
end define
' "desert land"
' Created with QDK 3.52 - UNREGISTERED VERSION
define game <desert land>
asl-version <350>
gametype singleplayer
start <start>
game author <steve>
game info <Created with QDK 3.52 - UNREGISTERED EVALUATION VERSION.>
define variable <thirst>
type numeric
value <0>
onchange {
if ( %thirst% = 4 ) then msg <You are thirsty. You better find an oasis soon.>
if ( %thirst% = 7 ) then {
msg <You crumble under deep dehydration and wither to a dried plum.>
wait <press any key>
playerlose
clear
}
}
end define
startscript {
set string <oasis[1]; 6,0>
set string <oasis[2]; 2,3>
set string <oasis_room[1]; oasis1>
set string <oasis_room[2]; oasis2>
}
properties <desert_x=0; desert_y=0>
end define
define synonyms
end define
define room <start>
west <desert>
end define
define room <desert>
north {
inc <thirst; 1>
set numeric <tempy; #game:desert_y# - 1>
property <game; desert_y = %tempy%>
set string <room; $desertroom$>
goto <#room#>
}
east {
inc <thirst; 1>
set numeric <tempy; #game:desert_x# - 1>
property <game; desert_x = %tempy%>
set string <room; $desertroom$>
goto <#room#>
}
south {
inc <thirst; 1>
set numeric <tempy; #game:desert_y# + 1>
property <game; desert_y = %tempy%>
set string <room; $desertroom$>
goto <#room#>
}
west {
inc <thirst; 1>
set numeric <tempy; #game:desert_x# + 1>
property <game; desert_x = %tempy%>
set string <room; $desertroom$>
goto <#room#>
}
end define
define room <oasis1>
prefix <the>
alias <oasis>
look <You've reached the oasis. What a pleasant treat to find among the desert sands.>
east <desert>
command <drink> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
command <drink water> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
define object <oasis water>
alias <oasis>
look <Beautiful water. Nectar of the gods.>
take {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
prefix <the>
article <it>
gender <it>
end define
end define
define room <oasis2>
prefix <the>
alias <oasis>
look <You've reached the oasis. What a pleasant treat to find among the desert sands.>
east <desert>
command <drink> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
command <drink water> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
define object <oasis water2>
alias <oasis>
look <Beautiful water. Nectar of the gods.>
take {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
prefix <the>
article <it>
gender <it>
end define
end define
define function <desertroom>
set string <returning; 1>
set numeric <upper; $ubound(oasis)$>
for <i; 1; %upper%> {
set string <dest; #game:desert_x#,#game:desert_y#>
msg <#oasis[i]#==#dest#==>
if ( #dest# = #oasis[i]# ) then {
set string <returning; #oasis_room[i]#>
msg <this should work>
}
else {
if ( #returning# = 1) then {
if ( #game:desert_x# < 0 ) or (#game:desert_y# < 0 ) then {
set string <returning; start>
property <game; desert_x=0; desert_y=0>
}
else {
set string <returning; desert>
}
}
}
}
return <#returning#>
end define
define text <intro>
end define
define text <win>
end define
define text <lose>
end define
You are in start.
You can go west.
> west
You are in desert.
You can go north, south, east or west.
> west
6,0==1,0==
2,3==1,0==
You are in desert.
You can go north, south, east or west.
> west
6,0==2,0==
2,3==1,0==
You are in desert.
You can go north, south, east or west.Computer Whizz wrote:Just add the west code from the desert into the west script for the start room...
So instead of "west <desert>" it'd be:set numeric <tempy; #game:desert_x# + 1>
property <game; desert_x = %tempy%>
set string <room; $desertroom$>
goto <#room#>
That will work.
define function <desertroom>
set string <returning; 1>
set numeric <upper; $ubound(oasis)$>
for <i; 1; %upper%> {
set string <dest; #game:desert_x#,#game:desert_y#>
msg <#oasis[i]#==#dest#==>
if ( #dest# = #oasis[i]# ) then set string <returning; #oasis_room[i]#> else {
if ( #returning# = 1 ) then {
if ( #game:desert_x# = 0 ) and ( #game:desert_y# = 0 ) then {
set string <returning; start>
property <game; desert_x=0; desert_y=0>
}
else {
set string <returning; desert>
else {
if ( #game:desert_x# = 0 ) and ( #game:desert_y# = 1 ) then {
set string <returning; start2>
property <game; desert_x=0; desert_y=1>
}
}
}
}
}
}
return <#returning#>
end define
set string <oasis[1]; 0,6> ' Oasis at 0-West, 6-South
set string <oasis[2]; 2,3> ' Oasis at 2-West, 3-South
set string <oasis[3]; 4,4> ' Oasis at 4-West, 4-South
set string <oasis[4]; 0,1> ' Start2 at 0-West, 1-Southset string <oasis_room[1]; oasis1> ' Oasis1 room @ 0,6
set string <oasis_room[2]; oasis2> ' Oasis2 room @ 2,3
set string <oasis_room[3]; oasis3> ' Oasis3 room @ 4,4
set string <oasis_room[4]; start2> ' Start2 room @ 0,1steve the gaming guy wrote:
X = empty desert
O = oasis
E = is the beginning of the desert
D = death rooms (killed by scorpions if entered)
I = item
oi = oasis and an item in the same room
X X X X X X oiX X X X X X E
X X X X X X X X X X X X X E
X X X X X X X X X X O X X X E
X X X X X X O X X I X X X X X D
X X X X X X X X X X X X X X X D
X X X X X X X X X X X X X X X D
X X X X X X oiX X X X X X X X
X X X X X X X X X X X X X
X X X X X X X X X X
X X X X X X X
X X X X X
X X X
X
startscript {
set string <oasis[1]; 4,2>
set string <oasis[2]; 9,3>
set string <oasis[3]; 6,3>
set string <temple[1]; 7,-1>
set string <oasis_room[1]; oasis1>
set string <oasis_room[2]; oasis2>
set string <oasis_room[3]; oasis3>
set string <temple_room[1]; temple1>
}define function <desertroom>
set string <returning; 1>
set numeric <upper; $ubound(oasis)$>
for <i; 1; %upper%> {
set string <dest; #game:desert_x#,#game:desert_y#>
msg <#oasis[i]#==#dest#==>
msg <#temple[i]#==#dest#==>
if ( #dest# = #oasis[i]# ) then set string <returning; #oasis_room[i]#> else {
if ( #returning# = 1 ) then {
if ( #game:desert_x# = 0 ) and ( #game:desert_y# = 0 ) then {
set string <returning; start>
property <game; desert_x=0; desert_y=0>
}
else {
set string <returning; desert>
if ( #game:desert_x# = 0 ) and ( #game:desert_y# = 1 ) then {
set string <returning; start2>
property <game; desert_x=0; desert_y=1>
}
if ( #dest# = #temple[i]# ) then set string <returning; #temple_room[i]#> else {
if ( #returning# = 1 ) then {
if ( #game:desert_x# = 0 ) and ( #game:desert_y# = 0 ) then {
set string <returning; start>
property <game; desert_x=0; desert_y=0>
}
else {
set string <returning; desert>
}
}
}
}
}
}
}
return <#returning#>
end defineset string <oasis[4]; 7,-1>
set string <oasis_room[4]; temple1>
' ######### CORRECTED CODE ############
' "desert land"
' Created with QDK 3.52 - UNREGISTERED VERSION
define game <desert land>
asl-version <350>
gametype singleplayer
start <start>
game author <steve>
game info <Created with QDK 3.52 - UNREGISTERED EVALUATION VERSION.>
define variable <thirst>
type numeric
value <0>
onchange {
if ( %thirst% = 4 ) then msg <You are thirsty. You better find an oasis soon.>
if ( %thirst% = 7 ) then {
msg <You crumble under deep dehydration and wither to a dried plum.>
wait <press any key>
playerlose
clear
}
}
end define
startscript {
set string <oasis[1]; 6,0>
set string <oasis[2]; 2,3>
set string <oasis[3]; 2,-1>
set string <oasis_room[1]; oasis1>
set string <oasis_room[2]; oasis2>
set string <oasis_room[3]; temple1>
}
properties <desert_x=0; desert_y=0>
end define
define synonyms
end define
define room <start>
west <desert>
end define
define room <desert>
north {
inc <thirst; 1>
set numeric <tempy; #game:desert_y# - 1>
property <game; desert_y = %tempy%>
set string <room; $desertroom$>
goto <#room#>
}
east {
inc <thirst; 1>
set numeric <tempy; #game:desert_x# - 1>
property <game; desert_x = %tempy%>
set string <room; $desertroom$>
goto <#room#>
}
south {
inc <thirst; 1>
set numeric <tempy; #game:desert_y# + 1>
property <game; desert_y = %tempy%>
set string <room; $desertroom$>
goto <#room#>
}
west {
inc <thirst; 1>
set numeric <tempy; #game:desert_x# + 1>
property <game; desert_x = %tempy%>
set string <room; $desertroom$>
goto <#room#>
}
end define
define room <oasis1>
prefix <the>
alias <oasis>
look <You've reached the oasis. What a pleasant treat to find among the desert sands.>
east <desert>
command <drink> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
command <drink water> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
define object <oasis water>
alias <oasis>
look <Beautiful water. Nectar of the gods.>
take {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
prefix <the>
article <it>
gender <it>
end define
end define
define room <oasis2>
prefix <the>
alias <oasis>
look <You've reached the oasis. What a pleasant treat to find among the desert sands.>
east <desert>
command <drink> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
command <drink water> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
define object <oasis water2>
alias <oasis>
look <Beautiful water. Nectar of the gods.>
take {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
prefix <the>
article <it>
gender <it>
end define
end define
define room <temple1>
alias <Golden Temple>
description <This temple is made of shimering gold!|nIt has statues outside and looks amazingly holy...|n|n...You step back in awe.>
south <desert>
end define
define function <desertroom>
set string <returning; 1>
set numeric <upper; $ubound(oasis)$>
for <i; 1; %upper%> {
set string <dest; #game:desert_x#,#game:desert_y#>
msg <#oasis[i]#==#dest#==>
if ( #dest# = #oasis[i]# ) then {
set string <returning; #oasis_room[i]#>
msg <this should work>
}
}
if ( #returning# = 1) then {
if ( #game:desert_x# < 0 ) or (#game:desert_y# < 0 ) then {
set string <returning; start>
property <game; desert_x=0; desert_y=0>
}
else {
set string <returning; desert>
}
}
return <#returning#>
end define
define text <intro>
end define
define text <win>
end define
define text <lose>
end define
2,-1
6,0 5,0 4,0 3,0 2,0 1,0 0,0
6,1 5,1 4,1 3,1 2,1 1,1 0,1
create exit [north/east/whatever] <#room#; #other room#>create exit north <desert; do <script>> obviously won't work because of the <>'s inside of each other.Computer Whizz wrote: the script delete's exit's when you reach an edge... it's just that I need to re-create them again.
::EDIT::
I've just had another thought Steve........ Just add a seperate room into point 2,0
(Named desert_temple I guess)... If you alias it right, and add in the exits, then it'll act just like a normal desert room.
Then, you can just add an exit to the temple yourself to that one room!
' "desert land"
' Created with QDK 3.52 - UNREGISTERED VERSION
define game <desert land>
asl-version <350>
gametype singleplayer
start <start>
game author <steve>
game info <Created with QDK 3.52 - UNREGISTERED EVALUATION VERSION.>
define variable <thirst>
type numeric
value <0>
onchange {
if ( %thirst% = 4 ) then msg <You are thirsty. You better find an oasis soon.>
if ( %thirst% = 7 ) then {
msg <You crumble under deep dehydration and wither to a dried plum.>
wait <press any key>
playerlose
clear
}
}
end define
startscript {
set string <oasis[1]; 6,0>
set string <oasis[2]; 2,3>
set string <oasis[3]; 2,-1>
set string <oasis_room[1]; oasis1>
set string <oasis_room[2]; oasis2>
set string <oasis_room[3]; temple1>
}
properties <desert_x=0; desert_y=0>
end define
define synonyms
end define
define room <start>
west <desert>
end define
define room <desert>
script {
set numeric <ED_north1; #game:desert_y# - 1>
set numeric <ED_east1; #game:desert_x# - 1>
set string <edgedetect[1]; $desertroom(%ED_east1%; #game:desert_y#)$> ' This checks to see if a valid room is east 1.
set string <edgedetect[2]; $desertroom(#game:desert_x#; %ED_north1%)$> ' This checks to see if a valid room is north 1.
msg <====EVAL====|n_
north = %ED_north1%|n_
east = %ED_east1%|n_
edge1 = #edgedetect[1]#|n_
edge2 = #edgedetect[2]#>
if ( #edgedetect[1]# = FALSE ) then create exit east <desert;> else create exit east <desert; do
' This may say "create" but it should be removing the exit... Else re-create exit (put in to get exit back after destroying it.
if ( #edgedetect[2]# = FALSE ) then create exit north <desert;> ' Same here...
}
north do <desert_exit(N)>
' inc <thirst; 1>
' set numeric <tempy; #game:desert_y# - 1>
' property <game; desert_y = %tempy%>
' set string <room; $desertroom$>
' goto <#room#>
east do <desert_exit(E)>
' inc <thirst; 1>
' set numeric <tempy; #game:desert_x# - 1>
' property <game; desert_x = %tempy%>
' set string <room; $desertroom$>
' goto <#room#>
south do <desert_exit(S)>
' inc <thirst; 1>
' set numeric <tempy; #game:desert_y# + 1>
' property <game; desert_y = %tempy%>
' set string <room; $desertroom$>
' goto <#room#>
west do <desert_exit(W)>
' inc <thirst; 1>
' set numeric <tempy; #game:desert_x# + 1>
' property <game; desert_x = %tempy%>
' set string <room; $desertroom$>
' goto <#room#>
end define
define room <oasis1>
prefix <the>
alias <oasis>
look <You've reached the oasis. What a pleasant treat to find among the desert sands.>
east <desert>
command <drink> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
command <drink water> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
define object <oasis water>
alias <oasis>
look <Beautiful water. Nectar of the gods.>
take {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
prefix <the>
article <it>
gender <it>
end define
end define
define room <oasis2>
prefix <the>
alias <oasis>
look <You've reached the oasis. What a pleasant treat to find among the desert sands.>
east <desert>
command <drink> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
command <drink water> {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
define object <oasis water2>
alias <oasis>
look <Beautiful water. Nectar of the gods.>
take {
msg <You reach down and have a refreshing sip of water.>
set numeric <thirst; 0>
}
prefix <the>
article <it>
gender <it>
end define
end define
define room <temple1>
alias <Golden Temple>
description <This temple is made of shimering gold!|nIt has statues outside and looks amazingly holy...|n|n...You step back in awe.>
south <desert>
end define
define function <desertroom>
set string <returning; 1>
set numeric <upper; $ubound(oasis)$>
if ( $numberparameters$ > 0 ) then {
msg <$parameter(1)$ === $parameter(2)$>
if ( $parameter(1)$ < 0 ) or ( $parameter(2)$ < 0 ) then {
set string <hypoth; $parameter(1)$,$parameter(2)$ >
set string <returning; FALSE> ' We put this here because the IF below will correct this.
for <i; 1; %upper%> {
if ( #hypoth# = #oasis[i]# ) then {
set string <returning; TRUE>
msg <If you understand all THIS code then you're on the right tracks!>
}
}
}
else set string <returning; TRUE>
}
else {
for <i; 1; %upper%> {
set string <dest; #game:desert_x#,#game:desert_y#>
msg <#oasis[i]#==#dest#==>
if ( #dest# = #oasis[i]# ) then {
set string <returning; #oasis_room[i]#>
msg <this should work>
}
}
if ( #returning# = 1) then {
if ( #game:desert_x# < 0 ) or (#game:desert_y# < 0 ) then {
set string <returning; start>
property <game; desert_x=0; desert_y=0>
}
else {
set string <returning; desert>
}
}
}
return <#returning#>
end define
define procedure <desert_exit>
if ( $numberparameters$ < 1 ) then {
msg <ERROR!!!1>
}
else {
inc <thirst; 1>
if ( $parameter(1)$ = N ) then {
set numeric <tempy; #game:desert_y# - 1>
property <game; desert_y = %tempy%>
}
if ( $parameter(1)$ = E ) then {
set numeric <tempy; #game:desert_x# - 1>
property <game; desert_x = %tempy%>
}
if ( $parameter(1)$ = S ) then {
set numeric <tempy; #game:desert_y# + 1>
property <game; desert_y = %tempy%>
}
if ( $parameter(1)$ = W ) then {
set numeric <tempy; #game:desert_y# - 1>
property <game; desert_y = %tempy%>
}
set string <room; $desertroom$>
goto <#room#>
}
end define
define text <intro>
end define
define text <win>
end define
define text <lose>
end define set string <returning; 1>
set numeric <upper; $ubound(oasis)$>
for <i; 1; %upper%> {
set string <dest; #game:desert_x#,#game:desert_y#> north {
if ( #edgedetect[2]# = FALSE ) then msg <Sorry, you can't go here!> else do <desert_exit(N)>
}if ( #edgedetect[1]# = FALSE ) then create exit east <desert;> else create exit east <desert; do
' This may say "create" but it should be removing the exit... Else re-create exit (put in to get exit back after destroying it.
if ( #edgedetect[2]# = FALSE ) then create exit north <desert;> ' Same here...