2898 lines
66 KiB
Plaintext
2898 lines
66 KiB
Plaintext
Introduction 1
|
||
|
||
Abs 3
|
||
|
||
Action 3
|
||
|
||
Adjustments 4
|
||
|
||
Button 5
|
||
|
||
Continue 5
|
||
|
||
Copy 6
|
||
|
||
Dec 7
|
||
|
||
DefCaveBlk 7
|
||
|
||
DefLandBlk 8
|
||
|
||
DefSpookBlk 8
|
||
|
||
DefWaterBlk 9
|
||
|
||
DefStat 9
|
||
|
||
DefPack 10
|
||
|
||
Display 11
|
||
|
||
DoText 13
|
||
|
||
Drop 14
|
||
|
||
Edit_Player 15
|
||
|
||
EndGame 16
|
||
|
||
Enter 16
|
||
|
||
Failure 16
|
||
|
||
Fight 17
|
||
|
||
Fighting 17
|
||
|
||
Find 18
|
||
|
||
For 19
|
||
|
||
Foreach 20
|
||
|
||
Frame 21
|
||
|
||
GetAction 22
|
||
|
||
GetNum 23
|
||
|
||
GetStr 24
|
||
|
||
Goto 25
|
||
|
||
Gosub 26
|
||
|
||
If 27
|
||
|
||
Inc 28
|
||
|
||
Join 28
|
||
|
||
Leave 29
|
||
|
||
LoadHint 29
|
||
|
||
LoadText 30
|
||
|
||
Locate 30
|
||
|
||
Min, Max 31
|
||
|
||
Move 32
|
||
|
||
Music 33
|
||
|
||
On x Goto, On x Gosub 34
|
||
|
||
Paint 35
|
||
|
||
Pause 35
|
||
|
||
Random 36
|
||
|
||
ReadText 37
|
||
|
||
Restart 38
|
||
|
||
Restore 39
|
||
|
||
Return 39
|
||
|
||
Save 40
|
||
|
||
SavePCX 40
|
||
|
||
Select 41
|
||
|
||
SetBody 43
|
||
|
||
SetBp 44
|
||
|
||
Sgn 45
|
||
|
||
SOUND 45
|
||
|
||
Stats 46
|
||
|
||
Stop 47
|
||
|
||
Success 47
|
||
|
||
System 48
|
||
|
||
Teleport 49
|
||
|
||
Vanish 50
|
||
|
||
Version 51
|
||
|
||
ViewFLI 52
|
||
|
||
ViewPCX 53
|
||
|
||
Voice 54
|
||
|
||
VPlay 55
|
||
|
||
Wait 55
|
||
|
||
While 56
|
||
|
||
Write[ln] 57
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
D C - G A M E S
|
||
|
||
|
||
|
||
|
||
|
||
Version 4.0
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
SCRIPT LANGUAGE REFERENCE GUIDE
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
(c) DC Software, 1989-1995
|
||
|
||
7908 Kettlewood Court
|
||
|
||
Plano Tx 75025
|
||
|
||
(214) 491-1579Introduction
|
||
|
||
Purpose
|
||
|
||
This manual presents all of the language commands and functions
|
||
in alphabetical order and using a consistent presentation for
|
||
all of them. It is not intended to teach you how to write a
|
||
script, but rather to describe in detail each and every command
|
||
and function in the language.
|
||
|
||
The Script Language User's Guide is a more general document that
|
||
tries to teach you how to write scripts. That manual talks
|
||
about the different types of scripts, the reasons for writing
|
||
them, etc. The examples in it include many different commands,
|
||
since they try to show how to do something rather than teach you
|
||
how many different things you can do with a single command.
|
||
|
||
The best way to use these manuals is to read the User's Guide
|
||
from begining to end, and consult the Reference Guide only when
|
||
you want to know more about a particular command or function.
|
||
|
||
If you are comfortable with programming languages, you can
|
||
probably read this manual from side to side and end up knowing a
|
||
lot about the script language itself, but you will not find out
|
||
here the how, when or why of writing scripts.
|
||
|
||
Sincerely,
|
||
|
||
|
||
|
||
David A. HernandezAbs
|
||
|
||
Syntax ret-val = abs( expr );
|
||
|
||
Purpose Returns the absolute value of the numeric expression.
|
||
|
||
Parameters expr
|
||
|
||
Is an arithmetic expression.
|
||
|
||
Returns The absolute value (positive number) of the expression.
|
||
|
||
Remarks The absolute value of a number is the same number, but
|
||
always with a positive sign. Thus, abs(-2) and abs(2) are both
|
||
2.
|
||
|
||
Example ! Check to see if there is a great disparity between the
|
||
character's
|
||
|
||
! experience and the npc's experience.
|
||
|
||
if abs( player.exp - npc.exp ) > 3 then
|
||
|
||
writeln( "Perhaps another time.." );
|
||
|
||
else
|
||
|
||
join; ! NPC joins the party..
|
||
|
||
endif;
|
||
|
||
See Also min, max, sign
|
||
|
||
Action
|
||
|
||
Syntax ret-val = action;
|
||
|
||
Purpose Find out what action invoked the script.
|
||
|
||
Returns The numeric action code which is actually the number of
|
||
the entry point at which execution of the script will begin.
|
||
See Entry Points in the User's Guide for more information on
|
||
these values.
|
||
|
||
Example ! The following code handles both LOOK and EXAMINE, but
|
||
EXAMINE
|
||
|
||
! prints more detail than LOOK.
|
||
|
||
:LOOKING
|
||
|
||
writeln("You see a ", object.name, ". Type ", object.type );
|
||
|
||
if action = EXAMINE then
|
||
|
||
writeln( ", Class ", object.class, ", Weight: ", object.weight
|
||
);
|
||
|
||
endif;
|
||
|
||
...
|
||
|
||
Adjustments
|
||
|
||
Syntax ret-val = adjustments( expr1, ... );
|
||
|
||
Purpose Compute the adjustments to character attributes
|
||
indicated by the given set of values.
|
||
|
||
Parameters expr1, ...
|
||
|
||
Is one or more expressions separated by comma that result each
|
||
in a number between 0 and 255.
|
||
|
||
Returns The sum of the adjustments computed for each value
|
||
independently.
|
||
|
||
Remarks The adjustment is computed using the values in the
|
||
[ATTRIBUTE MODIFIERS] section of the DCCTOKEN.DAT file. The
|
||
default values are:
|
||
|
||
Value Range Effect
|
||
|
||
0 8 Decrease by -1 point
|
||
|
||
9 15 No change
|
||
|
||
16 18 Increase by 1 point
|
||
|
||
19 20 Increase by 2 points
|
||
|
||
21 30 Increase by 3 points
|
||
|
||
31 40 Increase by 4 points (and so on..)
|
||
|
||
|
||
|
||
During regular game play, a character's class determines such
|
||
factors as the weight it can carry, the type of weapons and/or
|
||
armor it can use, it's ability to strike moving targets, etc.
|
||
|
||
In addition to the character class, it's standard attributes
|
||
(such as strength, aim, dexterity, iq, etc.) may increase or
|
||
decrease these factors. For example, the stronger a character
|
||
is, the more weight it can carry.
|
||
|
||
Example ! An ELF has a 1 in 4 chance to detect a trap, adjusted
|
||
by it's dexterity and
|
||
|
||
! intelligence. All others have a 1 in 2 chance adjusted by
|
||
dexterity.
|
||
|
||
if player.type = ELF then
|
||
|
||
L28 = 4 + adjustments( player.dex, player.iq );
|
||
|
||
else
|
||
|
||
L28 = 2 + adjustments( player.dex );
|
||
|
||
endif;
|
||
|
||
if random(L28) = 0 then ... trap activated ... else ... trap
|
||
found ... endif;
|
||
|
||
Button
|
||
|
||
Syntax retval = button;
|
||
|
||
Purpose Find out which mouse button was pressed.
|
||
|
||
Remarks When a mouse event is sent to the CONTROL script, the
|
||
button function tells you which button was pressed. 1 = Right
|
||
Button, 2 = Left Button, 3 = Middle Button.
|
||
|
||
See Also keypress, pointx, pointy
|
||
|
||
Continue
|
||
|
||
Syntax continue;
|
||
|
||
Purpose Terminate execution of the current script.
|
||
|
||
Remarks This command informs the game driver that while the
|
||
script has performed some actions, the DEFAULT action should
|
||
still be taken, if any.
|
||
|
||
Warning Because the OBJECT script contains the default action
|
||
for objects, that script should never end with a continue.
|
||
Doing so would indicate that default action is needed, which may
|
||
result in the object script being run twice for the same action.
|
||
|
||
See Also stop, fight
|
||
|
||
Copy
|
||
|
||
Syntax copy( source, destination [, count] );
|
||
|
||
Purpose To create a copy of an object and place it in a given
|
||
location.
|
||
|
||
Parameters source
|
||
|
||
The copy command can copy an object from curritem, object,
|
||
group.vehicle, npc.bp, npc.body, npc.weapon, npc.armor,
|
||
npc.shield, npc.ring, npc.amulet, npc.staff, player.bp,
|
||
player.body, player.weapon, player.armor, player.shield,
|
||
player.ring, player.amulet and player.staff.
|
||
|
||
destination
|
||
|
||
The destination can be any of the above, except for the generic
|
||
locations curritem and object.
|
||
|
||
count
|
||
|
||
This is the number of copies of the object that are placed at
|
||
the destination. It is an expression that results in a value
|
||
between 1 and 255. If omited, the default is the number of
|
||
copies in the source.
|
||
|
||
Remarks The destination must be appropriate to the type of
|
||
object, for example, you can't move an object of type amulet to
|
||
player.shield.
|
||
|
||
When an object is copied or moved to the generic destination
|
||
.body, it will be placed in the correct body section according
|
||
to the object's type.
|
||
|
||
When the count is greater than one, copies are moved one by
|
||
one. The character's load is checked before each move to verify
|
||
that the character can carry the object. If the character's
|
||
maximum load is reached before all objects have been copied, the
|
||
failure variable is set to the actual number of copies moved.
|
||
|
||
Examples ! Copy 5 instances of an object from npc.bp to player.bp
|
||
|
||
copy( npc.bp, player.bp, 5 );
|
||
|
||
if failure then
|
||
|
||
L6 = failure;
|
||
|
||
writeln( player.name, " could only carry ", L6 );
|
||
|
||
drop( npc.bp, - L6 ); ! Place the rest on the floor.. !
|
||
|
||
endif;
|
||
|
||
See Also move, failure, drop
|
||
|
||
Dec
|
||
|
||
Syntax dec( variable [, expr] )
|
||
|
||
Parameters variable is any numeric variable or attribute that
|
||
can be modified from within a script.
|
||
|
||
expr
|
||
|
||
is an optional expression that results in a number that will be
|
||
substracted from the variable. If omited, the default is 1.
|
||
|
||
Remarks The decrement command will substract the amount
|
||
indicated (1 if none is given) from the variable or attribute
|
||
specified. If the expression is negative, then the double
|
||
substraction results in an addition.
|
||
|
||
Example ! An NPC strikes the player
|
||
|
||
dec( player.hp, npc.weapon.damage );
|
||
|
||
DefCaveBlk
|
||
|
||
Syntax ret-val = DefCaveBlk( which );
|
||
|
||
Purpose Returns a graphics block number for cave and dungeon
|
||
monsters. (Class CAVE_MONSTER)
|
||
|
||
Parameters which
|
||
|
||
Identifies which of the five graphics blocks for random monsters
|
||
you want. The value must be between 0 and 4, with 0 being the
|
||
smallest monster and 4 being the toughest.
|
||
|
||
Returns ret-val
|
||
|
||
Is a graphics block record number (between 0 and 255) to be used
|
||
for random monsters that are found in caves or dungeons.
|
||
|
||
Remarks The DCWORLD parameter configuration screen is used to
|
||
set the graphics blocks that will be used to generate random
|
||
monsters.
|
||
|
||
See Also DefLandBlk, DefWaterBlk, DefSpookBlk, DefStat, DefPack
|
||
|
||
DefLandBlk
|
||
|
||
Syntax ret-val = DefLandBlk( which );
|
||
|
||
Purpose Returns a graphics block number for outdoor, land based
|
||
monsters. (Class LAND_MONSTER).
|
||
|
||
Parameters which
|
||
|
||
Identifies which of the five graphics blocks for random monsters
|
||
you want. The value must be between 0 and 4, with 0 being the
|
||
smallest monster and 4 being the toughest.
|
||
|
||
Returns ret-val
|
||
|
||
Is a graphics block record number (between 0 and 255) to be used
|
||
for random monsters that are land based.
|
||
|
||
Remarks The DCWORLD parameter configuration screen is used to
|
||
set the graphics blocks that will be used to generate random
|
||
monsters.
|
||
|
||
See Also DefCaveBlk, DefWaterBlk, DefSpookBlk, DefStat, DefPack
|
||
|
||
DefSpookBlk
|
||
|
||
Syntax ret-val = DefSpookBlk( which );
|
||
|
||
Purpose Returns a graphics block number for monsters that you
|
||
might find in places like hounted houses or cementeries (Class
|
||
SPOOK_MONSTER).
|
||
|
||
Parameters which
|
||
|
||
Identifies which of the five graphics blocks for random monsters
|
||
you want. The value must be between 0 and 4, with 0 being the
|
||
smallest monster and 4 being the toughest.
|
||
|
||
Returns ret-val
|
||
|
||
Is a graphics block record number (between 0 and 255) to be used
|
||
for random monsters of this type..
|
||
|
||
Remarks The DCWORLD parameter configuration screen is used to
|
||
set the graphics blocks that will be used to generate random
|
||
monsters.
|
||
|
||
See Also DefLandBlk, DefCaveBlk, DefWaterBlk, DefStat, DefPack
|
||
|
||
DefWaterBlk
|
||
|
||
Syntax ret-val = DefWaterBlk( which );
|
||
|
||
Purpose Returns a graphics block number for aquatic monsters
|
||
(monsters that swim, class WATER_MONSTER).
|
||
|
||
Parameters which
|
||
|
||
Identifies which of the five graphics blocks for random monsters
|
||
you want. The value must be between 0 and 4, with 0 being the
|
||
smallest monster and 3 being the toughest. Number 4 is used to
|
||
represent a Pirate's Ship, which requires special handling to
|
||
make sure a pirate's ship doesn't appear on a small pond of
|
||
water in the middle of town!
|
||
|
||
Returns ret-val
|
||
|
||
Is a graphics block record number (between 0 and 255) to be used
|
||
for random monsters that are land based.
|
||
|
||
Remarks The DCWORLD parameter configuration screen is used to
|
||
set the graphics blocks that will be used to generate random
|
||
monsters.
|
||
|
||
See Also DefLandBlk, DefCaveBlk, DefSpookBlk, DefStat, DefPack
|
||
|
||
DefStat
|
||
|
||
Syntax ret-val = DefStat( which );
|
||
|
||
Purpose Returns an index into the statistics file (PLAYER.DTA)
|
||
which holds the statistics that will be used for small, medium,
|
||
large and pirate monsters.
|
||
|
||
Parameters which
|
||
|
||
Is the size of the character you are creating. 0=Small,
|
||
1=Medium and 2=Large, 3=Pirates.
|
||
|
||
Returns ret-val
|
||
|
||
Is the statistics record number (npc.stats) which holds the
|
||
generic statistics for the size of character you indicated.
|
||
|
||
Remarks The DCWORLD parameter configuration screen is used to
|
||
set the 4 values that will be used as statistics records for
|
||
random monsters.
|
||
|
||
See Also DefLandBlk, DefCaveBlk, DefSpookBlk, DefPack
|
||
|
||
DefPack
|
||
|
||
Syntax ret-val = DefPack( which );
|
||
|
||
Purpose Returns an index into the statistics file (PLAYER.DTA)
|
||
which holds the statistics record whose backpack contains the
|
||
items that will be used to generate random treasure.
|
||
|
||
Parameters which
|
||
|
||
Is which of the 3 backpacks should be used (0, 1 or 2).
|
||
|
||
Returns ret-val
|
||
|
||
Is the statistics record number (npc.stats) whose backpack
|
||
contains items to be used for random treasure.
|
||
|
||
Remarks The DCWORLD parameter configuration screen is used to
|
||
select the statistics records to be used. The statistics screen
|
||
is used to modify the records themselves. The default records
|
||
contain Potions, Rings & Amulets, and Magic Staffs respectively.
|
||
|
||
See Also DefLandBlk, DefCaveBlk, DefSpookBlk, DefStat
|
||
|
||
|
||
|
||
Display
|
||
|
||
Syntax display ( group );1
|
||
|
||
display [$[2]] ( {player|npc} [, {matching|type}] );2
|
||
|
||
display [$[2]] ( {player.body|npc.body} );3
|
||
|
||
display [$] ( string [, value] [, string ... ] );4
|
||
|
||
Purpose Display a list of characters, items, etc, on the menu
|
||
area.
|
||
|
||
Parameters group, player, npc, player.body and npc.body
|
||
|
||
Identify what you want to display in the menu area.
|
||
|
||
matching
|
||
|
||
Used to indicate that only items that match the items of the
|
||
type carried by the current npc should be displayed. (Used by
|
||
merchants)
|
||
|
||
type
|
||
|
||
is a number between 0 and 255 (tokens may be used).
|
||
|
||
string
|
||
|
||
is a text string enclosed in quotes.
|
||
|
||
value
|
||
|
||
is either a number (constant or token) or a single variable or
|
||
attribute whose value is numeric. No arithmetic expressions are
|
||
permited.
|
||
|
||
Remarks The display command is a powerful tool to display a list
|
||
of values in the menu area of the screen. If a $ is specified,
|
||
then values will be displayed as gold or silver pieces (1gp =
|
||
10sp). The 2 following the $
|
||
|
||
indicates that the values should be divided by 2 before being
|
||
displayed.
|
||
|
||
|
||
|
||
1) Displays the current members of the playing party
|
||
|
||
2) Displays the contents of a character's backpack. If matching
|
||
is specified, it indicates that only items that match the types
|
||
of items in the current npc's backpack should be displayed. If
|
||
type is provided, only items of the specified type are displayed.
|
||
|
||
3) Displays the set of items being worn by a character (weapon,
|
||
armor, shield, amulet, ring and staff).
|
||
|
||
4) Displays a list of strings with or without values associated
|
||
with it.
|
||
|
||
Examples ! Display the current members
|
||
|
||
display( group );
|
||
|
||
|
||
|
||
! Display the current player's inventory
|
||
|
||
display( player );
|
||
|
||
|
||
|
||
! Display a merchant's inventory (with prices)
|
||
|
||
display$( npc );
|
||
|
||
|
||
|
||
! Display the player's items that the merchant might want to
|
||
buy..
|
||
|
||
display$2( player, matching );
|
||
|
||
|
||
|
||
! Display a list of items and a price (numbers in silver pieces)
|
||
|
||
display$( "Magic Ring", 300, "Short Sword", 150, "Banana", 1 );
|
||
|
||
|
||
|
||
! Display a list with numbers (not $)
|
||
|
||
display( "Age", 27, "Strength", npc.str, "Max Weight",
|
||
npc.mload);
|
||
|
||
See Also select
|
||
|
||
DoText
|
||
|
||
Syntax ret-val = dotext( str-val );
|
||
|
||
Purpose To perform keyword analysis compatible with pervious
|
||
prior versions of the DCGAMES system.
|
||
|
||
Parameters str-val
|
||
|
||
Is either a word surrounded by double quotes (string constant),
|
||
or the string variable S0.
|
||
|
||
Returns ret-val
|
||
|
||
Returns the index of the keyword in the text record (1-16) if
|
||
found, 0 if not found.
|
||
|
||
Remarks This compares the keyword str-val against the first 8
|
||
characters of the string variables S1 through S16. If a match
|
||
is found, then the text found in the variable that had the
|
||
matching keyword (minus the keyword) is displayed on the screen
|
||
and the number (1-16) of the string that had the match is
|
||
returned. Otherwise, a 0 is returned and no message is
|
||
displayed.
|
||
|
||
If a SoundBlaster card is present, and the current character or
|
||
object being processed has a voice file associated with it
|
||
(voice attribute), then the voice file (VOICE###.VFL, where ###
|
||
is the value of the voice attribute), is searched for the same
|
||
keyword, and if present, the corresponding recorded voice is
|
||
played.
|
||
|
||
If the voice file is not present or the keyword is not found in
|
||
the voice file, but the SBTALKER text-to-speach translator is
|
||
present (memory resident), then the text that followed the
|
||
keyword will be spoken in addition to being displayed.
|
||
|
||
Example ! Talk to the player..
|
||
|
||
:TALKHERE
|
||
|
||
L9 = getstr( "Hello", "King", "Queen", "Treasure", "Key", "Door"
|
||
);
|
||
|
||
if NOT dotext( s0 ) then ! The text record didn't handle the
|
||
keyword..
|
||
|
||
on L9 gosub XHELLO, XKING, XQUEEN, XGOLD, XKEY, XDOOR;
|
||
|
||
endif;
|
||
|
||
if S0 <> "Bye" goto TALKHERE;
|
||
|
||
stop;
|
||
|
||
See Also voice, vplay, write, writeln
|
||
|
||
Drop
|
||
|
||
Syntax drop( item [, howmany [, x [, y]]] );
|
||
|
||
Purpose Get rid of an item that a character is carrying or
|
||
riding.
|
||
|
||
Parameters item
|
||
|
||
Is the item to be dropped, which must be one of: group.vehicle,
|
||
curritem, player.bp, player.body, player.weapon, player.armor,
|
||
player.shield, player.ring, player.amulet, player.staff, npc.bp,
|
||
npc.body, etc.
|
||
|
||
howmany
|
||
|
||
Is the number of items to be dropped. 0 means all. A negative
|
||
means that the objects are not to be removed, but rather
|
||
duplicated. The default value is 1.
|
||
|
||
x, y
|
||
|
||
Is the location in the world where the object will be placed.
|
||
The default values are the current player's location.
|
||
|
||
Remarks The item will be added to the world's list of objects
|
||
with a count attribute as indicated by the howmany parameter.
|
||
|
||
If the howmany parameter is 0, the current count attribute of
|
||
the item being dropped is used.
|
||
|
||
If the howmany parameter is negative, it indicates that a copy
|
||
should be made of the items. The originals are left intact.
|
||
|
||
If the absolute value of the howmany parameter is greater than
|
||
the count attribute of the item, then howmany is used. (i.e.,
|
||
you end up with more copies than you had!).
|
||
|
||
Examples ! The following are all equivalent
|
||
|
||
drop( curritem ); ! If the current item is the current backpack
|
||
item
|
||
|
||
drop( player.bp );
|
||
|
||
drop( player.bp, 1 );
|
||
|
||
drop( player.bp, 1, player.x, player.y );
|
||
|
||
|
||
|
||
! If the npc has a weapon, drop it one square to the right of
|
||
the player
|
||
|
||
if npc.weapon.count then
|
||
|
||
drop( npc.weapon, npc.count, player.x+1, player.y );
|
||
|
||
endif;
|
||
|
||
Edit_Player
|
||
|
||
Syntax edit_player( which [, points, min, max, [flags, ...]] );
|
||
|
||
Purpose Allow access to the player editing screen from the
|
||
scripts.
|
||
|
||
Parameters which
|
||
|
||
Indicates which party member is to be edited. The value is in
|
||
the range 1 to 6.
|
||
|
||
points
|
||
|
||
You may specify the number of points that the player may
|
||
allocate to the different attributes. Default is 25.
|
||
|
||
min
|
||
|
||
The player may not set any attribute below this threshold.
|
||
Default 9.
|
||
|
||
max
|
||
|
||
The player may not set any attribute above this threshold.
|
||
Default 20.
|
||
|
||
flags
|
||
|
||
Edit flags. A 1 allows editing of that field, a 0 does not.
|
||
Default is 1. The list of flags is shown in the example.
|
||
|
||
Remarks Usually called from the INITGAME script during game
|
||
initialization to allow the player to configure his/her
|
||
character. See that script for an extended example.
|
||
|
||
Example ! Allow player to customize his character within the
|
||
limits:
|
||
|
||
setplayer(1);
|
||
|
||
player.class = ELF; ! Fixed class
|
||
|
||
player.mstr = 12; ! Fix Strength
|
||
|
||
edit_player( 1, ! Main Character
|
||
|
||
25, ! Distribute 30 points
|
||
|
||
8, ! Don't allow a value lower than 8
|
||
|
||
25, ! Don;t allow a value higher than 25
|
||
|
||
1, ! Allow edit "NAME"
|
||
|
||
0, ! Don't allow edit of character class
|
||
|
||
1, ! Allow player to select a tile (graphics block)
|
||
|
||
0 ! Don't allow edit of the first attribute (Strength)
|
||
|
||
); ! Allow edit of all other attributes
|
||
|
||
|
||
|
||
EndGame
|
||
|
||
Syntax endgame;
|
||
|
||
Purpose Terminate the game. You have either won or lost, but
|
||
you cannot continue.
|
||
|
||
Remarks The game displays the copyright screen and returns the
|
||
user to DOS. The assumption is that an appropriate ending
|
||
scenario has been executed by the script.
|
||
|
||
Enter
|
||
|
||
Syntax enter( door# );
|
||
|
||
Purpose Send the playing party through a specific door, wherever
|
||
it might lead.
|
||
|
||
Parameters door#
|
||
|
||
A numeric expression that indicates which door should in the
|
||
current world you want to take.
|
||
|
||
Remarks The transfer through the door does not take place until
|
||
after the script ends execution. You still need to use the stop
|
||
or continue option to end the script.
|
||
|
||
Failure
|
||
|
||
Syntax ret-val = failure;
|
||
|
||
Purpose To find out if the last major operation failed.
|
||
|
||
Returns ret-val
|
||
|
||
The returns will be non-zero (TRUE) if the last major operation
|
||
failed to complete successfuly.
|
||
|
||
Example ! A merchant sells an item to a player..
|
||
|
||
writeln( "Here is your ", npc.bp.name );
|
||
|
||
copy( npc.bp, player.bp );
|
||
|
||
if failure then
|
||
|
||
writeln( "The ", npc.bp.name, " is placed on the floor.." );
|
||
|
||
drop( npc.bp );
|
||
|
||
endif;
|
||
|
||
See Also success
|
||
|
||
Fight
|
||
|
||
Syntax fight;
|
||
|
||
Purpose Go into fighting mode against the currently selected npc
|
||
character.
|
||
|
||
Remarks The type of the npc does not have to be HOSTILE. The
|
||
fight may be against any character of any type.
|
||
|
||
The script is immediatly ended and the fight starts right away.
|
||
No stop or continue command is needed.
|
||
|
||
Warning Do not use fight after you have done enter. The fight
|
||
takes place before the transfer is made, but the scripts that
|
||
execute during and immediately after the fight may get confused.
|
||
The desired behaviour for this situation is yet to be
|
||
determined..
|
||
|
||
See Also fighting
|
||
|
||
Fighting
|
||
|
||
Syntax ret-val = fighting;
|
||
|
||
Purpose To find out if the script is executing during a fight.
|
||
|
||
Returns ret-val
|
||
|
||
A non-zero value (TRUE) is returned when a fight is taking place.
|
||
|
||
Remarks Your script may behave differently depending on whether
|
||
you are in a fight or not. For example, certain spells may not
|
||
work during a fight.
|
||
|
||
During a fight, the party and the npc are separated into their
|
||
respective individuals, and all other characters are removed
|
||
from the screen.
|
||
|
||
The party may not leave the area during a fight, but pressing
|
||
the ESC key will exit fighting mode and allow the party to
|
||
attempt to out-run the enemy.
|
||
|
||
See Also fight
|
||
|
||
Find
|
||
|
||
Syntax retval = find( where [, what [, type]] );
|
||
|
||
Purpose Find an object or character.
|
||
|
||
Parameters where
|
||
|
||
Identifies where you want to search for the object. It can be
|
||
one of group, object, npc, player, npc.bp, player.bp, npc.body
|
||
or player.body.
|
||
|
||
what
|
||
|
||
Is the name of the item or person you are looking for. It must
|
||
either be a string constant ("like this") or a string attribute
|
||
of a character or object.
|
||
|
||
type
|
||
|
||
If present, it indicates that the item must not only have the
|
||
given name, but must also have the given type attribute. The
|
||
value is either a numeric constant, a numeric token or the type
|
||
attribute of a character or object.
|
||
|
||
Returns The index attribute of the item (starts with 0), or
|
||
negative if the item was not found.
|
||
|
||
Remarks When group is searched, what is a character name, and
|
||
success indicates that the character is a member of the group.
|
||
|
||
When object is searched, the current world is searched for an
|
||
object with the given name (and type, if given).
|
||
|
||
When npc is searched, the current world is searched for an
|
||
object with the given name (and type, if given).
|
||
|
||
When player is given, the backpacks of every player in the
|
||
current group is searched for the given object. The value
|
||
returned is the index of the player carrying the object, not the
|
||
index of the object in the backpack.
|
||
|
||
When npc.bp or player.bp is specified, the backpack of the
|
||
character is searched for the given object.
|
||
|
||
When npc.body or player.body is specified, the items currently
|
||
worn by the character are searched (weapon, armor, shield, ring,
|
||
amulet and staff).
|
||
|
||
For
|
||
|
||
Syntax for localvar = expr1 to expr2 [by value] do statements;
|
||
endfor;
|
||
|
||
Purpose Execute a set of statements a given number of times.
|
||
|
||
Parameters localvar
|
||
|
||
Is a local variable which will be used to hold the loop's
|
||
current value.
|
||
|
||
expr1
|
||
|
||
Is the initial value that will be assigned to the local variable.
|
||
|
||
expr2
|
||
|
||
Is an expression against which the local variable is compared to
|
||
determine if the statements should be executed or if the loop
|
||
has ended.
|
||
|
||
value
|
||
|
||
Is a numeric constant (may be negative) which is added to the
|
||
local variable at the end of every iteration (after the
|
||
statements are executed).
|
||
|
||
Remarks Expr1 is evaluated once, at the begining of the loop,
|
||
but expr2 is evaluated every time after the value has been added
|
||
to localvar. The statements between the do and endfor keywords
|
||
will be executed again and again until local variable's value
|
||
becomes greater (or less if the value is negative) than expr2.
|
||
|
||
Examples ! Search the npc's backpack for an object (could use
|
||
find instead!).
|
||
|
||
for L0 = 0 to 15 do
|
||
|
||
setbp( npc, L0 );
|
||
|
||
if npc.bp.count > 0 and npc.bp.name = "The Thing" then
|
||
|
||
writeln( "I found it!" );
|
||
|
||
endif;
|
||
|
||
endfor;
|
||
|
||
if L0 = 16 then writeln( "Didn't find it!" ); endif;
|
||
|
||
See Also foreach, find
|
||
|
||
|
||
|
||
Foreach
|
||
|
||
Syntax foreach item do statements; endfor;
|
||
|
||
Purpose Allow you to process all players, npcs or objects, in
|
||
order.
|
||
|
||
Parameters item
|
||
|
||
Is one of player, npc or object.
|
||
|
||
Remarks If the item is player, then the player variable will be
|
||
set to each of the members of the group, consecutively.
|
||
|
||
If the item is npc, then the npc variable will be set to every
|
||
character in the current world, consecutively. Warning: when you
|
||
are fighting, the list of npcs refers to the monsters you are
|
||
fighting. Other npcs are not available.
|
||
|
||
If the item is object, then the object variable will be set to
|
||
each of the objects in the current world, consecutively.
|
||
|
||
Examples ! Drop the weapons carried by every member of the group
|
||
|
||
foreach player do
|
||
|
||
if player.weapon.count then
|
||
|
||
drop( player.weapon );
|
||
|
||
endif;
|
||
|
||
endif;
|
||
|
||
! Check to see if there is a character named 'Morris' in this
|
||
world.
|
||
|
||
! (Could have used the find command)
|
||
|
||
foreach npc do
|
||
|
||
if npc.name = "Morris" then
|
||
|
||
writeln( "Found Him!" );
|
||
|
||
endif;
|
||
|
||
endfor;
|
||
|
||
! Find out if there is any object at a specific location in the
|
||
world
|
||
|
||
foreach object do
|
||
|
||
if object.x = 30 and object.y = 23 then
|
||
|
||
writeln("Object ", object.name, " is on the hot spot.."
|
||
);
|
||
|
||
endif;
|
||
|
||
endfor;
|
||
|
||
Frame
|
||
|
||
Syntax frame( x, y, block# );
|
||
|
||
Purpose Display a system graphics block over the current
|
||
graphics block at the x and y location within the current world.
|
||
|
||
Parameters x
|
||
|
||
Is the horizontal position for the frame. May be an expression.
|
||
|
||
y
|
||
|
||
Is the vertical position for the frame. May be an expression.
|
||
|
||
block#
|
||
|
||
Is the graphics block record number from the system graphics
|
||
file which contains the frame you wish to display.
|
||
|
||
Remarks If the x, y position is not on the screen, the frame is
|
||
not shown.
|
||
|
||
The frame is X-ORed (over-imposed) on top of the graphics at
|
||
the given location. To remove the frame, you re-display the
|
||
frame at the same location.
|
||
|
||
Example ! Draw a SPLAT type frame on top of the group to
|
||
indicate they have
|
||
|
||
! been hit by something (i.e. the members suffered some damage)
|
||
|
||
frame( group.x, group.y, SYS_SPLAT );
|
||
|
||
wait(1);
|
||
|
||
frame( group.x, group.y, SYS_SPLAT );
|
||
|
||
! Draw a bullet being shot from the current player to an npc.
|
||
|
||
! (This algorithm doesn't really work very well. It is just an
|
||
example)
|
||
|
||
if player.x < npc.x then L0 = 1; else L0 = -1; endif;
|
||
|
||
if player.y < npc.y then L1 = 1; else L1 = -1; endif;
|
||
|
||
for L3 = player.x to npc.x by L0 do
|
||
|
||
for L4 = player.y to npc.y by L1 do
|
||
|
||
frame( L3, L4, SYS_BULLET );
|
||
|
||
wait(1);
|
||
|
||
frame(L3, L4, SYS_BULLET );
|
||
|
||
endfor;
|
||
|
||
endfor;
|
||
|
||
GetAction
|
||
|
||
Syntax retval = getaction;
|
||
|
||
Purpose Allows the player to point with the mouse cursor and
|
||
click at something, or to type a character on the keyboard.
|
||
|
||
Returns retval
|
||
|
||
Contains the value of the key pressed or mouse event. In the
|
||
control script, the keypress variable contains the current
|
||
action, so see that script to figure out how to interpret the
|
||
retval information.
|
||
|
||
See Also keypress, pointx, pointy, button
|
||
|
||
GetNum
|
||
|
||
Syntax retval = getnum( string [, low [, high] ] );
|
||
|
||
Purpose This function displays a message and asks the user to
|
||
enter a numeric value between low and high inclusive. The value
|
||
that the user types is returned as the function's value.
|
||
|
||
Parameters string
|
||
|
||
Is a string to be displayed in the text area of the game screen,
|
||
before the user is asked to enter a number.
|
||
|
||
low
|
||
|
||
Is the minimum allowed value. It may be an expression. The
|
||
default is 0.
|
||
|
||
high
|
||
|
||
Is the maximum allowed value. It may be an expression. The
|
||
default value is 32767.
|
||
|
||
Returns This function returns a number between low and high as
|
||
typed by the game player, or -1 if the game player pressed the
|
||
ESCape key.
|
||
|
||
Remarks The low value is returned if you press the ENTER key.
|
||
|
||
The value -1 is returned if you press the ESC (escape) key.
|
||
|
||
Example ! Drop some (or all) of a certain object
|
||
|
||
L6 = getnum( "Drop how many", 0, player.bp.count );
|
||
|
||
if L6 > 0 then
|
||
|
||
drop( player.bp.count, L6 );
|
||
|
||
endif;
|
||
|
||
|
||
|
||
GetStr
|
||
|
||
Syntax retval = getstr( "string" ,... );
|
||
|
||
Purpose Asks the user to type in something (a word), then
|
||
compares the keyword entered with the list of strings and
|
||
returns the numeric index of the string that matches (if any).
|
||
|
||
Parameters "string ",...
|
||
|
||
Is a list of up to 255 keywords.
|
||
|
||
Returns The getstr command will compare the keyword typed by the
|
||
player to the list of words provided as parameters and return
|
||
the position of the word in the list (if found).
|
||
|
||
Remarks You can list up to 255 strings may be listed.
|
||
|
||
Only the first 8 characters of the string are compared.
|
||
|
||
The comparison is case insensitive (i.e. "Hello" is equal to
|
||
"HELLO").
|
||
|
||
If you press the ESCape key, the value returned is -1.
|
||
|
||
If the word is not found, the value returned is -2 and the word
|
||
is left in the string variable s0.
|
||
|
||
Examples ! Everyone died, so...
|
||
|
||
writeln( "What do you want to do (Restore, Restart, Quit)" );
|
||
|
||
L3 = getstr( "Restore", "Restart", "Quit");
|
||
|
||
on L3 goto :my_restore, :my_restart, :my_quit;
|
||
|
||
if L3 = -2 then writeln( "I don't know what you mean by ", s0 );
|
||
|
||
stop;
|
||
|
||
:my_quit
|
||
|
||
endgame;
|
||
|
||
:my_restore
|
||
|
||
...
|
||
|
||
:my_restart
|
||
|
||
...
|
||
|
||
See Also select, on x goto
|
||
|
||
Goto
|
||
|
||
Syntax goto LABEL;
|
||
|
||
Purpose Within the script, transfer the execution to the
|
||
indicated label.
|
||
|
||
Remarks The LABEL must be defined elsewhere in the script as
|
||
follows
|
||
|
||
:LABEL
|
||
|
||
Execution of the script continues on the first statement after
|
||
the indicated label.
|
||
|
||
Example ! Transfer execution
|
||
|
||
goto SKIP;
|
||
|
||
writeln( "You should NOT see this line" );
|
||
|
||
:SKIP
|
||
|
||
writeln( "You should see this one instead" );
|
||
|
||
See Also on x goto, if expr goto, gosub, on x gosub and if expr
|
||
gosub
|
||
|
||
Gosub
|
||
|
||
Syntax gosub LABEL;
|
||
|
||
Purpose Within the script, transfer the execution to the
|
||
indicated label.
|
||
|
||
Remarks The LABEL must be defined elsewhere in the script as
|
||
follows
|
||
|
||
:LABEL
|
||
|
||
Execution of the script continues on the first statement after
|
||
the indicated label.
|
||
|
||
When the return statement is found, execution returns to the
|
||
first statement after the gosub statement.
|
||
|
||
This statement is used to perform a series of statements at
|
||
many different points within the same script.
|
||
|
||
Example ! Transfer execution
|
||
|
||
gosub SKIP;
|
||
|
||
writeln( "You should see this message SECOND" );
|
||
|
||
stop;
|
||
|
||
|
||
|
||
:SKIP
|
||
|
||
writeln( "You should see this message FIRST!" );
|
||
|
||
return;
|
||
|
||
writeln( "You should NOT see this message at all" );
|
||
|
||
See Also return, on x gosub and if expr gosub
|
||
|
||
If
|
||
|
||
Syntax if expr1 then statements1;
|
||
|
||
[elsif expr2 then statements2; ...]
|
||
|
||
[else statements3;]
|
||
|
||
endif;
|
||
|
||
or
|
||
|
||
if expr1 goto label;
|
||
|
||
or
|
||
|
||
if expr1 gosub label;
|
||
|
||
Purpose Execute a group of statements only if the expresion expr
|
||
is true.
|
||
|
||
Parameters expr1, expr2, ...
|
||
|
||
These are logical expressions which evaluate to a True or False
|
||
value. True is any non-zero value. False is zero.
|
||
|
||
statements1, statements2, ...
|
||
|
||
These are the statements to be executed the related expression
|
||
is true.
|
||
|
||
statments3
|
||
|
||
These are the statements to be executed if NONE of the given
|
||
expressions are true (i.e. they are all false).
|
||
|
||
Remarks In the second and third form, the goto or gosub are
|
||
executed only if the expression expr1 evaluates to a non-zero
|
||
value.
|
||
|
||
Examples ! Drop the current player's weapon
|
||
|
||
if player.weapon.count > 0 then
|
||
|
||
drop( player.weapon );
|
||
|
||
else
|
||
|
||
writeln( "You are not wielding a weapon" );
|
||
|
||
endif;
|
||
|
||
Inc
|
||
|
||
Syntax inc( variable [, expr] )
|
||
|
||
Parameters variable is any numeric variable or attribute that
|
||
can be modified from within a script.
|
||
|
||
expr
|
||
|
||
is an optional expression that results in a number that will be
|
||
added to the variable. If omited, the default is 1.
|
||
|
||
Remarks The increment command will add the amount indicated (1
|
||
if none is given) to the variable or attribute specified. If
|
||
the expression is negative, the effect will be to decrement the
|
||
value.
|
||
|
||
Example ! An player drinked some healing potion, so restore some
|
||
points..
|
||
|
||
inc( player.hp, curritem.units );
|
||
|
||
Join
|
||
|
||
Syntax join;
|
||
|
||
Purpose Cause the npc character to join the current party.
|
||
|
||
Remarks The current npc is removed from the world in which it
|
||
exists and added to the player's party.
|
||
|
||
The npc variable is cleared (i.e. no npc is selected any
|
||
longer).
|
||
|
||
The party can hold a maximum of 6 players. If the party is
|
||
full, the npc will NOT join the party.
|
||
|
||
Leave
|
||
|
||
Syntax leave( whom );
|
||
|
||
Purpose Cause a player to leave the party.
|
||
|
||
Remarks The player with index whom in the group will leave the
|
||
party.
|
||
|
||
Note that the main player (index 0 is not allowed to leave the
|
||
party.
|
||
|
||
Note also that the player's script is NOT invoked to give it a
|
||
chance to refuse to leave. This is in contrast to the game
|
||
driver's V)acate command (player pressed letter V), which
|
||
invokes the player's script, and if the script either does not
|
||
handle the action, or terminates with continue, then invokes the
|
||
CONTROL script which in turn executes the a leave command.
|
||
|
||
Example ! When the party enters the King's Castle, if the king
|
||
is a member of the
|
||
|
||
! party it means that the King has been rescued and now should
|
||
leave the
|
||
|
||
! party and go sit with the queen..
|
||
|
||
if world.name = "King's Castle" then
|
||
|
||
L0 = find( group, "The King" );
|
||
|
||
if L0 > 0 then ! Found the
|
||
king
|
||
|
||
writeln( "The king leaves you and heads for the throne
|
||
room.." );
|
||
|
||
L1 = find( npc, "The Queen" ); ! Find out where the
|
||
Queen is
|
||
|
||
npc.index = L1; ! Select her as
|
||
current npc.
|
||
|
||
leave( L0, npc.x+1, npc.y ); ! Place the king next
|
||
to the queen.
|
||
|
||
endif;
|
||
|
||
endif;
|
||
|
||
LoadHint
|
||
|
||
Syntax loadhint;
|
||
|
||
Purpose Load a one-line 'hint' from the hint file (HINT.DTA).
|
||
|
||
Remarks Hints are placed in the HINT.DTA file using the DCWORLD
|
||
game builder.
|
||
|
||
The hint is selected at random and placed in variable S0.
|
||
|
||
Example ! Display a hint
|
||
|
||
loadhint;
|
||
|
||
writeln( "The beggar gives you a hint:", S0 );
|
||
|
||
LoadText
|
||
|
||
Syntax loadtext( text-record-# );
|
||
|
||
Purpose To load a text record (16 lines of text) from the
|
||
TEXT.DTA file into the 16 string variables S1 through S16.
|
||
|
||
Remarks The text-record-# is an expression that evaluates to a
|
||
number between 0 and the number of text records in the TEXT.DTA
|
||
file (minus one).
|
||
|
||
The given record is loaded into the S1 through S16 (not S0).
|
||
|
||
See Also dotext
|
||
|
||
Locate
|
||
|
||
Syntax ret-val = locate [ ( object | npc [, x, y ] ) ] ;
|
||
|
||
Purpose If no X,Y is given, the player is asked to point on the
|
||
screen using the keyboard or the mouse. If an object or npc is
|
||
found at that location, it becomes the current object or npc
|
||
respectively.
|
||
|
||
Returns ret-val
|
||
|
||
The distance from the object or npc found (largest of x or y
|
||
distance).
|
||
|
||
Remarks If the first parameter is omited, the player is allowed
|
||
to point to either an object or a character. If it is given,
|
||
then the player must point to an object or an npc depending on
|
||
the parameter that was specified.
|
||
|
||
When you specify the X/Y location, that location is verified
|
||
immediatly, and the user is NOT asked to point at all. See the
|
||
code in the CONTROL script for handling movement and checking
|
||
for guards!.
|
||
|
||
Examples ! Attack someone
|
||
|
||
writeln( "Attack who?" );
|
||
|
||
L2 = locate(npc);
|
||
|
||
if L2 < 0 then stop; ! No one
|
||
|
||
if L2 > 2 then writeln( "You must get closer.." );
|
||
|
||
! goto attack_code;
|
||
|
||
! Check before you move to the right..
|
||
|
||
if locate(npc,player.x + 1, player.y) then
|
||
|
||
writeln( "Can't go there!" );..
|
||
|
||
Min, Max
|
||
|
||
Syntax ret-val = min( expr [, expr ...] ); or
|
||
|
||
ret-val = max( expr [, expr ...] );
|
||
|
||
Purpose To obtain the smallest (or largest) of a set of values.
|
||
|
||
Parameters expr
|
||
|
||
Two or more arithmetic expressions separated by commas. A
|
||
maximum of 255 expressions are allowed.
|
||
|
||
Examples ! Look for the object with the highest weight in the
|
||
player's backpack
|
||
|
||
L0 = -1;
|
||
|
||
foreach player.bp do
|
||
|
||
L0 = max( L0, player.bp.weight );
|
||
|
||
endfor;
|
||
|
||
if L0 > 0 then
|
||
|
||
writeln( "The heavyest object has a weight of ", L0, "lbs" );
|
||
|
||
endif;
|
||
|
||
Move
|
||
|
||
Syntax move( source, destination [, count] );
|
||
|
||
Purpose To create a copy of an object and place it in a given
|
||
location.
|
||
|
||
Parameters source
|
||
|
||
The move command can move an object from curritem, object,
|
||
group.vehicle, npc.bp, npc.body, npc.weapon, npc.armor,
|
||
npc.shield, npc.ring, npc.amulet, npc.staff, player.bp,
|
||
player.body, player.weapon, player.armor, player.shield,
|
||
player.ring, player.amulet and player.staff.
|
||
|
||
destination
|
||
|
||
The destination can be any of the above, except for the generic
|
||
locations curritem and object.
|
||
|
||
count
|
||
|
||
This is the number of copies of the object to be moved. It must
|
||
be a value between 1 and the actual number of copies (.count
|
||
attribute).
|
||
|
||
Remarks The destination must be appropriate to the type of
|
||
object, for example, you can't move an object of type amulet to
|
||
player.shield.
|
||
|
||
When an object is copied or moved to the generic destination
|
||
.body, it will be placed in the correct body section according
|
||
to the object's type.
|
||
|
||
If there is no space to put the object in the destination, the
|
||
operation fails, and the number of objects that were actually
|
||
moved is stored in the failure variable.
|
||
|
||
The backpack can hold 16 items. Each body part can hold only
|
||
one item.
|
||
|
||
See Also copy, drop, vanish, failure
|
||
|
||
Music
|
||
|
||
Syntax music( filename | stop );
|
||
|
||
Purpose Starts playing a CMF music
|
||
|
||
Parameters filename
|
||
|
||
The name of the music file. May include a DOS path and be up to
|
||
64 chars in length.
|
||
|
||
stop
|
||
|
||
If you use the stop keyword instead of a file name, any music
|
||
currently playing is stopped.
|
||
|
||
Remarks The filename must be a string constant (surrounded by
|
||
double quotes).
|
||
|
||
You must have a Sound Blaster compatible card to play music. If
|
||
none is present the command is ignored.
|
||
|
||
Examples ! Play some music and wait until either the music ends,
|
||
|
||
! the player presses a key or 2 minutes have elapsed.
|
||
|
||
music( "Intro.cmf" );
|
||
|
||
wait( 180 );
|
||
|
||
! Play some music in the background, display a picture and then
|
||
|
||
! Wait for 2 minutes or until the player presses a key, even if
|
||
the
|
||
|
||
! music ends.
|
||
|
||
music( "c:/game/sound/mymusic.cmf");
|
||
|
||
pause( 180 );
|
||
|
||
! Play some music while talking to a character..
|
||
|
||
music( "healer.cmf" );
|
||
|
||
... do stuff here ...
|
||
|
||
:XSTOP
|
||
|
||
writeln( "Y'all come back, now!" );
|
||
|
||
music( stop );
|
||
|
||
stop;
|
||
|
||
See Also wait, pause
|
||
|
||
On x Goto, On x Gosub
|
||
|
||
Syntax on expr {goto|gosub} label0, label1, label2, ... labeln;
|
||
|
||
Purpose To support the transfer of control to one of a set of
|
||
labels depending on the value of an expression.
|
||
|
||
Parameters expr
|
||
|
||
This expression evaluates to a number between 0 and n.
|
||
|
||
label0, label1, ..
|
||
|
||
These are the labels that have been declared elsewhere in the
|
||
script to receive control of execution.
|
||
|
||
Remarks The difference between goto and gosub is that the return
|
||
statement will return execution to the statement following the
|
||
on statement..
|
||
|
||
If the expression has a negative value or a value greater than
|
||
n, no transfer takes place, and execution continues on the
|
||
statement following the on statement.
|
||
|
||
Example ! Talk to the player..
|
||
|
||
:TALKHERE
|
||
|
||
L9 = getstr( "Hello", "King", "Queen", "Treasure", "Key", "Door"
|
||
);
|
||
|
||
loadtext( player.text );
|
||
|
||
if NOT dotext( s0 ) then ! The text record didn't handle the
|
||
keyword..
|
||
|
||
on L9 gosub XHELLO, XKING, XQUEEN, XGOLD, XKEY, XDOOR;
|
||
|
||
endif;
|
||
|
||
if S0 <> "Bye" goto TALKHERE;
|
||
|
||
stop;
|
||
|
||
See Also goto, gosub, if x goto, if x gosub, return
|
||
|
||
Paint
|
||
|
||
Syntax paint( { screen | window } );
|
||
|
||
Purpose To re-paint either the entire screen or just the game
|
||
playing window because the script has performed some actions
|
||
that have probably erased all or part of the window.
|
||
|
||
Remarks This statement is useful when you move the player of the
|
||
screen by modifying it's x and y attributes.
|
||
|
||
It is also a good idea after running a DOS program, or after
|
||
you display a PCX graphics file on the screen.
|
||
|
||
See Also viewpcx
|
||
|
||
Pause
|
||
|
||
Syntax pause( time );
|
||
|
||
Purpose Pauses script execution until the user presses the space
|
||
key or the specified time has elapsed.
|
||
|
||
Parameters time
|
||
|
||
This parameter is optional. It specifies a limit on the time
|
||
that the command will wait. (In seconds). Any numeric
|
||
expression that results in a number between 0 and 32000 seconds.
|
||
A value of 0 means that no time limit is present. The user
|
||
MUST press a key to continue. Note that pause(0); can also be
|
||
written pause;.
|
||
|
||
Remarks Used to wait for the user to read something on the
|
||
screen or to see a graphics file that is being displayed,
|
||
|
||
Examples ! Display a character's picture, then wait for 2
|
||
minutes or until the
|
||
|
||
! player presses a key
|
||
|
||
if player.picture > 0 then
|
||
|
||
viewpcx( player );
|
||
|
||
pause(120);
|
||
|
||
paint(screen);
|
||
|
||
endif;
|
||
|
||
See Also wait
|
||
|
||
Random
|
||
|
||
Syntax ret-val = random( expr );
|
||
|
||
Purpose Return a random number between 0 and expr-1.
|
||
|
||
Parameters expr
|
||
|
||
Is an arithmetic expression that results in a positive number
|
||
larger than 1.
|
||
|
||
Returns ret-val
|
||
|
||
Is a value between 0 and expr-1.
|
||
|
||
Remarks The expr is value is the number of alternatives you want
|
||
to consider.
|
||
|
||
Example ! 3 out of every 10 times, write a message
|
||
|
||
if random( 10 ) < 3 then ! 0,1 and 2
|
||
|
||
writeln( "We have a winner!" );
|
||
|
||
endif;
|
||
|
||
! generate a monster of random size
|
||
|
||
on random(5) gosub XTINY, XSMALL, XMEDIUM, XLARGE, XHUGE;
|
||
|
||
...
|
||
|
||
! Once out of every 7 times..
|
||
|
||
if random(7) = 0 then ! or 1 or 2 or .. 6, but just one of them !
|
||
|
||
gosub DOSOMETHING;
|
||
|
||
endif;
|
||
|
||
ReadText
|
||
|
||
Syntax readtext( block# [, line#] ); or
|
||
|
||
readtext( "filename" );
|
||
|
||
Purpose To read and display some text on the screen
|
||
|
||
Parameters block#
|
||
|
||
Is the record number from the TEXT.DTA file.
|
||
|
||
line#
|
||
|
||
Is the line number within the block (1 to 16) or 0 (default)
|
||
which means that the entire text record should be displayed.
|
||
|
||
filename
|
||
|
||
Is the name of a text file to be read and displayed.
|
||
|
||
Remarks If block# is given, the record is read into variables S1
|
||
through S16.
|
||
|
||
If line# is non zero, only that line is displayed.
|
||
|
||
The entire lines are displayed, the lines are not expected to
|
||
contain keywords of any kind (unlike dotext)
|
||
|
||
If a filename is provided, the screen is cleared and the text
|
||
is displayed in full screen (but still graphics) mode. The
|
||
paint command should be used to re-paint the screen after the
|
||
text has been read. Also, the pause command may be used before
|
||
the paint command to give a chance to the player to read the
|
||
last page.
|
||
|
||
The text file may contain some control commands that start with
|
||
the % sign as follows:
|
||
|
||
%MUSIC musicfile.cmf
|
||
|
||
Plays the CMF format file musicfile in the background (The
|
||
SoundBlaster SBFMDRV.COM must be memory resident).
|
||
|
||
%VIEWPCX pcxfile.pcx
|
||
|
||
Show the PCX graphics file on the screen in the resolution and
|
||
with the pallete closest to the one specified in the PCX file
|
||
that is available in the computer.
|
||
|
||
%VPLAY vocfile.voc
|
||
|
||
Plays the VOC format file on the foreground if a SoundBlaster
|
||
card is present.
|
||
|
||
%READ textfile
|
||
|
||
The DOS text file is read through the SoundBlaster
|
||
text-to-speach driver (SBTALKER) if installed.
|
||
|
||
%PAGE
|
||
|
||
Say "press <SPACE> to continue" and clear the screen when the
|
||
player does press the space bar.
|
||
|
||
%WAIT time
|
||
|
||
Wait a maximum of time seconds or until all music and/or voice
|
||
has finished playing. If the time expires before the music or
|
||
voice is over, the music or voice is stopped. Also, if the user
|
||
presses SPACE while waiting, the voice and music are stoped and
|
||
the wait expires.
|
||
|
||
Restart
|
||
|
||
Syntax restart;
|
||
|
||
Purpose Restart the game from the begining, but does not re-run
|
||
the introduction or cause the player to have to re-create
|
||
his/her character.
|
||
|
||
Remarks From the DOS prompt, you can re-start the game by typing:
|
||
|
||
C:\games> del sav*.*
|
||
|
||
If you also want to re-create the playing party, type also:
|
||
|
||
C:\games> del party.dta
|
||
|
||
Restore
|
||
|
||
Syntax restore( slot# );
|
||
|
||
Purpose Restores the game to a previously saved possition.
|
||
|
||
Parameters slot#
|
||
|
||
The # of the saved game, which may be in the range 1 through 999.
|
||
|
||
Remarks The restore command works by first deleting all files
|
||
with name SAV*.000 from the current directory, and then copying
|
||
all files of name SAV*.### (the saved game) to files names
|
||
SAV*.000.
|
||
|
||
The current game is held in slot # 0. Every time you transfer
|
||
from one world to another, the current game is saved to slot 0.
|
||
This means that if your game is interrupted for any reason (for
|
||
example, you accidentaly press Ctrl-Alt-Del), your game state is
|
||
restored to the time at which you entered the current world.
|
||
|
||
See Also save, restart
|
||
|
||
Return
|
||
|
||
Syntax return;
|
||
|
||
Purpose Returns execution control to the instruction following
|
||
the last gosub that was executed.
|
||
|
||
Remarks To write a subroutine, you declare a label (which will
|
||
be used by the gosub statement to invoke it), followed by some
|
||
script statements, followed by the return statement.
|
||
|
||
Example ! Subroutine to move one step to the right.
|
||
|
||
MOVERIGHT:
|
||
|
||
if group.x < world.x-1 and world.density <= VERY_ROUGH then
|
||
|
||
inc(group.x);
|
||
|
||
endif;
|
||
|
||
return;
|
||
|
||
Save
|
||
|
||
Syntax save( slot# );
|
||
|
||
Purpose Saves the current game in the given slot.
|
||
|
||
Parameters slot#
|
||
|
||
The slot to be used to save the game. May be in the range 1
|
||
through 999.
|
||
|
||
Remarks The save command works by first saving to slot 0 and
|
||
then copying all files with name SAV*.000 to files of name
|
||
SAV*.###.
|
||
|
||
The current game is held in slot # 0. Every time you transfer
|
||
from one world to another, the current game is saved to slot 0.
|
||
This means that if your game is interrupted for any reason (for
|
||
example, you accidentaly press Ctrl-Alt-Del), your game state is
|
||
restored to the time at which you last entered the current world.
|
||
|
||
See Also restore, restart
|
||
|
||
SavePCX
|
||
|
||
Syntax savepcx( "fname.pcx" );
|
||
|
||
Purpose Saves the screen as a PCX format graphics file to the
|
||
given filename.
|
||
|
||
Parameters "fname.pcx"
|
||
|
||
A string constant containing a valid DOS filename.
|
||
|
||
Remarks The system does not check to make sure the filename is a
|
||
valid DOS filename, nor does it add the .PCX extension if it is
|
||
not provided.
|
||
|
||
If the file already exists, it is overwritten.
|
||
|
||
Example ! Save the current screen
|
||
|
||
savepcx( "scrndump.pcx" );
|
||
|
||
See Also viewpcx
|
||
|
||
Select
|
||
|
||
Syntax retval = select ( group );1
|
||
|
||
retval = select [$[2]] ( {player|npc} [, {matching|type}] );2
|
||
|
||
retval = select [$[2]] ( {player.body|npc.body} );3
|
||
|
||
retval = select [$] ( string [, value] [, string ... ] );4
|
||
|
||
Purpose Display a list of characters, items, etc, on the menu
|
||
area, and then allow the player to select one of the displayed
|
||
items. The item selected becomes the current generic item of the
|
||
appropriate type.
|
||
|
||
Parameters group, player, npc, player.body and npc.body
|
||
|
||
Tells the select command what you want to select from.
|
||
|
||
matching
|
||
|
||
Used to indicate that only items that match the items of the
|
||
type carried by the current npc should be displayed.
|
||
|
||
type
|
||
|
||
is a number or token with a value between 0 and 255.
|
||
|
||
string
|
||
|
||
is a text string enclosed in quotes.
|
||
|
||
value
|
||
|
||
is either a number (constant or token) or a single variable or
|
||
attribute whose value is numeric. No arithmetic expressions are
|
||
permited.
|
||
|
||
Returns The number that returns is the index to the selected
|
||
item.
|
||
|
||
Remarks If a $ is specified, then values will be displayed as
|
||
gold or silver pieces (1gp = 10sp). The 2 following the $
|
||
indicates that the values should be divided by 2 before being
|
||
displayed.
|
||
|
||
|
||
|
||
1) Select a member of the playing party. The selected member
|
||
(if any) becomes the current player.
|
||
|
||
|
||
|
||
2) Select one of the items in the character's backpack. If
|
||
matching is specified, only items that match the type of items
|
||
in the current npc's backpack will be displayed. If type is
|
||
provided, only items of the specified type are displayed. The
|
||
selected item becomes the character's current .bp item.
|
||
|
||
|
||
|
||
3) Select one of the items being worn by the current character.
|
||
The item selected becomes the current player.body item. If the
|
||
character is not wearing any items (weapon, armor, shield, ring,
|
||
amulet or staff), no menu is displayed and the function return a
|
||
-1.
|
||
|
||
|
||
|
||
4) Displays a menu with the options listed (strings), and allows
|
||
the player to select one of them. It returns the index to the
|
||
selected one. The first item is 0.
|
||
|
||
If no item is selected (player pressed <ESC> key) the function
|
||
returns -1.
|
||
|
||
If the list is empty (no item is being carried in the backpack
|
||
or being worn), the function also returns -1.
|
||
|
||
Examples ! Select the current spokes-person...
|
||
|
||
L3 = select( group );
|
||
|
||
! Show list of potions being carried and give it to the npc
|
||
|
||
L8 = display( player, POTION );
|
||
|
||
If L8 >= 0 then
|
||
|
||
move( player.bp, npc );
|
||
|
||
endif;
|
||
|
||
! A merchant offers to sell something.
|
||
|
||
L39 = select$( npc );
|
||
|
||
if L39 >= 0 then
|
||
|
||
if group.gold >= npc.bp.value then
|
||
|
||
writeln( "Sold ", npc.bp.count, " ", npc.bp.name );
|
||
|
||
copy( npc.bp, player );
|
||
|
||
if failure then
|
||
|
||
writeln( "I'll just put it here on the floor.." );
|
||
|
||
drop( npc.bp );
|
||
|
||
endif;
|
||
|
||
dec( group.gold, npc.bp.value );
|
||
|
||
else
|
||
|
||
writeln( "You don't have enough money!" );
|
||
|
||
endif;
|
||
|
||
else
|
||
|
||
writeln( "Ok.." );
|
||
|
||
endif;
|
||
|
||
! Display the player's items that the merchant might want to
|
||
buy.
|
||
|
||
L39 = select$2( player, matching );
|
||
|
||
if L39 >= 0 then
|
||
|
||
writleln( "Here is ", $player.bp.value," for your
|
||
",player.bp.name);
|
||
|
||
inc( group.gold, player.bp.value / 2 );
|
||
|
||
move( player.bp, npc );
|
||
|
||
endif;
|
||
|
||
! Give the player a choice and take the appropriate action..
|
||
|
||
:XAGAIN
|
||
|
||
on select("Yes", "No","Maybe") goto XYES, XNO, XMAYBE;
|
||
|
||
goto XNONE;
|
||
|
||
:XYES
|
||
|
||
writeln( "Good stuff..." );
|
||
|
||
goto SOMEWHERE;
|
||
|
||
:XNO
|
||
|
||
writeln("Too bad..." );
|
||
|
||
goto SOMEWHERE;
|
||
|
||
:MAYBE
|
||
|
||
writeln( "Will you make up your mind?" );
|
||
|
||
goto XAGAIN;
|
||
|
||
:SOMEWHERE
|
||
|
||
! Now do something else..
|
||
|
||
See Also display
|
||
|
||
SetBody
|
||
|
||
Syntax setbody( which, type );
|
||
|
||
Purpose Select the worn item represented by the generic variable
|
||
player.body or npc.body.
|
||
|
||
Parameters which
|
||
|
||
Is one of the npc or player attributes .body, .weapon, .armor,
|
||
.shield, .ring, .amulet or .staff.
|
||
|
||
type
|
||
|
||
Is an expression that evaluates to one of the six relevant types
|
||
(represented by tokens WEAPON, ARMOR, SHIELD, RING, AMULET or
|
||
STAFF). Any other value is invalid.
|
||
|
||
Remarks When specifying npc.body or player.body, the type is
|
||
required.
|
||
|
||
When specifying npc.weapon, npc.armor, etc, the type is
|
||
invalid, since it is implied by the attribute itself.
|
||
|
||
SetBp
|
||
|
||
Syntax setbp( which, expr );
|
||
|
||
Purpose Select the backpack item represented by the generic
|
||
variable player.bp or npc.bp.
|
||
|
||
Parameters which
|
||
|
||
Is one of npc.bp or player.bp, to identify which backpack you
|
||
want to set.
|
||
|
||
expr
|
||
|
||
Is an expression resulting in a number between 0 and 15, which
|
||
indicates the position within the backpack that is to be
|
||
represented by the generic variable.
|
||
|
||
Remarks The backpack position may be empty (i.e. not contain a
|
||
valid item).
|
||
|
||
You can tell if an item is present by testing the count
|
||
attribute. A value of zero always implies that the item does
|
||
not exist.
|
||
|
||
Sgn
|
||
|
||
Syntax ret-val = sgn( expr );
|
||
|
||
Purpose To determine whether an expression is negative, positive
|
||
or zero.
|
||
|
||
Parameters expr
|
||
|
||
A single expression whose numeric value may be negative,
|
||
positive or exactly zero.
|
||
|
||
Returns Returns -1 (minus one) if the expression is negative, +1
|
||
(plus one) if the expression is positive and 0 (zero) if the
|
||
expression is exactly zero.
|
||
|
||
Remarks This function may be useful when it is not important to
|
||
know the magnitude of the difference between two values, but
|
||
just whether one of them is greater than the other.
|
||
|
||
Examples ! The character is about to hit the npc. The npc has a
|
||
1 in 4 chance of
|
||
|
||
! blocking the attack (25%), but it may be modified to 1 in 3 if
|
||
the npc has
|
||
|
||
! a higher dexterity than the player, or to 1 in 5 if the player
|
||
has the better
|
||
|
||
! dexterity.
|
||
|
||
L7 = 4 + sgn( player.dex - npc.dex );
|
||
|
||
! Another version of the above computes an adjustment based on
|
||
the
|
||
|
||
! player's AND npc's dexterity using the adjustments function,
|
||
and adds
|
||
|
||
! or substracts the adjustment based on who is better. This
|
||
means that
|
||
|
||
! A high player dexterity OR a low npc dexterity will decrease
|
||
the ability
|
||
|
||
! of the npc to block the attack.
|
||
|
||
L7 = 4 + sgn(player.dex-npc.dex) *
|
||
adjustments(player.dex,npc.dex);
|
||
|
||
Sound
|
||
|
||
Syntax sound = boolean-value
|
||
|
||
if sound then ...
|
||
|
||
Purpose If this variable has a non-zero value, sounds are
|
||
enabled. It is enabled by default, unless you use the -S run
|
||
time argument. You can change the value any time you want to
|
||
enable/disable sound.
|
||
|
||
Remarks If you don't have a sound card, sound can still be
|
||
played through the PC speaker if you convert the voices using
|
||
the VOC2PWM and PACK utility.
|
||
|
||
Example sound = not sound; ! Turn sound on and off
|
||
|
||
Stats
|
||
|
||
Syntax stats; or stats ( [ player|npc, ] who );
|
||
|
||
Purpose Tells the system to display character statistics in the
|
||
menu area, if they are not currently being displayed.
|
||
|
||
Parameters player|npc
|
||
|
||
Specifies whether you want to display a player's statistics or
|
||
an NPCs statistics. Note: During a fight, the npcs are the
|
||
monsters you are fighting with. The default is player.
|
||
|
||
who
|
||
|
||
Is the index of the player (or npc) whose statistics you want to
|
||
display. If you want to display stats on the current player use
|
||
group.current or player.index (same thing) or use npc.index for
|
||
the current npc.
|
||
|
||
Remarks Statistics are displayed more or less automaticly, but
|
||
during the execution of a script, you can use the menu area for
|
||
other things. If you want to restore the statistics at any time,
|
||
you may use the stats function.
|
||
|
||
If you omit the parameter (stats;), the group summary
|
||
statistics are displayed.
|
||
|
||
If you specify a who of -1, the system will re-display the
|
||
statistics we were already showing. This is useful when the
|
||
menu area has been used for something else, like the display
|
||
command.
|
||
|
||
Example ! Refresh the statistics area
|
||
|
||
stats(-1);
|
||
|
||
! Display the current player's detailed statistics
|
||
|
||
stats( group.current );Stop
|
||
|
||
Syntax stop;
|
||
|
||
Purpose Terminates execution of the script.
|
||
|
||
Remarks Indicates that the script has performed all required
|
||
actions.
|
||
|
||
See Also continue, fight
|
||
|
||
Success
|
||
|
||
Syntax ret-val = success;
|
||
|
||
Purpose To find out if the last major operation was successful.
|
||
|
||
Returns ret-val
|
||
|
||
The returns will be non-zero (TRUE) if the last major operation
|
||
completed successfuly.
|
||
|
||
Example ! A merchant sells an item to a player..
|
||
|
||
writeln( "Here is your ", npc.bp.name );
|
||
|
||
copy( npc.bp, player.bp );
|
||
|
||
if success then
|
||
|
||
writeln( "Sold!" );
|
||
|
||
else
|
||
|
||
writeln( "The ", npc.bp.name, " is placed on the floor.." );
|
||
|
||
drop( npc.bp );
|
||
|
||
endif;
|
||
|
||
See Also failure
|
||
|
||
System
|
||
|
||
Syntax system( argument1 [ , argument2 ... ] );
|
||
|
||
Purpose Execute a DOS command.
|
||
|
||
Parameters argumentN
|
||
|
||
Is a a string constant, variable or attribute, or a numeric
|
||
constant, token, variable or attribute. No expressions are
|
||
allowed.
|
||
|
||
Remarks The system command will create a single string by
|
||
concatenating the values of the arguments in very much the same
|
||
way that the writeln command does. The resulting string is
|
||
assumed to be a DOS command that needs to be executed.
|
||
|
||
If the numeric attributes type or class are displayed, the
|
||
associated string listed in the token file (DCCTOKEN.DAT) is
|
||
used, instead of the numeric value.
|
||
|
||
If a numeric argument is preceeded by a $ sign, the value is
|
||
represented in gold or silver pieces.
|
||
|
||
The failure will be set to the value returned by the DOS
|
||
command. The value can be tested for non-zero (i.e. just a
|
||
failure) or for it's numeric value, which can have any meaning
|
||
that the DOS command chose to give that value.
|
||
|
||
Examples ! Assuming you have a CASINO game that receives as
|
||
parameters the
|
||
|
||
! name of the player and the amount of money to start with:
|
||
|
||
system( "CASINO ", player.name, " ", group.gold / 10 );
|
||
|
||
group.gold = failure * 10; ! Earnings stored in the return value
|
||
|
||
! The following examples are for save/restore using a DOS
|
||
program..
|
||
|
||
save(0); ! Save current game
|
||
|
||
system( "MYSAVE SAVE" ); ! Store it somewhere
|
||
|
||
! or:
|
||
|
||
system( "MYSAVE RESTORE" );! Retrieve a saved game to slot 0
|
||
|
||
restore(0); ! Cause the system to re-load slot 0.
|
||
|
||
! or:
|
||
|
||
group.current = 0;
|
||
|
||
inc( player.v7 );
|
||
|
||
save(0);
|
||
|
||
system( "pkzip.exe ", player.v7, " SAV*.000 " );
|
||
|
||
Teleport
|
||
|
||
Syntax teleport( dest_world [, dest_door] );
|
||
|
||
teleport( dest_world, dest_x, dest_y );
|
||
|
||
Purpose When the current script finishes execution, the party
|
||
will be transfered to the given world at the location indicated
|
||
by the given door.
|
||
|
||
Parameters dest_world
|
||
|
||
Is the index number of the destination world (0-999)
|
||
|
||
dest_door
|
||
|
||
Is the door in the destination world, over which the party will
|
||
be placed. The default is door 0.
|
||
|
||
dest_x, dest_y
|
||
|
||
The coordinates in the destination world at which the party will
|
||
be placed (No door is needed).
|
||
|
||
Remarks Unlike the enter command, no door leading from the
|
||
current world to the destination world is used. The transfer is
|
||
made directly to the world and location indicated.
|
||
|
||
Examples ! Transfer the party to one of 3 worlds at random
|
||
|
||
L3 = random(3);
|
||
|
||
if L3 = 0 then
|
||
|
||
teleport( 38 ); ! Teleport to world 38, door 0
|
||
|
||
elsif L3 = 1 then
|
||
|
||
teleport( 5, random(2) ); ! Teleport to world 5, door 0 or 1
|
||
(random)
|
||
|
||
else
|
||
|
||
teleport( 43, 25, 32 ); ! Teleport to world 43,
|
||
location X=25, Y=32
|
||
|
||
endif;
|
||
|
||
See Also enter
|
||
|
||
Vanish
|
||
|
||
Syntax vanish( object );
|
||
|
||
Purpose Destroy an object
|
||
|
||
Parameters object
|
||
|
||
Is the object to be destroyed. It can be any of the following:
|
||
player.bp, player.body, player.weapon, player.shield,
|
||
player.armor, player.ring, player.amulet, player.staff, npc.bp,
|
||
npc.body, npc.weapon, npc.shield, npc.armor, npc.ring,
|
||
npc.amulet, npc.staff, object, curritem or group.vehicle.
|
||
|
||
Remarks The object is removed and will no longer be available
|
||
anywhere.
|
||
|
||
This is exactly equivalent to setting the count attribute of
|
||
the object to 0, which in effect means that the object is no
|
||
longer there.
|
||
|
||
Example !
|
||
|
||
! Destroy a staff after it has no charges left..
|
||
|
||
if staff.charges > 1 then
|
||
|
||
dec( staff.charges );
|
||
|
||
else
|
||
|
||
writeln( "The ", staff.name, " flashes and disappears.." );
|
||
|
||
vanish( staff );
|
||
|
||
! Note that staff.count = 0 has the same effect !
|
||
|
||
endif;
|
||
|
||
|
||
|
||
See Also drop, move, copy
|
||
|
||
Version
|
||
|
||
Syntax ret-val = version;
|
||
|
||
Purpose Determine the current version of the DCGAMES software
|
||
being used to run the adventure.
|
||
|
||
Returns The version of the game driver in use.
|
||
|
||
Remarks The version number is in the hundreds. Version 3.00 is
|
||
returned as 300 (three hundred). Version 3.01 would be returned
|
||
as 301 (three hundred and one). The current version as of August
|
||
1995 is 4.00 (or 400).
|
||
|
||
Example if version < 400 then
|
||
|
||
writeln( "ACK! You are using an old (incompatibile) driver!!"
|
||
);
|
||
|
||
stop;
|
||
|
||
endif;
|
||
|
||
ViewFLI
|
||
|
||
Syntax viewfli( "filename.fli" [, framedelay] );
|
||
|
||
Purpose Play a FLI (or FLC) animation on the screen
|
||
|
||
Parameters "filename.fli"
|
||
|
||
Is a quoted string which contains name of the FLI or FLC file to
|
||
be played. The filename is used exactly as given. (i.e. an
|
||
extension of .FLI or .FLC is NOT automaticly added).
|
||
|
||
framedelay
|
||
|
||
Allows you to override the delay between frames when playing
|
||
back the flic. It is specified in units which occur 18.2 times
|
||
per second, so if you want to delay 2 seconds between each
|
||
frame, the framedelay would be specified as 36 (closest number
|
||
to 36.4). If not specified, the system plays the FLI according
|
||
to the information in the file itself.
|
||
|
||
Remarks This routine only works in 256 color modes. Thus, if you
|
||
are running in VHI resolution (a 16 color mode), the system will
|
||
try to play it in VLO mode.
|
||
|
||
If the movie fits within the world window, it will be played in
|
||
that area. If it doesn't, but it fits within the screen, the
|
||
screen will be cleared to play it.
|
||
|
||
The system will re-build call PAINT(WINDOW) or PAINT(SCREEN) as
|
||
needed before returning to the script.
|
||
|
||
See Also viewpcx
|
||
|
||
ViewPCX
|
||
|
||
Syntax viewpcx( character ); or
|
||
|
||
viewpcx( object ); or
|
||
|
||
viewpcx( world ); or
|
||
|
||
viewpcx( "filename.pcx" );
|
||
|
||
Purpose Display a PCX graphics file on the screen
|
||
|
||
Parameters character
|
||
|
||
If you specify player or npc, the characters picture attribute
|
||
will be used to create a filename of the form CPICT###.PCX,
|
||
where ### is the numeric value of the picture attribute.
|
||
|
||
object
|
||
|
||
If you specify an object (object, curritem, player.bp, etc..)
|
||
then the object's picture attribute will be used to create a
|
||
filename of the form OPICT###.PCX, where ### is the numeric
|
||
value of the picture attribute.
|
||
|
||
world
|
||
|
||
If you specify world, the index attribute of the world (i.e the
|
||
world's number) will be used to create a filename of the form
|
||
WORLD###.PCX, where ### is the world's index value.
|
||
|
||
"filename.pcx"
|
||
|
||
Is a quoted string which contains a valid DOS filename. The
|
||
filename is used exactly as given. (i.e. an extension of .PCX is
|
||
NOT automaticly added).
|
||
|
||
Remarks Warning: After the image is displayed, control returns
|
||
to the script leaving the image displayed on the screen. It is
|
||
up to the script writter to decide when the screen should be
|
||
re-freshed by calling the PAINT function.
|
||
|
||
Note also that you can call PAINT(WINDOW) or PAINT(SCREEN)
|
||
depending on whether the image you displayed fits within the
|
||
world view window or whether the whole screen is required.
|
||
|
||
See Also paint
|
||
|
||
Voice
|
||
|
||
Syntax voice( "keyword" , rsc );
|
||
|
||
Purpose Play back a voice recording.
|
||
|
||
Parameters keyword
|
||
|
||
The keyword is a one 1 to 8 character word that identifies the
|
||
voice recording stored in a voice resource file.
|
||
|
||
rsc
|
||
|
||
Is the number of the voice resource file (VOICEnnn.RSC) that
|
||
contains the voice you want to play. The value must be in the
|
||
range 0 to 999 with two exceptions: A value of 1000 indicates
|
||
that the system sounds file DCSOUNDS.RSC should be used; and a
|
||
value of -1 is ignored and no sound is played. This parameter
|
||
is no longer optional!
|
||
|
||
Remarks Previous versions of DCGAMES (3.x) would use the
|
||
npc.voice attribute as the default voice, but that is no longer
|
||
supported because you can now do a lot more interaction between
|
||
npcs and players.
|
||
|
||
Since a -1 is allowed and indicates that no sound should be
|
||
played, you don't have to check the npc.voice or player.voice
|
||
attribute when you invoke voice. If none is given, nothing
|
||
happens!
|
||
|
||
Examples ! The character tried to open a chest and it was
|
||
trapped..
|
||
|
||
if rand(3) = 0 then ! Trap
|
||
|
||
voice( "Explode", 1000 ); ! System Sound !
|
||
|
||
writeln( "Argh..." );
|
||
|
||
endif;
|
||
|
||
! Talking to a character
|
||
|
||
:XTALK
|
||
|
||
L0 = getstr( "Hello", "Bye", "Job", "Name", ... );
|
||
|
||
if L0 >= 0 then
|
||
|
||
voice( s0, npc.voice );
|
||
|
||
on L0 goto XHELLO, XBYE, XJOB, XNAME,...;
|
||
|
||
endif;
|
||
|
||
writeln( "Beg Pardon?" );
|
||
|
||
goto :XTALK
|
||
|
||
See Also dotext, vplay, music
|
||
|
||
VPlay
|
||
|
||
Syntax vplay( "voicefile.voc" );
|
||
|
||
Purpose Play back a voice recording file.
|
||
|
||
Parameters voicefile.voc
|
||
|
||
The file voicefile.voc is loaded and played through the
|
||
SoundBlastertm if it is present.
|
||
|
||
Remarks Only the SoundBlaster series of audio cards is supported
|
||
at this time.
|
||
|
||
The file must be stored in the .VOC format, must be shorter
|
||
than 64K and must fit in available memory.
|
||
|
||
See Also dotext, voice, music
|
||
|
||
Wait
|
||
|
||
Syntax wait( time );
|
||
|
||
Purpose Wait until all voice and music has finished playing, or
|
||
time seconds have passed.
|
||
|
||
Parameters time
|
||
|
||
The maximum number of seconds to wait. May be in the range 0 to
|
||
32000.
|
||
|
||
Remarks A time of 0 indicates that there is no time limit. If
|
||
no music is present, this is equivalent to pause(0); The wait
|
||
ends when either no more voice or music is playing, the user
|
||
pressed the SPACE bar or the specified time has elapsed.
|
||
|
||
If the time limit is reached or the player presses a key, the
|
||
music and voice still playing is stoped.
|
||
|
||
Example ! Play some Background music
|
||
|
||
music( "overture.cmf" ); ! Start playing music
|
||
|
||
viewpcx( "map.pcx" ); ! Display a picture on the screen
|
||
|
||
wait(0); ! Wait until the music ends or SPACE bar
|
||
|
||
paint( SCREEN ); ! re-paint the screen.
|
||
|
||
See Also pause, music, voice, vplay, viewpcx, dotext, paint
|
||
|
||
While
|
||
|
||
Syntax while expr do statements; endwhile;
|
||
|
||
Purpose Execute a set of statements as long as the expression is
|
||
non-zero
|
||
|
||
Parameters expr
|
||
|
||
Is a logical expression which results in a numeric value.
|
||
|
||
Remarks The expression expr is evaluated and the statements are
|
||
executed until the expression results in a value of zero.
|
||
|
||
Examples ! Ask a question, demand an answer.
|
||
|
||
writeln( "Do you agree? (Yes/No)" );
|
||
|
||
L3 = getstr( "yes", "no" );
|
||
|
||
while L3 < 0 do
|
||
|
||
writeln( "You must say Yes or No" );
|
||
|
||
L3 = getstr( "yes", "no" );
|
||
|
||
endwhile;
|
||
|
||
Write[ln]
|
||
|
||
Syntax write( argument [ , argument ... ] );
|
||
|
||
writeln[( argument [, argument] )];
|
||
|
||
Purpose Display a line of text on the text area of the screen.
|
||
|
||
Parameters argument
|
||
|
||
Is a a string constant, variable or attribute, or a numeric
|
||
constant, token, variable or attribute. No expressions are
|
||
allowed.
|
||
|
||
Remarks The write command is used to indicate that subsequent
|
||
write or writeln commands will continue writing on the same line
|
||
as this one, unless the line is full.
|
||
|
||
The writeln command indicates that subsequent write or writeln
|
||
commands will start writing on a new line.
|
||
|
||
If the numeric attributes type or class are displayed, the
|
||
associated string listed in the token file (DCCTOKEN.DAT) is
|
||
displayed, instead of the numeric value.
|
||
|
||
If a numeric argument is preceeded by a $ sign, it is displayed
|
||
in gold/silver pieces.
|
||
|
||
Examples ! The following command
|
||
|
||
writeln( "Sold ", L7, " ", npc.bp.name, " at ", $npc.bp.value
|
||
);
|
||
|
||
! might display
|
||
|
||
Sold 5 Pumkin Pies for 3gp
|
||
|
||
! if npc.bp.name = "Pumkin Pies" and npc.bp.value = 30
|
||
|
||
! The following command
|
||
|
||
write( "You see a ", object.name, " (", object.type, ")" );
|
||
|
||
if object.type = WEAPON and object.hands = 2 then
|
||
|
||
writeln( " (Two-Handed) " );
|
||
|
||
else
|
||
|
||
writeln; ! End the line..
|
||
|
||
endif;
|
||
|
||
! might display
|
||
|
||
You see a Rusty Knife (Weapon)
|
||
|
||
|