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 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.