
4.05 changes

DCPLAY.EXE will now look for file DCFNTVHI.FGF
which is the font file to be used in the game.
The file is in FastGraf Font format (FGF). For
low resolutions (VLO) games, it will use the
old ugly font which is stored as DCFNTVLO.FGF.

Other enhancements and fixes include:

a) Moved code that divides follower statistics
   by half from the game driver to the script
   FIGHTING/@0, so you now have control over
   the follower's stats.

b) Instead of playing "Win" automatically when
   you win a battle, it calls FIGHTING/@2 (new
   entry point) so now you control what happens
   when you kill all the monsters.

c) When using "foreach npc|object do", if you 
   change the current npc/object's location
   inside the loop, sometimes you got funny
   behaviour (the loop wouldn't visit every
   npc or object, or it might visit the same
   one twice).

d) When you use FIGHT(STOP);, the script will
   NO-LONGER-STOP. This means you can add more
   script code to handle running away, etc.
   To get the old behaviour, just add a STOP;
   right after the FIGHT(STOP) in your scripts.

   Note that FIGHT; by itself (starting a fight)
   still stop the script. Once you start a fight
   a separate sequence is used.

e) Fixed a bug in POS(). It now correctly finds
   the first occurance of a character in a string.

4.04 changes:

Fixed minor bug in 4.03 (pause,beep,pause) in
sound board detection routine.

New entrypoint into CONTROL.SCR handles NPC
animation (@5) when not fighting. It is called
once per turn (after the player's move).

NOTE: NOTE: NOTE: NPCs are no longer animated
by the game driver. If you have modified the
CONTROL script you MUST add the @5 entrypoint
and implement NPC animation for hostile monsters
or they will stop moving.

Includes new version of WORXLITE, PLAY.BAT and
the TSR.COM utility to allow help install/remove
the sound blaster driver. TSR.COM didn't properly
detach the accelerated clock interrupt, so time
went REALLY FAAAAAST after you played DCGAMES,
make sure you install the new PLAY.BAT!

New features include SWRITE/SWRITELN, a version
of WRITE/WRITELN that sends it's output to a 
string variable instead of the screen:

  object.name = SWRITELN( player.name, "'s book" );

Another new feature is PWRITE/PWRITELN, a version
of WRITE/WRITELN that writes into a displayed PCX
image. The SETFRAME command (new) defines the margins
within the PCX image.

  ! SETFRAME( picture, xof,yof,xof,yof,color );
  SETFRAME( "BOOK1.PCX", 30, 30, 30, 30, 1 );
  VIEWPCX ( "BOOK1.PCX" );
  PWRITELN( "Title: ", object.name );
  PWRITELN( "Once upon a time.." );
  pause;
  paint( window );

Two new functions will tell if you can SEE or
REACH (with your current mode of transportation)
from one spot to another.  The LOS (line of sight)
and LOR (line of reach) functions, take 2 locations
and a set of landscape transparency values (for LOS)
or density values (for LOR).  For example:

   if LOS( npc, player ) then
     ! The monster can see the player..
   endif;

   if LOR( player, world.doorx(5), world.doory(5) ) then
     writeln( "The door is within reach!" );
   endif;

Full examples and function details can be found in
ADDENDUM.TXT, an addendum to the 4.00 documentation.

See also the file TEST.SCR which is invoked in the
game by pressing FKEY9. It tests LOS, LOR, SET_FRAME
and PWRITE/PWRITELN.

4.03 changes:

The file DCWORLD.EXE and DCPLAY.EXE are now
protected mode versions of the DCGAMES system.
They use the DOS4GW.EXE program (must be in 
the same place as the executables). They will
now use all available protected mode memory
and are optimized for 386 processors, so they
don't work on older processors.

Worlds may now be up to 512KB in size (up from
64KB). Compiled scripts (SCO files) can now be
a lot larger, and a few other internal limits
are also extended.

I also modified the script language to return
the string values instead of numbers when the
following variables are assigned to a string 
or displayed using write/writeln:

a) world.density(x,y) <- Returns string from the
   [WORLD DENSITIES] entry in DCCTOKEN.DAT

b) world.block(x,y) <- Returns string from the
   NAME field of the Tile record in DCBLOCKn.mde
   where n=0-9 and mde = VHI, VH1, etc.

I also fixed a bug in the code that allowed you
to replace the landcaping file on the fly. It 
was plain broken. Now you can have 2 sets of 
landscaping tiles, one for darkness, one for
daylight and switch like this:

    world.landcape = 1; ! Between 0 and 9 !

Finally, in order to make this protected mode
I had to extract the sound library and make it
into a TSR (because it's real-mode).  To run
DCPLAY now you need a batch file that loads
and removes the TSR.  See example file PLAY.BAT

This batch file marks memory (tsr i), loads the
WORXLITE tsr program, runs DCPLAY and removes
the WORXLITE tsr when DCPLAY ends.  Note that 
if you usually use the -S parameter because you
don't have a sound card, you can just run the
dcplay.exe program directly w/out loading the
worxlite program:
 
   dcplay.exe -s

4.02 changes:

The utility 'LOADPAL.EXE' will load a NEOPAINT
palette (file.PAL) into a DCGAMES palette 
(file.DAT).  The default palette is DCPALET.DAT
and is loaded at game startup.

Inside the scripts, you can use the LOADPAL() 
function to load an alternate palette. This 
function can be used to implement day/night
as follows in the 'time' routine in CONTROL.SCR

   if <sunrise> then
     loadpal( "DCPALET.DAT" );
   else
     loadpal( "NIGHTPAL.DAT" );
   endif;

You can also change the palette when you enter
a new world depending on the world type, for
example:

   if world.type = CAVE then
     loadpal( "CAVEPAL.DAT" );
   elsif time > sunrise and time < sunset then
     loadpal( "DCPALET.DAT" );
   else
     loadpal( "NIGHTPAL.DAT" );
   endif;

I also fixed WORLD.INDEX to return a simple
number (like it did in 3.x). I broke it trying
to implement a variable that returns the STRING
name of the world file.

If you want to get the name of the world file
(w/out extension), use WORLD.SINDEX, which will
return "WORLDnnn" where nnn = 000 to 999.

4.01 changes:

Fixes a bug that causes the game driver to hang
after a battle when using the -s parameter.

Also, contains minor patches to the CONTROL script
to handle 3.01 style hidden and locked doors.
