ref: 15a890dd25b44d41aeee5ef02e40dc57d643b479
parent: 407e3d8b07eaa968e8ed7d52a03fd3199dccdddf
author: Jacob Moody <moody@posixcafe.org>
date: Tue Feb 7 01:26:43 EST 2023
no CR plz
--- a/src/rt_cfg.c
+++ b/src/rt_cfg.c
@@ -1,2105 +1,2105 @@
-/*
-Copyright (C) 1994-1995 Apogee Software, Ltd.
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-*/
-//****************************************************************************
-//
-// RT_CFG.C
-//
-//****************************************************************************
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "rt_def.h"
-
-#include "rt_cfg.h"
-#include "version.h"
-
-#include "scriplib.h"
-#include "rt_playr.h"
-#include "rt_menu.h"
-#include "rt_game.h"
-#include "rt_in.h"
-#include "z_zone.h"
-#include "w_wad.h"
-#include "rt_crc.h"
-#include "rt_sound.h"
-#include "rt_util.h"
-#include "rt_main.h"
-#include "rt_view.h"
-#include "rt_msg.h"
-#include "rt_battl.h"
-#include "rt_net.h"
-#include "isr.h"
-#include "fx_man.h"
-#include "develop.h"
-
-
-//******************************************************************************
-//
-// GLOBALS
-//
-//******************************************************************************
-
-extern int G_weaponscale;
-extern boolean iG_aimCross;
-extern int hudRescaleFactor;
-
-boolean WriteSoundFile = true;
-
-int FXMode = 0;
-int MusicMode = 0;
-
-int MUvolume = 196;
-int FXvolume = 196;
-
-boolean mouseenabled = 1;
-boolean usemouselook = 0;
-int inverse_mouse = 1; //set to -1 to invert mouse
-boolean usejump = 0;
-boolean sdl_fullscreen = 1;
-boolean borderWindow = 0;
-boolean borderlessWindow = 0;
-
-boolean allowBlitzMoreMissileWeps = 0;
-boolean enableAmmoPickups = 0;
-boolean autoAimMissileWeps = 0;
-boolean autoAim = 1;
-boolean enableExtraPistolDrops = 0;
-boolean allowMovementWithMouseYAxis = 1;
-boolean enableZomROTT = 0;
-int FocalWidthOffset = 0;
-int ScreenHeightToWriteToCfg = 0;
-int HudScaleToWriteToCfg = 0;
-int ScreenWidthToWriteToCfg = 0;
-boolean writeNewResIntoCfg = false;
-
-
-boolean joystickenabled = 0;
-boolean joypadenabled = 0;
-int joystickport = 0;
-int mouseadjustment = 5;
-int threshold = 1;
-int NumVoices = 4;
-int NumChannels = 1;
-int NumBits = 8;
-boolean AutoDetailOn = true;
-int DoubleClickSpeed = 20;
-boolean BobbinOn = true;
-int Menuflipspeed = 15;
-int DetailLevel = 2; //HI DETAIL
-int fandc = 1;
-int blanktime = (2*60*VBLCOUNTER);
-boolean ConfigLoaded = false;
-boolean stereoreversed = false;
-
-int DefaultDifficulty = 2;
-int DefaultPlayerCharacter = 0;
-int DefaultPlayerColor = 0;
-byte passwordstring[20];
-
-MacroList CommbatMacros[MAXMACROS];
-
-char ApogeePath[256];
-
-//******************************************************************************
-//
-// LOCALS
-//
-//******************************************************************************
-
-static char SoundName[13] = "sound.rot";
-
-static char *ConfigName = "config.rot";
-static char *ScoresName = "scores.rot";
-static char *ROTT = "rott.rot";
-static char *CONFIG = "setup.rot";
-static char *BattleName = "battle.rot";
-
-AlternateInformation RemoteSounds;
-//AlternateInformation PlayerGraphics;
-AlternateInformation GameLevels;
-AlternateInformation BattleLevels;
-char CodeName[MAXCODENAMELENGTH];
-
-//******************************************************************************
-//
-// ReadScores ()
-//
-//******************************************************************************
-
-void ReadScores (void)
-{
- int file;
- char filename[ 128 ];
-
- GetPathFromEnvironment( filename, ApogeePath, ScoresName );
- if (access (filename, F_OK) == 0)
- {
- file = SafeOpenRead (filename);
- SafeRead (file, &Scores, sizeof (Scores));
- close(file);
- }
- else
- gamestate.violence = 0;
-}
-
-//******************************************************************************
-//
-// ReadInt
-//
-//******************************************************************************
-
-void ReadInt (const char * s1, int * val)
-{
- GetToken (true);
- if (!strcmpi (token,s1))
- {
- if (TokenAvailable()==true)
- {
- GetToken(false);
- *val=ParseNum(token);
- }
- }
-}
-
-//******************************************************************************
-//
-// ReadBoolean
-//
-//******************************************************************************
-
-void ReadBoolean (const char * s1, boolean * val)
-{
- int temp;
-
- temp = (int)(*val);
- ReadInt (s1,&temp);
- *val = (boolean) temp;
-}
-
-//******************************************************************************
-//
-// ReadUnsigned
-//
-//******************************************************************************
-
-void ReadUnsigned (const char * s1, unsigned long * val)
-{
- int temp;
-
- temp = (int)(*val);
- ReadInt (s1,&temp);
- *val = (unsigned) temp;
-}
-
-//******************************************************************************
-//
-// ParseSoundFile ()
-//
-//******************************************************************************
-
-boolean ParseSoundFile (void)
-{
- boolean retval = true;
- int version = 0;
-
- ReadInt("Version",&version);
-
- if (version == ROTTVERSION)
- {
- // Read in Music Mode
-
- ReadInt ("MusicMode",&MusicMode);
-
- // Read in FX Mode
-
- ReadInt ("FXMode",&FXMode);
-
- // Read in Music Volume
-
- ReadInt ("MusicVolume", &MUvolume);
-
- // Read in FX Volume
-
- ReadInt ("FXVolume", &FXvolume);
-
- // Read in numvoices
-
- ReadInt ("NumVoices",&NumVoices);
-
- // Read in numchannels
-
- ReadInt ("NumChannels",&NumChannels);
-
- // Read in numbits
-
- ReadInt ("NumBits",&NumBits);
-
- // Read in stereo reversal
-
- ReadBoolean ("StereoReverse",&stereoreversed);
-
- }
- else
- retval = false;
-
- return (retval);
-}
-
-
-
-//******************************************************************************
-//
-// SetSoundDefaultValues ()
-//
-//******************************************************************************
-void SetSoundDefaultValues
-(
- void
-)
-
-{
- //
- // no config file, so select default values
- //
- // icculus' SDL_mixer driver looks like a soundscape to us
- MusicMode = 6;
- FXMode = 6;
- NumVoices = 8;
- NumChannels = 2;
- NumBits = 16;
- stereoreversed = false;
-}
-
-extern char pword[ 13 ];
-//******************************************************************************
-//
-// ConvertStringToPasswordString ()
-//
-//******************************************************************************
-
-#define PASSWORDENCRYPTER "7d7e4a2d3b6a0319554654231f6d2a"
-
-void ConvertStringToPasswordString ( char * string )
-{
- int i;
- unsigned int j;
- char temp[3];
-
- memset(temp,0,sizeof(temp));
-
- for (i=0; i<13; i++)
- {
- memcpy(&temp[0],&string[i<<1],2);
- sscanf(&temp[0],"%x",&j);
- passwordstring[i+0] = j & 0xff;
- j >>= 8;
- passwordstring[i+1] = j & 0xff;
- j >>= 8;
- passwordstring[i+2] = j & 0xff;
- j >>= 8;
- passwordstring[i+3] = j & 0xff;
- }
-}
-
-//******************************************************************************
-//
-// ConvertPasswordStringToPassword ()
-//
-//******************************************************************************
-
-void ConvertPasswordStringToPassword ( void )
-{
- int i;
- int x;
- char temp[3];
- char key[40];
-
- memset(temp,0,sizeof(temp));
- strcpy(&key[0],PASSWORDENCRYPTER);
-
- for (i=0; i<12; i++)
- {
- memcpy(&temp[0],&key[i<<1],2);
- sscanf(&temp[0],"%x",&x);
- pword[i]=passwordstring[i]^x;
- }
- memcpy(&temp[0],&key[i<<1],2);
- sscanf(&temp[0],"%x",&x);
- gamestate.violence=passwordstring[i]^x;
- if (
- (gamestate.violence<0) ||
- (gamestate.violence>3)
- )
- gamestate.violence=0;
-}
-
-//******************************************************************************
-//
-// ConvertPasswordStringToString ()
-//
-//******************************************************************************
-
-void ConvertPasswordStringToString ( char * string )
-{
- int i;
- char temp[8];
-
- memset(temp,0,sizeof(temp));
-
- for (i=0; i<13; i++)
- {
- itoa((passwordstring[i]>>4),&temp[0],16);
- string[(i<<1)+0]=temp[0];
- itoa((passwordstring[i]&0xf),&temp[0],16);
- string[(i<<1)+1]=temp[0];
- }
-}
-
-//******************************************************************************
-//
-// ConvertPasswordToPasswordString ()
-//
-//******************************************************************************
-
-void ConvertPasswordToPasswordString ( void )
-{
- int i;
- int x;
- char temp[3];
- char key[40];
-
- memset(temp,0,sizeof(temp));
- strcpy(&key[0],PASSWORDENCRYPTER);
-
- for (i=0; i<12; i++)
- {
- memcpy(&temp[0],&key[i<<1],2);
- sscanf(&temp[0],"%x",&x);
- passwordstring[i]=pword[i]^x;
- }
- memcpy(&temp[0],&key[i<<1],2);
- sscanf(&temp[0],"%x",&x);
- passwordstring[i]=gamestate.violence^x;
-}
-
-//******************************************************************************
-//
-// ParseConfigFile ()
-//
-//******************************************************************************
-
-boolean ParseConfigFile (void)
-{
-// int temp;
- boolean retval = true;
- int version = 0;
-
- ReadInt("Version",&version);
-
- if (version == ROTTVERSION)
- {
- //Read in allowBlitzguardMoreMissileWeps
- ReadBoolean("AllowBlitzguardMoreMissileWeps", &allowBlitzMoreMissileWeps);
-
- //Read in enableAmmoPickups
- ReadBoolean("EnableAmmoPickups", &enableAmmoPickups);
-
- //Read in AutoAim
- ReadBoolean("AutoAim", &autoAim);
-
- //Read in AutoAimMissileWeps
- ReadBoolean("AutoAimMissileWeps", &autoAimMissileWeps);
-
- //Read in EnableExtraPistolDrops
- ReadBoolean("EnableExtraPistolDrops", &enableExtraPistolDrops);
-
- //Read in scaleOffset
-
- ReadInt("FocalWidthOffset", &FocalWidthOffset);
-
- // Read in MouseEnabled
- ReadBoolean("MouseEnabled",&mouseenabled);
-
- // Read in UseMouseLook
- ReadBoolean("UseMouseLook",&usemouselook);
-
- ReadInt("InverseMouse",&inverse_mouse);
-
- ReadBoolean("AllowMovementWithMouseYAxis", &allowMovementWithMouseYAxis);
-
- // Read in UseJump
- ReadBoolean("UseJump",&usejump);
-
- // Read in CrossHair
- ReadBoolean("CrossHair",&iG_aimCross);
-
- // Read in JoystickEnabled
- ReadBoolean("JoystickEnabled",&joystickenabled);
-
- // Read in JoypadEnabled
- ReadBoolean("JoypadEnabled",&joypadenabled);
-
- // Read in JoystickPort
- ReadInt("JoystickPort",&joystickport);
-
- // Read in fullscreen
- ReadBoolean("FullScreen", &sdl_fullscreen);
-
- ReadBoolean("BorderWindow", &borderWindow);
-
- ReadBoolean("BorderlessWindow", &borderlessWindow);
-
-
- // Read in resolution
- ReadInt("ScreenWidth", &iGLOBAL_SCREENWIDTH);
- ReadInt("ScreenHeight", &iGLOBAL_SCREENHEIGHT);
-
- // Read in ViewSize
-
- ReadInt("ViewSize",&viewsize);
-
- // Read in Weaponscale
- ReadInt("Weaponscale",&G_weaponscale);//bna added
- if ((G_weaponscale <150)||(G_weaponscale>600)) {
- if (iGLOBAL_SCREENWIDTH == 320) {
- G_weaponscale=168;
- } else if (iGLOBAL_SCREENWIDTH == 640) {
- G_weaponscale=299;
- } else if (iGLOBAL_SCREENWIDTH == 800) {
- G_weaponscale=376;
- }
- else if (iGLOBAL_SCREENWIDTH == 1024) {
- G_weaponscale=512;
- }
- }
-
- // Read in HUDScale
- ReadInt("HUDScale",&hudRescaleFactor);
-
- // Read in MouseAdjustment
- ReadInt("MouseAdjustment",&mouseadjustment);
-
- // Read in threshold
- ReadInt("Threshold",&threshold);
-
- // Read in Auto Detail
- ReadBoolean ("AutoDetail", &AutoDetailOn);
-
- // Read in Light Dim
- ReadInt ("LightDim", &fulllight);
-
- // Read in Bobbin' On
- ReadBoolean ("BobbingOn", &BobbinOn);
-
- // Read in Double Click Speed
- ReadInt ("DoubleClickSpeed", &DoubleClickSpeed);
-
- // Read in Menu Flip Speed
- ReadInt ("MenuFlipSpeed", &Menuflipspeed);
-
- // Read in Detail Level
- ReadInt ("DetailLevel", &DetailLevel);
-
- // Read in Floor and Ceiling
- ReadInt ("FloorCeiling", &fandc);
-
- // Read in MessagesEnabled
- ReadBoolean ("Messages", &MessagesEnabled );
-
- // Read in Autorun
- ReadInt ("AutoRun", &gamestate.autorun );
-
- // Read in GammaIndex
- ReadInt ("GammaIndex", &gammaindex);
-
- // Read screen blanking time
- ReadInt ("BlankTime", &blanktime);
-
- blanktime=blanktime*60*VBLCOUNTER;
-
- // Read keys
- ReadInt ("Fire", &buttonscan[0]);
- ReadInt ("Strafe", &buttonscan[1]);
- ReadInt ("Run", &buttonscan[2]);
- ReadInt ("Use", &buttonscan[3]);
- ReadInt ("LookUp", &buttonscan[4]);
- ReadInt ("LookDn", &buttonscan[5]);
- ReadInt ("Swap", &buttonscan[6]);
- ReadInt ("Drop", &buttonscan[7]);
- ReadInt ("TargetUp", &buttonscan[8]);
- ReadInt ("TargetDn", &buttonscan[9]);
- ReadInt ("SelPistol", &buttonscan[10]);
- ReadInt ("SelDualPistol",&buttonscan[11]);
- ReadInt ("SelMP40", &buttonscan[12]);
- ReadInt ("SelMissile", &buttonscan[13]);
- ReadInt ("AutoRun", &buttonscan[14]);
- ReadInt ("LiveRemRid", &buttonscan[15]);
- ReadInt ("StrafeLeft", &buttonscan[16]);
- ReadInt ("StrafeRight", &buttonscan[17]);
- ReadInt ("VolteFace", &buttonscan[18]);
- ReadInt ("Aim", &buttonscan[19]);
- ReadInt ("Forward", &buttonscan[20]);
- ReadInt ("Right", &buttonscan[21]);
- ReadInt ("Backward", &buttonscan[22]);
- ReadInt ("Left", &buttonscan[23]);
- ReadInt ("Map", &buttonscan[24]);
- ReadInt ("SendMessage", &buttonscan[25]);
- ReadInt ("DirectMessage",&buttonscan[26]);
-
- ReadInt ("MouseButton0",&buttonmouse[0]);
- ReadInt ("MouseButton1",&buttonmouse[1]);
- ReadInt ("MouseButton2",&buttonmouse[2]);
- ReadInt ("DblClickB0", &buttonmouse[3]);
- ReadInt ("DblClickB1", &buttonmouse[4]);
- ReadInt ("DblClickB2", &buttonmouse[5]);
-
- ReadInt ("JoyButton0", &buttonjoy[0]);
- ReadInt ("JoyButton1", &buttonjoy[1]);
- ReadInt ("JoyButton2", &buttonjoy[2]);
- ReadInt ("JoyButton3", &buttonjoy[3]);
- ReadInt ("DblClickJB0", &buttonjoy[4]);
- ReadInt ("DblClickJB1", &buttonjoy[5]);
- ReadInt ("DblClickJB2", &buttonjoy[6]);
- ReadInt ("DblClickJB3", &buttonjoy[7]);
-
- ReadInt ("JoyMaxX", &joyxmax);
- ReadInt ("JoyMaxY", &joyymax);
- ReadInt ("JoyMinX", &joyxmin);
- ReadInt ("JoyMinY", &joyymin);
-
- ReadInt( "DefaultDifficulty", &DefaultDifficulty );
- ReadInt( "DefaultPlayerCharacter", &DefaultPlayerCharacter );
- ReadInt( "DefaultPlayerColor", &DefaultPlayerColor );
-
- // Get Password string
- GetToken (true);
- if (!stricmp (token, "SecretPassword"))
- {
- GetTokenEOL (false);
- ConvertStringToPasswordString ( &name[0] );
- }
-
- if (!MousePresent)
- mouseenabled = false;
-
- if (!JoysPresent[joystickport])
- joystickenabled = false;
-
- // precaution
-
- if (!joyxmin || !joyxmax || !joyymin || !joyymax)
- joystickenabled = false;
-
- if (joystickenabled)
- IN_SetupJoy (joystickport, joyxmin, joyxmax, joyymin, joyymax);
- }
- else
- retval = false;
-
- return (retval);
-}
-
-
-//******************************************************************************
-//
-// ParseBattleFile ()
-//
-//******************************************************************************
-boolean ParseBattleFile (void)
-{
- boolean retval = true;
- int version = 0;
- int index;
- int temp;
- extern specials BattleSpecialsTimes;
-
- ReadInt("Version",&version);
- if (version != ROTTVERSION)
- retval = false;
- else
- {
- ReadBoolean( "ShowKillCount", &BATTLE_ShowKillCount );
-
- ReadInt( "GodModeTime", &BattleSpecialsTimes.GodModeTime );
- ReadInt( "DogModeTime", &BattleSpecialsTimes.DogModeTime );
- ReadInt( "ShroomsModeTime", &BattleSpecialsTimes.ShroomsModeTime );
- ReadInt( "ElastoModeTime", &BattleSpecialsTimes.ElastoModeTime );
- ReadInt( "AsbestosVestTime", &BattleSpecialsTimes.AsbestosVestTime );
- ReadInt( "BulletProofVestTime", &BattleSpecialsTimes.BulletProofVestTime );
- ReadInt( "GasMaskTime", &BattleSpecialsTimes.GasMaskTime );
- ReadInt( "MercuryModeTime", &BattleSpecialsTimes.MercuryModeTime );
- ReadInt( "GodModeRespawnTime", &BattleSpecialsTimes.GodModeRespawnTime );
- ReadInt( "DogModeRespawnTime", &BattleSpecialsTimes.DogModeRespawnTime );
- ReadInt( "ShroomsModeRespawnTime", &BattleSpecialsTimes.ShroomsModeRespawnTime );
- ReadInt( "ElastoModeRespawnTime", &BattleSpecialsTimes.ElastoModeRespawnTime );
- ReadInt( "AsbestosVestRespawnTime", &BattleSpecialsTimes.AsbestosVestRespawnTime );
- ReadInt( "BulletProofVestRespawnTime", &BattleSpecialsTimes.BulletProofVestRespawnTime );
- ReadInt( "GasMaskRespawnTime", &BattleSpecialsTimes.GasMaskRespawnTime );
- ReadInt( "MercuryModeRespawnTime", &BattleSpecialsTimes.MercuryModeRespawnTime );
-
- ReadBoolean( "EKG", &battlegibs );
-
- for( index = battle_Normal; index < battle_NumBattleModes; index++ )
- {
- // Read Gravity
- temp = BATTLE_Options[ index ].Gravity;
- ReadInt( "Gravity", &temp );
- BATTLE_Options[ index ].Gravity = temp;
-
- // Read Speed
- temp = bo_normal_speed;
- ReadInt( "Speed", &temp );
- if ( ( temp >= bo_normal_speed ) &&
- ( temp <= bo_fast_speed ) )
- {
- BATTLE_Options[ index ].Speed = temp;
- }
-
- if ( ( index != battle_Collector ) && ( index != battle_Tag ) &&
- ( index != battle_Eluder ) )
- {
- // Read Ammo
- temp = bo_normal_shots;
- BATTLE_Options[ index ].Ammo = bo_normal_shots;
- ReadInt( "Ammo", &temp );
- if ( ( temp >= bo_one_shot ) &&
- ( temp <= bo_infinite_shots ) )
- {
- BATTLE_Options[ index ].Ammo = temp;
- }
- }
-
- if ( index != battle_Eluder )
- {
- // Read Hitpoints
- temp = BATTLE_Options[ index ].HitPoints;
- ReadInt( "Hitpoints", &temp );
- BATTLE_Options[ index ].HitPoints = temp;
- }
-
- // Read Spawn Dangers
- temp = 1;
- ReadInt( "SpawnDangers", &temp );
- BATTLE_Options[ index ].SpawnDangers = temp;
-
- if ( index != battle_Eluder )
- {
- // Read Spawn Health
- temp = 1;
- ReadInt( "SpawnHealth", &temp );
- BATTLE_Options[ index ].SpawnHealth = temp;
-
- // Read Spawn Mines
- temp = 0;
- ReadInt( "SpawnMines", &temp );
- BATTLE_Options[ index ].SpawnMines = temp;
- }
-
- if ( ( index != battle_Collector ) && ( index != battle_Tag ) &&
- ( index != battle_Eluder ) )
- {
- // Read Spawn Weapons
- temp = 1;
- ReadInt( "SpawnWeapons", &temp );
- BATTLE_Options[ index ].SpawnWeapons = temp;
-
- // Read Random Weapons
- temp = 0;
- ReadInt( "RandomWeapons", &temp );
- BATTLE_Options[ index ].RandomWeapons = temp;
-
- // Read Weapon Persistence
- temp = 0;
- ReadInt( "WeaponPersistence", &temp );
- BATTLE_Options[ index ].WeaponPersistence = temp;
- }
-
- if ( ( index == battle_Normal ) || ( index == battle_ScoreMore ) ||
- ( index == battle_Hunter ) || ( index == battle_Tag ) )
- {
- // Read Friendly Fire
- temp = 1;
- ReadInt( "FriendlyFire", &temp );
- BATTLE_Options[ index ].FriendlyFire = temp;
- }
-
- if ( index != battle_Eluder )
- {
- // Read Respawn Items
- temp = 1;
- ReadInt( "RespawnItems", &temp );
- BATTLE_Options[ index ].RespawnItems = temp;
- }
-
- // Read Light Level
- temp = bo_light_normal;
- ReadInt( "LightLevel", &temp );
- if ( ( temp >= bo_light_dark ) &&
- ( temp <= bo_light_lightning ) )
- {
- BATTLE_Options[ index ].LightLevel = temp;
- }
-
- if ( ( index != battle_Collector ) && ( index != battle_Scavenger ) )
- {
- // Read Point Goal
- temp = bo_kills_default;
- ReadInt( "PointGoal", &temp );
- BATTLE_Options[ index ].Kills = temp;
- if ( temp < bo_kills_random )
- {
- BATTLE_Options[ index ].Kills = bo_kills_default;
- }
- }
-
- if ( index != battle_Eluder )
- {
- // Read Danger Damage
- temp = bo_danger_normal;
- ReadInt( "DangerDamage", &temp );
- BATTLE_Options[ index ].DangerDamage = temp;
- }
-
- // Read Time Limit
- temp = bo_time_infinite;
- ReadInt( "TimeLimit", &temp );
- if ( ( index == battle_Hunter ) && ( temp == bo_time_infinite ) )
- {
- temp = 99;
- }
- BATTLE_Options[ index ].TimeLimit = temp;
-
- // Read Respawn time
- temp = bo_normal_respawn_time;
- ReadInt( "RespawnTime", &temp );
- BATTLE_Options[ index ].RespawnTime = temp;
- }
- }
-
- return (retval);
-}
-
-//******************************************************************************
-//
-// SetBattleDefaultValues ()
-//
-//******************************************************************************
-
-void SetBattleDefaultValues (void)
-{
- int index;
-
- //
- // no config file, so select default values
- //
- for( index = battle_StandAloneGame; index < battle_NumBattleModes;
- index++ )
- {
- BATTLE_Options[ index ].Gravity = NORMAL_GRAVITY;
- BATTLE_Options[ index ].Speed = bo_normal_speed;
- BATTLE_Options[ index ].Ammo = bo_normal_shots;
- BATTLE_Options[ index ].HitPoints = bo_default_hitpoints;
- BATTLE_Options[ index ].SpawnDangers = 1;
- BATTLE_Options[ index ].SpawnHealth = 1;
- BATTLE_Options[ index ].SpawnMines = 0;
- BATTLE_Options[ index ].SpawnWeapons = 1;
- BATTLE_Options[ index ].RespawnItems = 1;
- BATTLE_Options[ index ].RandomWeapons = 0;
- BATTLE_Options[ index ].WeaponPersistence = 0;
- BATTLE_Options[ index ].FriendlyFire = 1;
- BATTLE_Options[ index ].LightLevel = bo_light_normal;
- BATTLE_Options[ index ].Kills = bo_kills_default;
- BATTLE_Options[ index ].DangerDamage = bo_danger_normal;
- BATTLE_Options[ index ].TimeLimit = bo_time_infinite;
- BATTLE_Options[ index ].RespawnTime = bo_normal_respawn_time;
- }
-
- BATTLE_Options[ battle_CaptureTheTriad ].Kills = 1;
- BATTLE_Options[ battle_Hunter ].TimeLimit = 1;
- BATTLE_Options[ battle_Eluder ].SpawnHealth = 0;
- BATTLE_Options[ battle_Eluder ].RespawnItems = 0;
- BATTLE_Options[ battle_Eluder ].SpawnWeapons = 0;
- BATTLE_Options[ battle_Eluder ].FriendlyFire = 0;
- BATTLE_Options[ battle_Collector ].SpawnWeapons = 0;
- BATTLE_Options[ battle_Collector ].FriendlyFire = 0;
- BATTLE_Options[ battle_Tag ].SpawnWeapons = 0;
- battlegibs=false;
- BATTLE_ShowKillCount = true;
-}
-
-//******************************************************************************
-//
-// SetConfigDefaultValues ()
-//
-//******************************************************************************
-
-void SetConfigDefaultValues (void)
-{
- //
- // no config file, so select default values
- //
- if (MousePresent)
- mouseenabled = true;
-
- joystickenabled = false;
- joypadenabled = false;
- joystickport = 0;
- viewsize = 7;
- mouseadjustment = 5;
- gammaindex = 0;
- gamestate.violence = 3;
- passwordstring[0]=0x7d;
- passwordstring[1]=0x7e;
- passwordstring[2]=0x4a;
- passwordstring[3]=0x2d;
- passwordstring[4]=0x3b;
- passwordstring[5]=0x6a;
- passwordstring[6]=0x03;
- passwordstring[7]=0x19;
- passwordstring[8]=0x55;
- passwordstring[9]=0x46;
- passwordstring[10]=0x54;
- passwordstring[11]=0x23;
- passwordstring[12]=0x1c;
-}
-
-//******************************************************************************
-//
-// DeleteSoundFile ()
-//
-//******************************************************************************
-void DeleteSoundFile ( void )
-{
- char filename[ 128 ];
-
- GetPathFromEnvironment( filename, ApogeePath, SoundName );
- unlink (filename); // Delete SOUND.ROT
-}
-
-//******************************************************************************
-//
-// ReadConfig ()
-//
-//******************************************************************************
-
-
-void ReadConfig (void)
-{
- char filename[ 128 ];
-
- GetPathFromEnvironment( filename, ApogeePath, SoundName );
- SetSoundDefaultValues ();
-
- if (access (filename, F_OK) == 0)
- {
- LoadScriptFile (filename);
-
- if (ParseSoundFile () == false)
- {
- DeleteSoundFile();
- }
-
- Z_Free (scriptbuffer);
- }
-
- ReadScores();
-
- GetPathFromEnvironment( filename, ApogeePath, ConfigName );
- SetConfigDefaultValues ();
- if (access(filename,F_OK)==0)
- {
- LoadScriptFile(filename);
-
- if (ParseConfigFile () == false)
- {
- unlink (filename); // Delete CONFIG.ROT
- }
-
- Z_Free(scriptbuffer);
- }
-
- GetPathFromEnvironment( filename, ApogeePath, BattleName );
- SetBattleDefaultValues ();
- if (access(filename,F_OK)==0)
- {
- LoadScriptFile(filename);
-
- if (ParseBattleFile() == false)
- {
- unlink (filename); // Delete BATTLE.ROT
- }
-
- Z_Free(scriptbuffer);
- }
- ConfigLoaded = true;
-}
-
-//******************************************************************************
-//
-// CheckVendor ()
-//
-//******************************************************************************
-
-#if (SHAREWARE==1)
-#define VENDORDOC ("VENDOR.DOC")
-#define VENDORLUMP ("VENDOR")
-#else
-#define VENDORDOC ("LICENSE.DOC")
-#define VENDORLUMP ("LICENSE")
-#endif
-
-void CheckVendor (void)
-{
- boolean saveout=false;
- int wadcrc;
- int filecrc;
- int size;
- int lump;
- byte * vendor;
- char filename[ 128 ];
-
- GetPathFromEnvironment( filename, ApogeePath, VENDORDOC );
- if (access (filename, F_OK) == 0)
- {
- size = LoadFile(filename,(void **)&vendor);
- filecrc = CalculateCRC (vendor, size);
- SafeFree(vendor);
- lump=W_GetNumForName(VENDORLUMP);
- vendor = W_CacheLumpNum(lump,PU_CACHE, CvtNull, 1);
- size=W_LumpLength(lump);
- wadcrc = CalculateCRC (vendor, size);
- if (wadcrc != filecrc)
- saveout=true;
- }
- else
- saveout=true;
-
- if (saveout==true)
- {
- lump=W_GetNumForName(VENDORLUMP);
- vendor = W_CacheLumpNum(lump,PU_CACHE, CvtNull, 1);
- size = W_LumpLength(lump);
- SaveFile (filename,vendor,size);
- }
-}
-
-//******************************************************************************
-//
-// WriteParameter
-//
-//******************************************************************************
-
-void WriteParameter (int file, const char * s1, int val)
-{
- char s[50];
-
- // Write out Header
- SafeWriteString (file, (char *)s1);
-
- // Write out space character
- strcpy (&s[0],(const char *)" ");
- SafeWriteString (file, &s[0]);
-
- // Write out value
- itoa(val,&s[0],10);
- SafeWriteString (file, &s[0]);
-
- // Write out EOL character
- strcpy (&s[0],(const char *)"\n");
- SafeWriteString (file, &s[0]);
-}
-
-
-//******************************************************************************
-//
-// WriteParameterHex
-//
-//******************************************************************************
-
-void WriteParameterHex (int file, const char * s1, int val)
-{
- char s[50];
-
- // Write out Header
- SafeWriteString (file, (char *)s1);
-
- // Write out space character
- strcpy (&s[0],(const char *)" $");
- SafeWriteString (file, &s[0]);
-
- // Write out value
- itoa(val,&s[0],16);
- SafeWriteString (file, &s[0]);
-
- // Write out EOL character
- strcpy (&s[0],(const char *)"\n");
- SafeWriteString (file, &s[0]);
-}
-
-
-
-//******************************************************************************
-//
-// WriteScores ()
-//
-//******************************************************************************
-
-void WriteScores (void)
-{
- int file;
- char filename[ 128 ];
-
- GetPathFromEnvironment( filename, ApogeePath, ScoresName );
- file=SafeOpenWrite( filename );
- SafeWrite (file, &Scores, sizeof (Scores));
- close(file);
-}
-
-
-//******************************************************************************
-//
-// WriteBattleConfig ()
-//
-//******************************************************************************
-
-void WriteBattleConfig
-(
- void
-)
-
-{
- int file;
- int index;
- char filename[ 128 ];
- extern specials BattleSpecialsTimes;
-
- // Write Battle File
- GetPathFromEnvironment( filename, ApogeePath, BattleName );
- file = open( filename, O_RDWR | O_TEXT | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR );
-
- if ( file == -1 )
- {
- Error( "Error opening %s: %s", filename, strerror( errno ) );
- }
-
- // Write out BATTLECONFIG header
- SafeWriteString( file,
- ";Rise of the Triad Battle Configuration File\n"
- "; (c) 1995\n"
- ";\n"
- ";You may change these options at you own risk. Using any values\n"
- ";other than the ones documented may make the game unplayable.\n"
- ";If this happens, you may delete this file (BATTLE.ROT) and ROTT\n"
- ";will recreate it with the default values selected.\n"
- ";\n"
- ";With that in mind, have fun!\n"
- ";\n"
- "\n" );
-
- // Write out Version
- WriteParameter( file, "Version ", ROTTVERSION );
-
- // Write out BATTLE_ShowKillPics
- SafeWriteString(file, "\n;\n");
- WriteParameter( file, "; Yes - ", 1 );
- WriteParameter( file, "; No - ", 0 );
- WriteParameter( file, "ShowKillCount ", BATTLE_ShowKillCount );
-
- // Write out specials' times
- SafeWriteString(file, "\n;\n"
- "; These are the time in seconds of the various powerups.\n"
- "; You could modify these to give you infinite Mercury mode,\n"
- "; stronger vests, or to make them persistent.\n;\n" );
-
- WriteParameter( file, "GodModeTime ", BattleSpecialsTimes.GodModeTime );
- WriteParameter( file, "DogModeTime ", BattleSpecialsTimes.DogModeTime );
- WriteParameter( file, "ShroomsModeTime ", BattleSpecialsTimes.ShroomsModeTime );
- WriteParameter( file, "ElastoModeTime ", BattleSpecialsTimes.ElastoModeTime );
- WriteParameter( file, "AsbestosVestTime ", BattleSpecialsTimes.AsbestosVestTime );
- WriteParameter( file, "BulletProofVestTime ", BattleSpecialsTimes.BulletProofVestTime );
- WriteParameter( file, "GasMaskTime ", BattleSpecialsTimes.GasMaskTime );
- WriteParameter( file, "MercuryModeTime ", BattleSpecialsTimes.MercuryModeTime );
- WriteParameter( file, "GodModeRespawnTime ", BattleSpecialsTimes.GodModeRespawnTime );
- WriteParameter( file, "DogModeRespawnTime ", BattleSpecialsTimes.DogModeRespawnTime );
- WriteParameter( file, "ShroomsModeRespawnTime ", BattleSpecialsTimes.ShroomsModeRespawnTime );
- WriteParameter( file, "ElastoModeRespawnTime ", BattleSpecialsTimes.ElastoModeRespawnTime );
- WriteParameter( file, "AsbestosVestRespawnTime ", BattleSpecialsTimes.AsbestosVestRespawnTime );
- WriteParameter( file, "BulletProofVestRespawnTime ", BattleSpecialsTimes.BulletProofVestRespawnTime );
- WriteParameter( file, "GasMaskRespawnTime ", BattleSpecialsTimes.GasMaskRespawnTime );
- WriteParameter( file, "MercuryModeRespawnTime ", BattleSpecialsTimes.MercuryModeRespawnTime );
-
- // Write out battlegibs
- SafeWriteString(file, "\n;\n");
- WriteParameter( file, "; Yes - ", 1 );
- WriteParameter( file, "; No - ", 0 );
- WriteParameter( file, "EKG ", battlegibs );
-
- // Describe options
-
- // Write out Gravity
- SafeWriteString(file, "\n"
- ";\n"
- "; Here is a description of the possible values for"
- " each option:\n"
- ";\n"
- "; Gravity options:\n" );
- WriteParameter( file, "; Low Gravity - ", LOW_GRAVITY );
- WriteParameter( file, "; Normal Gravity - ", NORMAL_GRAVITY );
- WriteParameter( file, "; High Gravity - ", HIGH_GRAVITY );
-
- // Write out Speed
- SafeWriteString(file, ";\n"
- "; Speed options:\n" );
- WriteParameter( file, "; Normal Speed - ", bo_normal_speed );
- WriteParameter( file, "; Fast Speed - ", bo_fast_speed );
-
- // Write out Ammo
- SafeWriteString(file, ";\n"
- "; Ammo options:\n" );
- WriteParameter( file, "; One Shot - ", bo_one_shot );
- WriteParameter( file, "; Normal Shots - ", bo_normal_shots );
- WriteParameter( file, "; Infinite Shots - ", bo_infinite_shots );
-
- // Write out Hit Points
- SafeWriteString(file, ";\n"
- "; Hitpoint options:\n" );
- WriteParameter( file, "; Character Hitpoints - ", bo_character_hitpoints );
- WriteParameter( file, "; 1 Hitpoint - ", 1 );
- WriteParameter( file, "; 25 Hitpoints - ", 25 );
- WriteParameter( file, "; 100 Hitpoints - ", 100 );
- WriteParameter( file, "; 500 Hitpoints - ", 500 );
- WriteParameter( file, "; 250 Hitpoints - ", 250 );
- WriteParameter( file, "; 4000 Hitpoints - ", 4000 );
-
- // Write out Danger Spawning
- SafeWriteString(file, ";\n"
- "; SpawnDangers options:\n"
- "; Spawn Dangers - 1\n"
- "; Don't Spawn Dangers - 0\n" );
-
- // Write out Health Spawning
- SafeWriteString(file, ";\n"
- "; SpawnHealth options:\n"
- "; Spawn Health - 1\n"
- "; Don't Spawn Health - 0\n" );
-
- // Write out Mine Spawning
- SafeWriteString(file, ";\n"
- "; SpawnMines options:\n"
- "; Spawn Mines - 1\n"
- "; Don't Spawn Mines - 0\n" );
-
- // Write out Weapon Spawning
- SafeWriteString(file, ";\n"
- "; SpawnWeapons options:\n"
- "; Spawn Weapons - 1\n"
- "; Don't Spawn Weapons - 0\n" );
-
- // Write out Random Weapons
- SafeWriteString(file, ";\n"
- "; RandomWeapons options:\n"
- "; Randomize Weapons - 1\n"
- "; Don't Randomize Weapons - 0\n" );
-
- // Write out Weapon Persistence
- SafeWriteString(file, ";\n"
- "; WeaponPersistence options:\n"
- "; Weapons Persist - 1\n"
- "; Weapons don't Persist - 0\n" );
-
- // Write out Friendly Fire
- SafeWriteString(file, ";\n"
- "; FriendlyFire options:\n"
- "; Penalize Friendly Fire - 1\n"
- "; No penalty - 0\n" );
-
- // Write out Respawn Items
- SafeWriteString(file, ";\n"
- "; RespawnItems options:\n"
- "; Respawn Items - 1\n"
- "; Don't Respawn Items - 0\n" );
-
- // Write out Light Level
- SafeWriteString(file, ";\n"
- "; LightLevel options:\n" );
- WriteParameter( file, "; Dark - ", bo_light_dark );
- WriteParameter( file, "; Normal Light Levels - ", bo_light_normal );
- WriteParameter( file, "; Bright - ", bo_light_bright );
- WriteParameter( file, "; Fog - ", bo_light_fog );
- WriteParameter( file, "; Periodic light - ", bo_light_periodic );
- WriteParameter( file, "; Lightning - ", bo_light_lightning );
-
- // Write out Point Goal
- SafeWriteString(file, ";\n"
- "; PointGoal options:\n" );
- WriteParameter( file, "; 1 Point - ", 1 );
- WriteParameter( file, "; 5 Points - ", 5 );
- WriteParameter( file, "; 11 Points - ", 11 );
- WriteParameter( file, "; 21 Points - ", 21 );
- WriteParameter( file, "; 50 Points - ", 50 );
- WriteParameter( file, "; 100 Points - ", 100 );
- WriteParameter( file, "; Random Points - ", bo_kills_random );
- WriteParameter( file, "; Blind Points - ", bo_kills_blind );
- WriteParameter( file, "; Infinite Points - ", bo_kills_infinite );
-
- // Write out Danger Damage
- SafeWriteString(file, ";\n"
- "; DangerDamage options:\n" );
- WriteParameter( file, "; Normal Damage - ", bo_danger_normal );
- WriteParameter( file, "; Low Damage - ", bo_danger_low );
- WriteParameter( file, "; Kill - ", bo_danger_kill );
-
- // Write out TimeLimit
- SafeWriteString(file, ";\n"
- "; TimeLimit options:\n" );
- WriteParameter( file, "; 1 minute - ", 1 );
- WriteParameter( file, "; 2 minute - ", 2 );
- WriteParameter( file, "; 5 minutes - ", 5 );
- WriteParameter( file, "; 10 minutes - ", 10 );
- WriteParameter( file, "; 21 minutes - ", 21 );
- WriteParameter( file, "; 30 minutes - ", 30 );
- WriteParameter( file, "; 99 minutes - ", 99 );
- WriteParameter( file, "; No limit - ", bo_time_infinite );
-
- // Write out RespawnTime
- SafeWriteString(file, ";\n"
- "; RespawnTime options:\n" );
- WriteParameter( file, "; 1 second - ", 1 );
- WriteParameter( file, "; 1 minute - ", 60 );
- WriteParameter( file, "; 2 minutes - ", 120 );
- WriteParameter( file, "; normal - ", bo_normal_respawn_time );
-
- for( index = battle_Normal; index < battle_NumBattleModes; index++ )
- {
- SafeWriteString(file, "\n;\n");
- switch( index )
- {
- case battle_Normal :
- SafeWriteString( file, "; Standard battle options\n;\n" );
- break;
-
- case battle_ScoreMore :
- SafeWriteString( file, "; Score More battle options\n;\n" );
- break;
-
- case battle_Collector :
- SafeWriteString( file, "; Collector battle options\n;\n" );
- break;
-
- case battle_Scavenger :
- SafeWriteString( file, "; Scavenger battle options\n;\n" );
- break;
-
- case battle_Hunter :
- SafeWriteString( file, "; Hunter battle options\n;\n" );
- break;
-
- case battle_Tag :
- SafeWriteString( file, "; Tag battle options\n;\n" );
- break;
-
- case battle_Eluder :
- SafeWriteString( file, "; Eluder battle options\n;\n" );
- break;
-
- case battle_Deluder :
- SafeWriteString( file, "; Deluder battle options\n;\n" );
- break;
-
- case battle_CaptureTheTriad :
- SafeWriteString( file, "; Capture the Triad battle options\n;\n" );
- break;
- }
-
- // Write out Gravity
- WriteParameter( file, "Gravity ",
- BATTLE_Options[ index ].Gravity );
-
- // Write out Speed
- WriteParameter( file, "Speed ",
- BATTLE_Options[ index ].Speed );
-
- if ( ( index != battle_Collector ) && ( index != battle_Tag ) &&
- ( index != battle_Eluder ) )
- {
- // Write out Ammo
- WriteParameter( file, "Ammo ",
- BATTLE_Options[ index ].Ammo );
- }
-
- if ( index != battle_Eluder )
- {
- // Write out Hit Points
- WriteParameter( file, "Hitpoints ",
- BATTLE_Options[ index ].HitPoints );
- }
-
- // Write out Danger Spawning
- WriteParameter( file, "SpawnDangers ",
- BATTLE_Options[ index ].SpawnDangers );
-
- if ( index != battle_Eluder )
- {
- // Write out Health Spawning
- WriteParameter( file, "SpawnHealth ",
- BATTLE_Options[ index ].SpawnHealth );
-
- // Write out Mine Spawning
- WriteParameter( file, "SpawnMines ",
- BATTLE_Options[ index ].SpawnMines );
- }
-
- if ( ( index != battle_Collector ) && ( index != battle_Tag ) &&
- ( index != battle_Eluder ) )
- {
- // Write out Weapon Spawning
- WriteParameter( file, "SpawnWeapons ",
- BATTLE_Options[ index ].SpawnWeapons );
-
- // Write out Random Weapons
- WriteParameter( file, "RandomWeapons ",
- BATTLE_Options[ index ].RandomWeapons );
-
- // Write out Weapon Persistence
- WriteParameter( file, "WeaponPersistence",
- BATTLE_Options[ index ].WeaponPersistence );
- }
-
- if ( ( index == battle_Normal ) || ( index == battle_ScoreMore ) ||
- ( index == battle_Hunter ) || ( index == battle_Tag ) )
- {
- // Write out Friendly Fire
- WriteParameter( file, "FriendlyFire ",
- BATTLE_Options[ index ].FriendlyFire );
- }
-
- if ( index != battle_Eluder )
- {
- // Write out Respawn Items
- WriteParameter( file, "RespawnItems ",
- BATTLE_Options[ index ].RespawnItems );
- }
-
- // Write out Light Level
- WriteParameter( file, "LightLevel ",
- BATTLE_Options[ index ].LightLevel );
-
- if ( ( index != battle_Collector ) && ( index != battle_Scavenger ) )
- {
- // Write out Point Goal
- WriteParameter( file, "PointGoal ",
- BATTLE_Options[ index ].Kills );
- }
-
- if ( index != battle_Eluder )
- {
- // Write out Danger Damage
- WriteParameter( file, "DangerDamage ",
- BATTLE_Options[ index ].DangerDamage );
- }
-
- // Write out TimeLimit
- WriteParameter( file, "TimeLimit ",
- BATTLE_Options[ index ].TimeLimit );
-
- // Write out RespawnTime
- WriteParameter( file, "RespawnTime ",
- BATTLE_Options[ index ].RespawnTime );
- }
-
- close( file );
-}
-
-//******************************************************************************
-//
-// WriteSoundConfig ()
-//
-//******************************************************************************
-
-void WriteSoundConfig
-(
- void
-)
-
-{
- int file;
- char filename[ 128 ];
-
- if ( !WriteSoundFile )
- {
- return;
- }
-
- GetPathFromEnvironment( filename, ApogeePath, SoundName );
- file = open( filename, O_RDWR | O_TEXT | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR );
-
- //file = open ( filename, O_RDWR | O_TEXT | O_CREAT | O_TRUNC );
-
- if (file == -1)
- Error ("Error opening %s: %s", filename, strerror(errno));
-
- // Write out ROTTSOUND header
-
- SafeWriteString (file, ";Rise of the Triad Sound File\n");
- SafeWriteString (file, "; (c) 1995\n\n");
-
- // Write out Version
-
- WriteParameter(file,"Version ",ROTTVERSION);
-
- // Write out Music Mode
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Music Modes\n");
- SafeWriteString(file,"; 0 - Off\n");
- SafeWriteString(file,"; 6 - On\n");
- WriteParameter(file,"MusicMode ",MusicMode);
-
- // Write out FX Mode
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; FX Modes\n");
- SafeWriteString(file,"; 0 - Off\n");
- SafeWriteString(file,"; 6 - On\n");
- WriteParameter(file,"FXMode ",FXMode);
-
- // Write in Music Volume
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Music Volume\n");
- SafeWriteString(file,"; (low) 0 - 255 (high)\n");
- WriteParameter (file, "MusicVolume ", MUvolume);
-
- // Write in FX Volume
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; FX Volume\n");
- SafeWriteString(file,"; (low) 0 - 255 (high)\n");
- WriteParameter (file, "FXVolume ", FXvolume);
-
- // Write out numvoices
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Number of Voices\n");
- SafeWriteString(file,"; 1 - 8\n");
- WriteParameter(file,"NumVoices ",NumVoices);
-
- // Write out numchannels
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Stereo or Mono\n");
- SafeWriteString(file,"; 1 - Mono\n");
- SafeWriteString(file,"; 2 - Stereo\n");
- WriteParameter(file,"NumChannels ",NumChannels);
-
- // Write out numbits
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Resolution\n");
- SafeWriteString(file,"; 8 bit\n");
- SafeWriteString(file,"; 16 bit\n");
- WriteParameter(file,"NumBits ",NumBits);
-
- // Write out stereo reversal
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; ReverseStereo\n");
- SafeWriteString(file,"; 0 no reversal\n");
- SafeWriteString(file,"; 1 reverse stereo\n");
- WriteParameter (file,"StereoReverse ",stereoreversed);
- close (file);
-}
-
-
-//******************************************************************************
-//
-// WriteConfig ()
-//
-//******************************************************************************
-
-extern boolean writeNewResIntoCfg;
-extern int ScreenWidthToWriteToCfg;
-extern int ScreenHeightToWriteToCfg;
-
-void WriteConfig (void)
-{
- int file;
- char filename[ 128 ];
- char passwordtemp[50];
- static int inconfig = 0;
-
- if (inconfig > 0)
- return;
-
- inconfig++ ;
-
- if ( !ConfigLoaded )
- {
- return;
- }
-
- // Write Sound File
- WriteSoundConfig();
-
- // Write Config, Battle and Score files
- WriteScores();
- WriteBattleConfig();
-
- GetPathFromEnvironment( filename, ApogeePath, ConfigName );
-
- file = open( filename, O_RDWR | O_TEXT | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR );
-
- //file = open( filename,O_RDWR | O_TEXT | O_CREAT | O_TRUNC );
-
- if (file == -1)
- Error ("Error opening %s: %s",filename,strerror(errno));
-
- // Write out ROTTCONFIG header
-
- SafeWriteString (file, ";Rise of the Triad Configuration File\n");
- SafeWriteString (file, "; (c) 1995\n\n");
-
- // Write out Version
-
- WriteParameter(file,"Version ",ROTTVERSION);
-
- //Write out AllowBlitzguardMoreMissileWeps
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file, "; 1 - Allows Blitzguards to have Random Missile weapons\n");
- SafeWriteString(file, "; 0 - Disallows the above (ROTT Default)\n");
- WriteParameter(file, "AllowBlitzguardMoreMissileWeps ", allowBlitzMoreMissileWeps);
-
- //Write out enableAmmoPickups
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file, "; 1 - Allows players to refill their missile weapons by running over one a matching one on the ground\n");
- SafeWriteString(file, "; 0 - Disables the above (ROTT default)\n");
- WriteParameter(file, "EnableAmmoPickups ", enableAmmoPickups);
-
- //Write out autoAim
-
- SafeWriteString(file, "\n;\n");
- SafeWriteString(file, "; 1 - Bullet weapons will automatically target enemies. (ROTT default)\n");
- SafeWriteString(file, "; 0 - Disables the above.\n");
- WriteParameter(file, "AutoAim ", autoAim);
-
- //Write out autoAimMissileWeps
-
- SafeWriteString(file, "\n;\n");
- SafeWriteString(file, "; 1 - Missile weapons will be automatically aimed at targets like bullet weapons.\n");
- SafeWriteString(file, "; 0 - Missile weapons are not automatically aimed at targets. (ROTT default)\n");
- WriteParameter(file, "AutoAimMissileWeps ", autoAimMissileWeps);
-
- //Write out enableExtraPistolDrops
-
- SafeWriteString(file, "\n;\n");
- SafeWriteString(file, "; 1 - Enemies equipped with pistols have a chance of dropping an extra pistol when killed.\n");
- SafeWriteString(file, "; 0 - Enemies will not drop extra pistols at all. (Default)\n");
- WriteParameter(file, "EnableExtraPistolDrops ", enableExtraPistolDrops);
-
- //Write out scaleOffset
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Field Of View offset\n");
- WriteParameter(file,"FocalWidthOffset ",FocalWidthOffset);
-
- // Write out MouseEnabled
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 1 - Mouse Enabled\n");
- SafeWriteString(file,"; 0 - Mouse Disabled\n");
- WriteParameter(file,"MouseEnabled ",mouseenabled);
-
- // Write out UseMouseLook
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 1 - UseMouseLook Enabled\n");
- SafeWriteString(file,"; 0 - UseMouseLook Disabled\n");
- WriteParameter(file,"UseMouseLook ",usemouselook);
-
- // Write out InverseMouse
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 1 - Normal Mouse Enabled\n");
- SafeWriteString(file,"; -1 - Inverse Mouse Enabled\n");
- WriteParameter(file,"InverseMouse ",inverse_mouse);
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 1 - Allows X and Y movement with Mouse. (Default)\n");
- SafeWriteString(file,"; 0 - Allow only X movement with Mouse.\n");
- WriteParameter(file,"allowMovementWithMouseYAxis ",allowMovementWithMouseYAxis);
-
- // Write out UseJump
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 1 - usejump Enabled\n");
- SafeWriteString(file,"; 0 - usejump Disabled\n");
- WriteParameter(file,"UseJump ",usejump);
-
- // Write out CrossHair
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 1 - CrossHair Enabled\n");
- SafeWriteString(file,"; 0 - CrossHair Disabled\n");
- WriteParameter(file,"CrossHair ", iG_aimCross);
-
- // Write out JoystickEnabled
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 1 - Joystick Enabled\n");
- SafeWriteString(file,"; 0 - Joystick Disabled\n");
- WriteParameter(file,"JoystickEnabled ",joystickenabled);
-
- // Write out JoypadEnabled
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 1 - Joypad Enabled\n");
- SafeWriteString(file,"; 0 - Joypad Disabled\n");
- WriteParameter(file,"JoypadEnabled ",joypadenabled);
-
- // Write out JoystickPort
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 0 - Use Joystick Port 1\n");
- SafeWriteString(file,"; 1 - Use Joystick Port 2\n");
- WriteParameter(file,"JoystickPort ",joystickport);
-
- // Write out fullscreen
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 0 - Start in windowed mode\n");
- SafeWriteString(file,"; 1 - Start in fullscreen mode\n");
- WriteParameter(file,"FullScreen ",sdl_fullscreen);
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file, "; 0 - Don't start in bordered window mode\n");
- SafeWriteString(file, "; 1 - Start in bordered window mode\n");
- WriteParameter(file, "BorderWindow ", borderWindow);
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file, "; 0 - Don't start in borderless window mode\n");
- SafeWriteString(file, "; 1 - Start in borderless window mode\n");
- WriteParameter(file, "BorderlessWindow ", borderlessWindow);
-
- // Write out resolution
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Screen Resolution, supported resolutions: \n");
- SafeWriteString(file,"; 320x200, 640x480 and 800x600\n");
-
- //WriteParameter(file,"ScreenWidth ",iGLOBAL_SCREENWIDTH);
- //WriteParameter(file,"ScreenHeight ",iGLOBAL_SCREENHEIGHT);
-
- if (writeNewResIntoCfg)
- {
- WriteParameter(file,"ScreenWidth ",ScreenWidthToWriteToCfg);
- WriteParameter(file,"ScreenHeight ",ScreenHeightToWriteToCfg);
- }
- else
- {
- WriteParameter(file,"ScreenWidth ",iGLOBAL_SCREENWIDTH);
- WriteParameter(file,"ScreenHeight ",iGLOBAL_SCREENHEIGHT);
- }
-
-
- // Write out ViewSize
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Size of View port.\n");
- SafeWriteString(file,"; (smallest) 0 - 10 (largest)\n");
- WriteParameter(file,"ViewSize ",viewsize);
-
- // Write out WEAPONSCALE bna added
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Size of Weaponscale.\n");
- SafeWriteString(file,"; (smallest) 150 - 600 (largest)\n");
- G_weaponscale = (weaponscale * 168 )/65536;
-
- if ((G_weaponscale <150)||(G_weaponscale>600)) {
- if (iGLOBAL_SCREENWIDTH == 320) {
- G_weaponscale=168;
- } else if (iGLOBAL_SCREENWIDTH == 640) {
- G_weaponscale=299;
- } else if (iGLOBAL_SCREENWIDTH == 800) {
- G_weaponscale=376;
- }
- else if (iGLOBAL_SCREENWIDTH == 1024)
- {
- G_weaponscale=512;
- }
- }
- WriteParameter(file,"Weaponscale ",G_weaponscale);
-
-
- // Write out HUD Scale
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; HUD Scale.\n");
- if (writeNewResIntoCfg)
- {
- WriteParameter(file,"HUDScale ",HudScaleToWriteToCfg);
- }
- else
- {
- WriteParameter(file,"HUDScale ",hudRescaleFactor);
- }
-
- // Write out MouseAdjustment
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Sensitivity of Mouse\n");
- SafeWriteString(file,"; (lowest) 0 - 11 (highest)\n");
- WriteParameter(file,"MouseAdjustment ",mouseadjustment);
-
- // Write out threshold
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Threshold of Mouse and Joystick\n");
- SafeWriteString(file,"; (smallest) 1 - 15 (largest)\n");
- WriteParameter(file,"Threshold ",threshold);
-
- // Write in Auto Detail
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 1 - Auto Detail on\n");
- SafeWriteString(file,"; 0 - Auto Detail off\n");
- WriteParameter (file,"AutoDetail ", AutoDetailOn);
-
- // Write in Light Dim
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 1 - Light Diminishing on\n");
- SafeWriteString(file,"; 0 - Light Diminishing off\n");
- WriteParameter (file,"LightDim ", fulllight);
-
- // Write in Bobbin' On
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 1 - Bobbing on\n");
- SafeWriteString(file,"; 0 - Bobbing off\n");
- WriteParameter (file,"BobbingOn ", BobbinOn);
-
- // Write in Double Click Speed
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; (slowest) 50 - 5 (fastest)\n");
- WriteParameter (file,"DoubleClickSpeed ", DoubleClickSpeed);
-
- // Write in Menu Flip Speed
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Menu Flip Speed\n");
- SafeWriteString(file,"; (slowest) 100 - 5 (fastest)\n");
- WriteParameter (file,"MenuFlipSpeed ", Menuflipspeed);
-
- // Write in Detail Level
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 0 - Detail Level Low\n");
- SafeWriteString(file,"; 1 - Detail Level Medium\n");
- SafeWriteString(file,"; 2 - Detail Level High\n");
- WriteParameter (file,"DetailLevel ", DetailLevel);
-
- // Write in Floor and Ceiling
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 1 - Floor and Ceiling on\n");
- SafeWriteString(file,"; 0 - Floor and Ceiling off\n");
- WriteParameter (file,"FloorCeiling ", fandc);
-
- // Write in DisableMessages
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 1 - Messages on\n");
- SafeWriteString(file,"; 0 - Messages off\n");
- WriteParameter (file,"Messages ", MessagesEnabled );
-
- // Write in AutoRun
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 1 - AutoRun on\n");
- SafeWriteString(file,"; 0 - AutoRun off\n");
- WriteParameter (file,"AutoRun ", gamestate.autorun );
-
- // Write in GammaIndex
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; 0 - Gamma Correction level 1\n");
- SafeWriteString(file,"; 1 - Gamma Correction level 2\n");
- SafeWriteString(file,"; 2 - Gamma Correction level 3\n");
- SafeWriteString(file,"; 3 - Gamma Correction level 4\n");
- SafeWriteString(file,"; 4 - Gamma Correction level 5\n");
- WriteParameter (file,"GammaIndex ", gammaindex);
-
- // Write out screen saver time
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Minutes before screen blanking\n");
- WriteParameter (file,"BlankTime ", blanktime/(VBLCOUNTER*60));
-
-
- // Write out keys
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Scan codes for keyboard buttons\n");
- WriteParameter (file,"Fire ", buttonscan[0]);
- WriteParameter (file,"Strafe ", buttonscan[1]);
- WriteParameter (file,"Run ", buttonscan[2]);
- WriteParameter (file,"Use ", buttonscan[3]);
- WriteParameter (file,"LookUp ", buttonscan[4]);
- WriteParameter (file,"LookDn ", buttonscan[5]);
- WriteParameter (file,"Swap ", buttonscan[6]);
- WriteParameter (file,"Drop ", buttonscan[7]);
- WriteParameter (file,"TargetUp ", buttonscan[8]);
- WriteParameter (file,"TargetDn ", buttonscan[9]);
- WriteParameter (file,"SelPistol ", buttonscan[10]);
- WriteParameter (file,"SelDualPistol ", buttonscan[11]);
- WriteParameter (file,"SelMP40 ", buttonscan[12]);
- WriteParameter (file,"SelMissile ", buttonscan[13]);
- WriteParameter (file,"AutoRun ", buttonscan[14]);
- WriteParameter (file,"LiveRemRid ", buttonscan[15]);
- WriteParameter (file,"StrafeLeft ", buttonscan[16]);
- WriteParameter (file,"StrafeRight ", buttonscan[17]);
- WriteParameter (file,"VolteFace ", buttonscan[18]);
- WriteParameter (file,"Aim ", buttonscan[19]);
- WriteParameter (file,"Forward ", buttonscan[20]);
- WriteParameter (file,"Right ", buttonscan[21]);
- WriteParameter (file,"Backward ", buttonscan[22]);
- WriteParameter (file,"Left ", buttonscan[23]);
- WriteParameter (file,"Map ", buttonscan[24]);
- WriteParameter (file,"SendMessage ", buttonscan[25]);
- WriteParameter (file,"DirectMessage ", buttonscan[26]);
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Mouse buttons\n");
-
- WriteParameter (file,"MouseButton0 ", buttonmouse[0]);
- WriteParameter (file,"MouseButton1 ", buttonmouse[1]);
- WriteParameter (file,"MouseButton2 ", buttonmouse[2]);
- WriteParameter (file,"DblClickB0 ", buttonmouse[3]);
- WriteParameter (file,"DblClickB1 ", buttonmouse[4]);
- WriteParameter (file,"DblClickB2 ", buttonmouse[5]);
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Joystick buttons\n");
-
- WriteParameter (file,"JoyButton0 ", buttonjoy[0]);
- WriteParameter (file,"JoyButton1 ", buttonjoy[1]);
- WriteParameter (file,"JoyButton2 ", buttonjoy[2]);
- WriteParameter (file,"JoyButton3 ", buttonjoy[3]);
- WriteParameter (file,"DblClickJB0 ", buttonjoy[4]);
- WriteParameter (file,"DblClickJB1 ", buttonjoy[5]);
- WriteParameter (file,"DblClickJB2 ", buttonjoy[6]);
- WriteParameter (file,"DblClickJB3 ", buttonjoy[7]);
-
- SafeWriteString(file,"\n;\n");
- SafeWriteString(file,"; Joystick calibration coordinates\n");
-
- WriteParameter (file,"JoyMaxX ", joyxmax);
- WriteParameter (file,"JoyMaxY ", joyymax);
- WriteParameter (file,"JoyMinX ", joyxmin);
- WriteParameter (file,"JoyMinY ", joyymin);
-
- // Write out DefaultDifficulty
- SafeWriteString(file,"\n;\n");
- WriteParameter(file,"; Easy - ", gd_baby );
- WriteParameter(file,"; Medium - ", gd_easy );
- WriteParameter(file,"; Hard - ", gd_medium );
- WriteParameter(file,"; Crezzy - ", gd_hard );
- WriteParameter(file,"DefaultDifficulty ", DefaultDifficulty );
-
- // Write out DefaultPlayerCharacter
- SafeWriteString(file,"\n;\n");
- WriteParameter(file,"; Taradino Cassatt - ", 0 );
- WriteParameter(file,"; Thi Barrett - ", 1 );
- WriteParameter(file,"; Doug Wendt - ", 2 );
- WriteParameter(file,"; Lorelei Ni - ", 3 );
- WriteParameter(file,"; Ian Paul Freeley - ", 4 );
- WriteParameter(file,"DefaultPlayerCharacter ", DefaultPlayerCharacter );
-
- // Write out DefaultPlayerColor
- SafeWriteString(file,"\n;\n");
- WriteParameter(file,"; Gray - ", 0 );
- WriteParameter(file,"; Brown - ", 1 );
- WriteParameter(file,"; Black - ", 2 );
- WriteParameter(file,"; Tan - ", 3 );
- WriteParameter(file,"; Red - ", 4 );
- WriteParameter(file,"; Olive - ", 5 );
- WriteParameter(file,"; Blue - ", 6 );
- WriteParameter(file,"; White - ", 7 );
- WriteParameter(file,"; Green - ", 8 );
- WriteParameter(file,"; Purple - ", 9 );
- WriteParameter(file,"; Orange - ", 10 );
- WriteParameter(file,"DefaultPlayerColor ", DefaultPlayerColor );
-
- // Writeout password Password string
- SafeWriteString(file,"\n;\nSecretPassword ");
- memset(passwordtemp,0,sizeof(passwordtemp));
- ConvertPasswordStringToString ( &passwordtemp[0] );
- SafeWriteString(file,&passwordtemp[0]);
-
- close (file);
- inconfig--;
-}
-
-
-//****************************************************************************
-//
-// GetAlternatePath ()
-//
-//****************************************************************************
-
-void GetAlternatePath (char * tokenstr, AlternateInformation *info)
-{
- strcpy (&info->path[0], ".\0");
- GetToken (true);
- if (!stricmp (token, tokenstr))
- {
- GetTokenEOL (false);
- memset (&info->path[0], 0, sizeof (&info->path));
- strcpy (&info->path[0], &name[0]);
- }
-}
-
-
-//****************************************************************************
-//
-// GetAlternateFile ()
-//
-//****************************************************************************
-
-void GetAlternateFile (char * tokenstr, AlternateInformation *info)
-{
- // Read in remote sound file
- //
- strcpy (&info->file[0], "foo.foo\0");
- GetToken (true);
- if (!stricmp (token, tokenstr))
- {
- if (TokenAvailable()==true)
- {
- GetToken (false);
- if (stricmp (token, "~"))
- {
-#if (SHAREWARE == 0)
- info->avail = true;
- memset (&info->file[0], 0, sizeof (&info->file));
- strcpy (&info->file[0], &token[0]);
-#else
- printf("Alternate file %s ignored.\n",token);
- memset (&info->file[0], 0, sizeof (info->file));
-#endif
- }
- }
- }
-}
-
-
-//****************************************************************************
-//
-// ReadSETUPFiles ()
-//
-//****************************************************************************
-
-void ReadSETUPFiles (void)
-{
- char filename[ 128 ];
- int i;
-
- RemoteSounds.avail = false;
-// PlayerGraphics.avail = false;
- GameLevels.avail = false;
- BattleLevels.avail = false;
-
- GetPathFromEnvironment( filename, ApogeePath, CONFIG );
- if (access (filename, F_OK) == 0)
- {
- LoadScriptFile (filename);
-
- GetTokenEOL (true); //MODEMNAME
- GetTokenEOL (true); //MODEMINITSTR
- GetTokenEOL (true); //MODEMHANGUP
- GetTokenEOL (true); //RATE
- GetTokenEOL (true); //COMPORT
- GetTokenEOL (true); //IRQ
- GetTokenEOL (true); //UART
- GetTokenEOL (true); //PULSE
- GetTokenEOL (true); //AUTOMATICDIALOUT
-
- GetAlternatePath ("REMOTESOUNDPATH", &RemoteSounds);
-// GetAlternatePath ("PLAYERGRAPHICSPATH", &PlayerGraphics);
- GetAlternatePath ("GAMELEVELPATH", &GameLevels);
- GetAlternatePath ("BATTLELEVELPATH", &BattleLevels);
-
- // Get CodeName
- GetToken (true);
- if (stricmp (token, "CODENAME"))
- Error ("Can't find %s token.\n", "CODENAME");
-
- GetTokenEOL (false);
- memset (&CodeName[0], 0, sizeof (CodeName));
- if (stricmp (name, "~"))
- {
-
- // Get First (MAXCODENAMELENGTH-1) characters
- for (i=0; i<MAXCODENAMELENGTH-1; i++)
- CodeName[i]=name[i];
- }
- GetTokenEOL (true); //NUMPLAYERS
- GetTokenEOL (true); //NETWORKSOCKET
- GetTokenEOL (true); //DEFAULT
- for (i=0; i<14; i++)
- GetTokenEOL (true); //NUMBERLIST
-
- memset (CommbatMacros, 0, sizeof(CommbatMacros) );
-
- for (i=0; i<MAXMACROS; i++)
- {
- GetToken (true);
-
- GetTokenEOL (true);
-
- if (name[0] != '~')
- {
- memcpy (&CommbatMacros[i].macro[0], &name[0], strlen (name));
- CommbatMacros[i].avail = 1;
- }
- }
-
- Z_Free (scriptbuffer);
- }
-
- GetPathFromEnvironment( filename, ApogeePath, ROTT );
- if (access (filename, F_OK) == 0)
- {
- LoadScriptFile (filename);
-
- GetTokenEOL (true); //PHONENUMBER
-
- GetAlternateFile ("REMOTESOUNDFILE", &RemoteSounds);
-// GetAlternateFile ("PLAYERGRAPHICSFILE", &PlayerGraphics);
- GetAlternateFile ("GAMELEVELFILE", &GameLevels);
- GetAlternateFile ("COMMBATLEVELFILE", &BattleLevels);
-
- Z_Free (scriptbuffer);
-
- unlink (filename); // Delete ROTT.ROT
- }
-}
-
+/*
+Copyright (C) 1994-1995 Apogee Software, Ltd.
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+*/
+//****************************************************************************
+//
+// RT_CFG.C
+//
+//****************************************************************************
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "rt_def.h"
+
+#include "rt_cfg.h"
+#include "version.h"
+
+#include "scriplib.h"
+#include "rt_playr.h"
+#include "rt_menu.h"
+#include "rt_game.h"
+#include "rt_in.h"
+#include "z_zone.h"
+#include "w_wad.h"
+#include "rt_crc.h"
+#include "rt_sound.h"
+#include "rt_util.h"
+#include "rt_main.h"
+#include "rt_view.h"
+#include "rt_msg.h"
+#include "rt_battl.h"
+#include "rt_net.h"
+#include "isr.h"
+#include "fx_man.h"
+#include "develop.h"
+
+
+//******************************************************************************
+//
+// GLOBALS
+//
+//******************************************************************************
+
+extern int G_weaponscale;
+extern boolean iG_aimCross;
+extern int hudRescaleFactor;
+
+boolean WriteSoundFile = true;
+
+int FXMode = 0;
+int MusicMode = 0;
+
+int MUvolume = 196;
+int FXvolume = 196;
+
+boolean mouseenabled = 1;
+boolean usemouselook = 0;
+int inverse_mouse = 1; //set to -1 to invert mouse
+boolean usejump = 0;
+boolean sdl_fullscreen = 1;
+boolean borderWindow = 0;
+boolean borderlessWindow = 0;
+
+boolean allowBlitzMoreMissileWeps = 0;
+boolean enableAmmoPickups = 0;
+boolean autoAimMissileWeps = 0;
+boolean autoAim = 1;
+boolean enableExtraPistolDrops = 0;
+boolean allowMovementWithMouseYAxis = 1;
+boolean enableZomROTT = 0;
+int FocalWidthOffset = 0;
+int ScreenHeightToWriteToCfg = 0;
+int HudScaleToWriteToCfg = 0;
+int ScreenWidthToWriteToCfg = 0;
+boolean writeNewResIntoCfg = false;
+
+
+boolean joystickenabled = 0;
+boolean joypadenabled = 0;
+int joystickport = 0;
+int mouseadjustment = 5;
+int threshold = 1;
+int NumVoices = 4;
+int NumChannels = 1;
+int NumBits = 8;
+boolean AutoDetailOn = true;
+int DoubleClickSpeed = 20;
+boolean BobbinOn = true;
+int Menuflipspeed = 15;
+int DetailLevel = 2; //HI DETAIL
+int fandc = 1;
+int blanktime = (2*60*VBLCOUNTER);
+boolean ConfigLoaded = false;
+boolean stereoreversed = false;
+
+int DefaultDifficulty = 2;
+int DefaultPlayerCharacter = 0;
+int DefaultPlayerColor = 0;
+byte passwordstring[20];
+
+MacroList CommbatMacros[MAXMACROS];
+
+char ApogeePath[256];
+
+//******************************************************************************
+//
+// LOCALS
+//
+//******************************************************************************
+
+static char SoundName[13] = "sound.rot";
+
+static char *ConfigName = "config.rot";
+static char *ScoresName = "scores.rot";
+static char *ROTT = "rott.rot";
+static char *CONFIG = "setup.rot";
+static char *BattleName = "battle.rot";
+
+AlternateInformation RemoteSounds;
+//AlternateInformation PlayerGraphics;
+AlternateInformation GameLevels;
+AlternateInformation BattleLevels;
+char CodeName[MAXCODENAMELENGTH];
+
+//******************************************************************************
+//
+// ReadScores ()
+//
+//******************************************************************************
+
+void ReadScores (void)
+{
+ int file;
+ char filename[ 128 ];
+
+ GetPathFromEnvironment( filename, ApogeePath, ScoresName );
+ if (access (filename, F_OK) == 0)
+ {
+ file = SafeOpenRead (filename);
+ SafeRead (file, &Scores, sizeof (Scores));
+ close(file);
+ }
+ else
+ gamestate.violence = 0;
+}
+
+//******************************************************************************
+//
+// ReadInt
+//
+//******************************************************************************
+
+void ReadInt (const char * s1, int * val)
+{
+ GetToken (true);
+ if (!strcmpi (token,s1))
+ {
+ if (TokenAvailable()==true)
+ {
+ GetToken(false);
+ *val=ParseNum(token);
+ }
+ }
+}
+
+//******************************************************************************
+//
+// ReadBoolean
+//
+//******************************************************************************
+
+void ReadBoolean (const char * s1, boolean * val)
+{
+ int temp;
+
+ temp = (int)(*val);
+ ReadInt (s1,&temp);
+ *val = (boolean) temp;
+}
+
+//******************************************************************************
+//
+// ReadUnsigned
+//
+//******************************************************************************
+
+void ReadUnsigned (const char * s1, unsigned long * val)
+{
+ int temp;
+
+ temp = (int)(*val);
+ ReadInt (s1,&temp);
+ *val = (unsigned) temp;
+}
+
+//******************************************************************************
+//
+// ParseSoundFile ()
+//
+//******************************************************************************
+
+boolean ParseSoundFile (void)
+{
+ boolean retval = true;
+ int version = 0;
+
+ ReadInt("Version",&version);
+
+ if (version == ROTTVERSION)
+ {
+ // Read in Music Mode
+
+ ReadInt ("MusicMode",&MusicMode);
+
+ // Read in FX Mode
+
+ ReadInt ("FXMode",&FXMode);
+
+ // Read in Music Volume
+
+ ReadInt ("MusicVolume", &MUvolume);
+
+ // Read in FX Volume
+
+ ReadInt ("FXVolume", &FXvolume);
+
+ // Read in numvoices
+
+ ReadInt ("NumVoices",&NumVoices);
+
+ // Read in numchannels
+
+ ReadInt ("NumChannels",&NumChannels);
+
+ // Read in numbits
+
+ ReadInt ("NumBits",&NumBits);
+
+ // Read in stereo reversal
+
+ ReadBoolean ("StereoReverse",&stereoreversed);
+
+ }
+ else
+ retval = false;
+
+ return (retval);
+}
+
+
+
+//******************************************************************************
+//
+// SetSoundDefaultValues ()
+//
+//******************************************************************************
+void SetSoundDefaultValues
+(
+ void
+)
+
+{
+ //
+ // no config file, so select default values
+ //
+ // icculus' SDL_mixer driver looks like a soundscape to us
+ MusicMode = 6;
+ FXMode = 6;
+ NumVoices = 8;
+ NumChannels = 2;
+ NumBits = 16;
+ stereoreversed = false;
+}
+
+extern char pword[ 13 ];
+//******************************************************************************
+//
+// ConvertStringToPasswordString ()
+//
+//******************************************************************************
+
+#define PASSWORDENCRYPTER "7d7e4a2d3b6a0319554654231f6d2a"
+
+void ConvertStringToPasswordString ( char * string )
+{
+ int i;
+ unsigned int j;
+ char temp[3];
+
+ memset(temp,0,sizeof(temp));
+
+ for (i=0; i<13; i++)
+ {
+ memcpy(&temp[0],&string[i<<1],2);
+ sscanf(&temp[0],"%x",&j);
+ passwordstring[i+0] = j & 0xff;
+ j >>= 8;
+ passwordstring[i+1] = j & 0xff;
+ j >>= 8;
+ passwordstring[i+2] = j & 0xff;
+ j >>= 8;
+ passwordstring[i+3] = j & 0xff;
+ }
+}
+
+//******************************************************************************
+//
+// ConvertPasswordStringToPassword ()
+//
+//******************************************************************************
+
+void ConvertPasswordStringToPassword ( void )
+{
+ int i;
+ int x;
+ char temp[3];
+ char key[40];
+
+ memset(temp,0,sizeof(temp));
+ strcpy(&key[0],PASSWORDENCRYPTER);
+
+ for (i=0; i<12; i++)
+ {
+ memcpy(&temp[0],&key[i<<1],2);
+ sscanf(&temp[0],"%x",&x);
+ pword[i]=passwordstring[i]^x;
+ }
+ memcpy(&temp[0],&key[i<<1],2);
+ sscanf(&temp[0],"%x",&x);
+ gamestate.violence=passwordstring[i]^x;
+ if (
+ (gamestate.violence<0) ||
+ (gamestate.violence>3)
+ )
+ gamestate.violence=0;
+}
+
+//******************************************************************************
+//
+// ConvertPasswordStringToString ()
+//
+//******************************************************************************
+
+void ConvertPasswordStringToString ( char * string )
+{
+ int i;
+ char temp[8];
+
+ memset(temp,0,sizeof(temp));
+
+ for (i=0; i<13; i++)
+ {
+ itoa((passwordstring[i]>>4),&temp[0],16);
+ string[(i<<1)+0]=temp[0];
+ itoa((passwordstring[i]&0xf),&temp[0],16);
+ string[(i<<1)+1]=temp[0];
+ }
+}
+
+//******************************************************************************
+//
+// ConvertPasswordToPasswordString ()
+//
+//******************************************************************************
+
+void ConvertPasswordToPasswordString ( void )
+{
+ int i;
+ int x;
+ char temp[3];
+ char key[40];
+
+ memset(temp,0,sizeof(temp));
+ strcpy(&key[0],PASSWORDENCRYPTER);
+
+ for (i=0; i<12; i++)
+ {
+ memcpy(&temp[0],&key[i<<1],2);
+ sscanf(&temp[0],"%x",&x);
+ passwordstring[i]=pword[i]^x;
+ }
+ memcpy(&temp[0],&key[i<<1],2);
+ sscanf(&temp[0],"%x",&x);
+ passwordstring[i]=gamestate.violence^x;
+}
+
+//******************************************************************************
+//
+// ParseConfigFile ()
+//
+//******************************************************************************
+
+boolean ParseConfigFile (void)
+{
+// int temp;
+ boolean retval = true;
+ int version = 0;
+
+ ReadInt("Version",&version);
+
+ if (version == ROTTVERSION)
+ {
+ //Read in allowBlitzguardMoreMissileWeps
+ ReadBoolean("AllowBlitzguardMoreMissileWeps", &allowBlitzMoreMissileWeps);
+
+ //Read in enableAmmoPickups
+ ReadBoolean("EnableAmmoPickups", &enableAmmoPickups);
+
+ //Read in AutoAim
+ ReadBoolean("AutoAim", &autoAim);
+
+ //Read in AutoAimMissileWeps
+ ReadBoolean("AutoAimMissileWeps", &autoAimMissileWeps);
+
+ //Read in EnableExtraPistolDrops
+ ReadBoolean("EnableExtraPistolDrops", &enableExtraPistolDrops);
+
+ //Read in scaleOffset
+
+ ReadInt("FocalWidthOffset", &FocalWidthOffset);
+
+ // Read in MouseEnabled
+ ReadBoolean("MouseEnabled",&mouseenabled);
+
+ // Read in UseMouseLook
+ ReadBoolean("UseMouseLook",&usemouselook);
+
+ ReadInt("InverseMouse",&inverse_mouse);
+
+ ReadBoolean("AllowMovementWithMouseYAxis", &allowMovementWithMouseYAxis);
+
+ // Read in UseJump
+ ReadBoolean("UseJump",&usejump);
+
+ // Read in CrossHair
+ ReadBoolean("CrossHair",&iG_aimCross);
+
+ // Read in JoystickEnabled
+ ReadBoolean("JoystickEnabled",&joystickenabled);
+
+ // Read in JoypadEnabled
+ ReadBoolean("JoypadEnabled",&joypadenabled);
+
+ // Read in JoystickPort
+ ReadInt("JoystickPort",&joystickport);
+
+ // Read in fullscreen
+ ReadBoolean("FullScreen", &sdl_fullscreen);
+
+ ReadBoolean("BorderWindow", &borderWindow);
+
+ ReadBoolean("BorderlessWindow", &borderlessWindow);
+
+
+ // Read in resolution
+ ReadInt("ScreenWidth", &iGLOBAL_SCREENWIDTH);
+ ReadInt("ScreenHeight", &iGLOBAL_SCREENHEIGHT);
+
+ // Read in ViewSize
+
+ ReadInt("ViewSize",&viewsize);
+
+ // Read in Weaponscale
+ ReadInt("Weaponscale",&G_weaponscale);//bna added
+ if ((G_weaponscale <150)||(G_weaponscale>600)) {
+ if (iGLOBAL_SCREENWIDTH == 320) {
+ G_weaponscale=168;
+ } else if (iGLOBAL_SCREENWIDTH == 640) {
+ G_weaponscale=299;
+ } else if (iGLOBAL_SCREENWIDTH == 800) {
+ G_weaponscale=376;
+ }
+ else if (iGLOBAL_SCREENWIDTH == 1024) {
+ G_weaponscale=512;
+ }
+ }
+
+ // Read in HUDScale
+ ReadInt("HUDScale",&hudRescaleFactor);
+
+ // Read in MouseAdjustment
+ ReadInt("MouseAdjustment",&mouseadjustment);
+
+ // Read in threshold
+ ReadInt("Threshold",&threshold);
+
+ // Read in Auto Detail
+ ReadBoolean ("AutoDetail", &AutoDetailOn);
+
+ // Read in Light Dim
+ ReadInt ("LightDim", &fulllight);
+
+ // Read in Bobbin' On
+ ReadBoolean ("BobbingOn", &BobbinOn);
+
+ // Read in Double Click Speed
+ ReadInt ("DoubleClickSpeed", &DoubleClickSpeed);
+
+ // Read in Menu Flip Speed
+ ReadInt ("MenuFlipSpeed", &Menuflipspeed);
+
+ // Read in Detail Level
+ ReadInt ("DetailLevel", &DetailLevel);
+
+ // Read in Floor and Ceiling
+ ReadInt ("FloorCeiling", &fandc);
+
+ // Read in MessagesEnabled
+ ReadBoolean ("Messages", &MessagesEnabled );
+
+ // Read in Autorun
+ ReadInt ("AutoRun", &gamestate.autorun );
+
+ // Read in GammaIndex
+ ReadInt ("GammaIndex", &gammaindex);
+
+ // Read screen blanking time
+ ReadInt ("BlankTime", &blanktime);
+
+ blanktime=blanktime*60*VBLCOUNTER;
+
+ // Read keys
+ ReadInt ("Fire", &buttonscan[0]);
+ ReadInt ("Strafe", &buttonscan[1]);
+ ReadInt ("Run", &buttonscan[2]);
+ ReadInt ("Use", &buttonscan[3]);
+ ReadInt ("LookUp", &buttonscan[4]);
+ ReadInt ("LookDn", &buttonscan[5]);
+ ReadInt ("Swap", &buttonscan[6]);
+ ReadInt ("Drop", &buttonscan[7]);
+ ReadInt ("TargetUp", &buttonscan[8]);
+ ReadInt ("TargetDn", &buttonscan[9]);
+ ReadInt ("SelPistol", &buttonscan[10]);
+ ReadInt ("SelDualPistol",&buttonscan[11]);
+ ReadInt ("SelMP40", &buttonscan[12]);
+ ReadInt ("SelMissile", &buttonscan[13]);
+ ReadInt ("AutoRun", &buttonscan[14]);
+ ReadInt ("LiveRemRid", &buttonscan[15]);
+ ReadInt ("StrafeLeft", &buttonscan[16]);
+ ReadInt ("StrafeRight", &buttonscan[17]);
+ ReadInt ("VolteFace", &buttonscan[18]);
+ ReadInt ("Aim", &buttonscan[19]);
+ ReadInt ("Forward", &buttonscan[20]);
+ ReadInt ("Right", &buttonscan[21]);
+ ReadInt ("Backward", &buttonscan[22]);
+ ReadInt ("Left", &buttonscan[23]);
+ ReadInt ("Map", &buttonscan[24]);
+ ReadInt ("SendMessage", &buttonscan[25]);
+ ReadInt ("DirectMessage",&buttonscan[26]);
+
+ ReadInt ("MouseButton0",&buttonmouse[0]);
+ ReadInt ("MouseButton1",&buttonmouse[1]);
+ ReadInt ("MouseButton2",&buttonmouse[2]);
+ ReadInt ("DblClickB0", &buttonmouse[3]);
+ ReadInt ("DblClickB1", &buttonmouse[4]);
+ ReadInt ("DblClickB2", &buttonmouse[5]);
+
+ ReadInt ("JoyButton0", &buttonjoy[0]);
+ ReadInt ("JoyButton1", &buttonjoy[1]);
+ ReadInt ("JoyButton2", &buttonjoy[2]);
+ ReadInt ("JoyButton3", &buttonjoy[3]);
+ ReadInt ("DblClickJB0", &buttonjoy[4]);
+ ReadInt ("DblClickJB1", &buttonjoy[5]);
+ ReadInt ("DblClickJB2", &buttonjoy[6]);
+ ReadInt ("DblClickJB3", &buttonjoy[7]);
+
+ ReadInt ("JoyMaxX", &joyxmax);
+ ReadInt ("JoyMaxY", &joyymax);
+ ReadInt ("JoyMinX", &joyxmin);
+ ReadInt ("JoyMinY", &joyymin);
+
+ ReadInt( "DefaultDifficulty", &DefaultDifficulty );
+ ReadInt( "DefaultPlayerCharacter", &DefaultPlayerCharacter );
+ ReadInt( "DefaultPlayerColor", &DefaultPlayerColor );
+
+ // Get Password string
+ GetToken (true);
+ if (!stricmp (token, "SecretPassword"))
+ {
+ GetTokenEOL (false);
+ ConvertStringToPasswordString ( &name[0] );
+ }
+
+ if (!MousePresent)
+ mouseenabled = false;
+
+ if (!JoysPresent[joystickport])
+ joystickenabled = false;
+
+ // precaution
+
+ if (!joyxmin || !joyxmax || !joyymin || !joyymax)
+ joystickenabled = false;
+
+ if (joystickenabled)
+ IN_SetupJoy (joystickport, joyxmin, joyxmax, joyymin, joyymax);
+ }
+ else
+ retval = false;
+
+ return (retval);
+}
+
+
+//******************************************************************************
+//
+// ParseBattleFile ()
+//
+//******************************************************************************
+boolean ParseBattleFile (void)
+{
+ boolean retval = true;
+ int version = 0;
+ int index;
+ int temp;
+ extern specials BattleSpecialsTimes;
+
+ ReadInt("Version",&version);
+ if (version != ROTTVERSION)
+ retval = false;
+ else
+ {
+ ReadBoolean( "ShowKillCount", &BATTLE_ShowKillCount );
+
+ ReadInt( "GodModeTime", &BattleSpecialsTimes.GodModeTime );
+ ReadInt( "DogModeTime", &BattleSpecialsTimes.DogModeTime );
+ ReadInt( "ShroomsModeTime", &BattleSpecialsTimes.ShroomsModeTime );
+ ReadInt( "ElastoModeTime", &BattleSpecialsTimes.ElastoModeTime );
+ ReadInt( "AsbestosVestTime", &BattleSpecialsTimes.AsbestosVestTime );
+ ReadInt( "BulletProofVestTime", &BattleSpecialsTimes.BulletProofVestTime );
+ ReadInt( "GasMaskTime", &BattleSpecialsTimes.GasMaskTime );
+ ReadInt( "MercuryModeTime", &BattleSpecialsTimes.MercuryModeTime );
+ ReadInt( "GodModeRespawnTime", &BattleSpecialsTimes.GodModeRespawnTime );
+ ReadInt( "DogModeRespawnTime", &BattleSpecialsTimes.DogModeRespawnTime );
+ ReadInt( "ShroomsModeRespawnTime", &BattleSpecialsTimes.ShroomsModeRespawnTime );
+ ReadInt( "ElastoModeRespawnTime", &BattleSpecialsTimes.ElastoModeRespawnTime );
+ ReadInt( "AsbestosVestRespawnTime", &BattleSpecialsTimes.AsbestosVestRespawnTime );
+ ReadInt( "BulletProofVestRespawnTime", &BattleSpecialsTimes.BulletProofVestRespawnTime );
+ ReadInt( "GasMaskRespawnTime", &BattleSpecialsTimes.GasMaskRespawnTime );
+ ReadInt( "MercuryModeRespawnTime", &BattleSpecialsTimes.MercuryModeRespawnTime );
+
+ ReadBoolean( "EKG", &battlegibs );
+
+ for( index = battle_Normal; index < battle_NumBattleModes; index++ )
+ {
+ // Read Gravity
+ temp = BATTLE_Options[ index ].Gravity;
+ ReadInt( "Gravity", &temp );
+ BATTLE_Options[ index ].Gravity = temp;
+
+ // Read Speed
+ temp = bo_normal_speed;
+ ReadInt( "Speed", &temp );
+ if ( ( temp >= bo_normal_speed ) &&
+ ( temp <= bo_fast_speed ) )
+ {
+ BATTLE_Options[ index ].Speed = temp;
+ }
+
+ if ( ( index != battle_Collector ) && ( index != battle_Tag ) &&
+ ( index != battle_Eluder ) )
+ {
+ // Read Ammo
+ temp = bo_normal_shots;
+ BATTLE_Options[ index ].Ammo = bo_normal_shots;
+ ReadInt( "Ammo", &temp );
+ if ( ( temp >= bo_one_shot ) &&
+ ( temp <= bo_infinite_shots ) )
+ {
+ BATTLE_Options[ index ].Ammo = temp;
+ }
+ }
+
+ if ( index != battle_Eluder )
+ {
+ // Read Hitpoints
+ temp = BATTLE_Options[ index ].HitPoints;
+ ReadInt( "Hitpoints", &temp );
+ BATTLE_Options[ index ].HitPoints = temp;
+ }
+
+ // Read Spawn Dangers
+ temp = 1;
+ ReadInt( "SpawnDangers", &temp );
+ BATTLE_Options[ index ].SpawnDangers = temp;
+
+ if ( index != battle_Eluder )
+ {
+ // Read Spawn Health
+ temp = 1;
+ ReadInt( "SpawnHealth", &temp );
+ BATTLE_Options[ index ].SpawnHealth = temp;
+
+ // Read Spawn Mines
+ temp = 0;
+ ReadInt( "SpawnMines", &temp );
+ BATTLE_Options[ index ].SpawnMines = temp;
+ }
+
+ if ( ( index != battle_Collector ) && ( index != battle_Tag ) &&
+ ( index != battle_Eluder ) )
+ {
+ // Read Spawn Weapons
+ temp = 1;
+ ReadInt( "SpawnWeapons", &temp );
+ BATTLE_Options[ index ].SpawnWeapons = temp;
+
+ // Read Random Weapons
+ temp = 0;
+ ReadInt( "RandomWeapons", &temp );
+ BATTLE_Options[ index ].RandomWeapons = temp;
+
+ // Read Weapon Persistence
+ temp = 0;
+ ReadInt( "WeaponPersistence", &temp );
+ BATTLE_Options[ index ].WeaponPersistence = temp;
+ }
+
+ if ( ( index == battle_Normal ) || ( index == battle_ScoreMore ) ||
+ ( index == battle_Hunter ) || ( index == battle_Tag ) )
+ {
+ // Read Friendly Fire
+ temp = 1;
+ ReadInt( "FriendlyFire", &temp );
+ BATTLE_Options[ index ].FriendlyFire = temp;
+ }
+
+ if ( index != battle_Eluder )
+ {
+ // Read Respawn Items
+ temp = 1;
+ ReadInt( "RespawnItems", &temp );
+ BATTLE_Options[ index ].RespawnItems = temp;
+ }
+
+ // Read Light Level
+ temp = bo_light_normal;
+ ReadInt( "LightLevel", &temp );
+ if ( ( temp >= bo_light_dark ) &&
+ ( temp <= bo_light_lightning ) )
+ {
+ BATTLE_Options[ index ].LightLevel = temp;
+ }
+
+ if ( ( index != battle_Collector ) && ( index != battle_Scavenger ) )
+ {
+ // Read Point Goal
+ temp = bo_kills_default;
+ ReadInt( "PointGoal", &temp );
+ BATTLE_Options[ index ].Kills = temp;
+ if ( temp < bo_kills_random )
+ {
+ BATTLE_Options[ index ].Kills = bo_kills_default;
+ }
+ }
+
+ if ( index != battle_Eluder )
+ {
+ // Read Danger Damage
+ temp = bo_danger_normal;
+ ReadInt( "DangerDamage", &temp );
+ BATTLE_Options[ index ].DangerDamage = temp;
+ }
+
+ // Read Time Limit
+ temp = bo_time_infinite;
+ ReadInt( "TimeLimit", &temp );
+ if ( ( index == battle_Hunter ) && ( temp == bo_time_infinite ) )
+ {
+ temp = 99;
+ }
+ BATTLE_Options[ index ].TimeLimit = temp;
+
+ // Read Respawn time
+ temp = bo_normal_respawn_time;
+ ReadInt( "RespawnTime", &temp );
+ BATTLE_Options[ index ].RespawnTime = temp;
+ }
+ }
+
+ return (retval);
+}
+
+//******************************************************************************
+//
+// SetBattleDefaultValues ()
+//
+//******************************************************************************
+
+void SetBattleDefaultValues (void)
+{
+ int index;
+
+ //
+ // no config file, so select default values
+ //
+ for( index = battle_StandAloneGame; index < battle_NumBattleModes;
+ index++ )
+ {
+ BATTLE_Options[ index ].Gravity = NORMAL_GRAVITY;
+ BATTLE_Options[ index ].Speed = bo_normal_speed;
+ BATTLE_Options[ index ].Ammo = bo_normal_shots;
+ BATTLE_Options[ index ].HitPoints = bo_default_hitpoints;
+ BATTLE_Options[ index ].SpawnDangers = 1;
+ BATTLE_Options[ index ].SpawnHealth = 1;
+ BATTLE_Options[ index ].SpawnMines = 0;
+ BATTLE_Options[ index ].SpawnWeapons = 1;
+ BATTLE_Options[ index ].RespawnItems = 1;
+ BATTLE_Options[ index ].RandomWeapons = 0;
+ BATTLE_Options[ index ].WeaponPersistence = 0;
+ BATTLE_Options[ index ].FriendlyFire = 1;
+ BATTLE_Options[ index ].LightLevel = bo_light_normal;
+ BATTLE_Options[ index ].Kills = bo_kills_default;
+ BATTLE_Options[ index ].DangerDamage = bo_danger_normal;
+ BATTLE_Options[ index ].TimeLimit = bo_time_infinite;
+ BATTLE_Options[ index ].RespawnTime = bo_normal_respawn_time;
+ }
+
+ BATTLE_Options[ battle_CaptureTheTriad ].Kills = 1;
+ BATTLE_Options[ battle_Hunter ].TimeLimit = 1;
+ BATTLE_Options[ battle_Eluder ].SpawnHealth = 0;
+ BATTLE_Options[ battle_Eluder ].RespawnItems = 0;
+ BATTLE_Options[ battle_Eluder ].SpawnWeapons = 0;
+ BATTLE_Options[ battle_Eluder ].FriendlyFire = 0;
+ BATTLE_Options[ battle_Collector ].SpawnWeapons = 0;
+ BATTLE_Options[ battle_Collector ].FriendlyFire = 0;
+ BATTLE_Options[ battle_Tag ].SpawnWeapons = 0;
+ battlegibs=false;
+ BATTLE_ShowKillCount = true;
+}
+
+//******************************************************************************
+//
+// SetConfigDefaultValues ()
+//
+//******************************************************************************
+
+void SetConfigDefaultValues (void)
+{
+ //
+ // no config file, so select default values
+ //
+ if (MousePresent)
+ mouseenabled = true;
+
+ joystickenabled = false;
+ joypadenabled = false;
+ joystickport = 0;
+ viewsize = 7;
+ mouseadjustment = 5;
+ gammaindex = 0;
+ gamestate.violence = 3;
+ passwordstring[0]=0x7d;
+ passwordstring[1]=0x7e;
+ passwordstring[2]=0x4a;
+ passwordstring[3]=0x2d;
+ passwordstring[4]=0x3b;
+ passwordstring[5]=0x6a;
+ passwordstring[6]=0x03;
+ passwordstring[7]=0x19;
+ passwordstring[8]=0x55;
+ passwordstring[9]=0x46;
+ passwordstring[10]=0x54;
+ passwordstring[11]=0x23;
+ passwordstring[12]=0x1c;
+}
+
+//******************************************************************************
+//
+// DeleteSoundFile ()
+//
+//******************************************************************************
+void DeleteSoundFile ( void )
+{
+ char filename[ 128 ];
+
+ GetPathFromEnvironment( filename, ApogeePath, SoundName );
+ unlink (filename); // Delete SOUND.ROT
+}
+
+//******************************************************************************
+//
+// ReadConfig ()
+//
+//******************************************************************************
+
+
+void ReadConfig (void)
+{
+ char filename[ 128 ];
+
+ GetPathFromEnvironment( filename, ApogeePath, SoundName );
+ SetSoundDefaultValues ();
+
+ if (access (filename, F_OK) == 0)
+ {
+ LoadScriptFile (filename);
+
+ if (ParseSoundFile () == false)
+ {
+ DeleteSoundFile();
+ }
+
+ Z_Free (scriptbuffer);
+ }
+
+ ReadScores();
+
+ GetPathFromEnvironment( filename, ApogeePath, ConfigName );
+ SetConfigDefaultValues ();
+ if (access(filename,F_OK)==0)
+ {
+ LoadScriptFile(filename);
+
+ if (ParseConfigFile () == false)
+ {
+ unlink (filename); // Delete CONFIG.ROT
+ }
+
+ Z_Free(scriptbuffer);
+ }
+
+ GetPathFromEnvironment( filename, ApogeePath, BattleName );
+ SetBattleDefaultValues ();
+ if (access(filename,F_OK)==0)
+ {
+ LoadScriptFile(filename);
+
+ if (ParseBattleFile() == false)
+ {
+ unlink (filename); // Delete BATTLE.ROT
+ }
+
+ Z_Free(scriptbuffer);
+ }
+ ConfigLoaded = true;
+}
+
+//******************************************************************************
+//
+// CheckVendor ()
+//
+//******************************************************************************
+
+#if (SHAREWARE==1)
+#define VENDORDOC ("VENDOR.DOC")
+#define VENDORLUMP ("VENDOR")
+#else
+#define VENDORDOC ("LICENSE.DOC")
+#define VENDORLUMP ("LICENSE")
+#endif
+
+void CheckVendor (void)
+{
+ boolean saveout=false;
+ int wadcrc;
+ int filecrc;
+ int size;
+ int lump;
+ byte * vendor;
+ char filename[ 128 ];
+
+ GetPathFromEnvironment( filename, ApogeePath, VENDORDOC );
+ if (access (filename, F_OK) == 0)
+ {
+ size = LoadFile(filename,(void **)&vendor);
+ filecrc = CalculateCRC (vendor, size);
+ SafeFree(vendor);
+ lump=W_GetNumForName(VENDORLUMP);
+ vendor = W_CacheLumpNum(lump,PU_CACHE, CvtNull, 1);
+ size=W_LumpLength(lump);
+ wadcrc = CalculateCRC (vendor, size);
+ if (wadcrc != filecrc)
+ saveout=true;
+ }
+ else
+ saveout=true;
+
+ if (saveout==true)
+ {
+ lump=W_GetNumForName(VENDORLUMP);
+ vendor = W_CacheLumpNum(lump,PU_CACHE, CvtNull, 1);
+ size = W_LumpLength(lump);
+ SaveFile (filename,vendor,size);
+ }
+}
+
+//******************************************************************************
+//
+// WriteParameter
+//
+//******************************************************************************
+
+void WriteParameter (int file, const char * s1, int val)
+{
+ char s[50];
+
+ // Write out Header
+ SafeWriteString (file, (char *)s1);
+
+ // Write out space character
+ strcpy (&s[0],(const char *)" ");
+ SafeWriteString (file, &s[0]);
+
+ // Write out value
+ itoa(val,&s[0],10);
+ SafeWriteString (file, &s[0]);
+
+ // Write out EOL character
+ strcpy (&s[0],(const char *)"\n");
+ SafeWriteString (file, &s[0]);
+}
+
+
+//******************************************************************************
+//
+// WriteParameterHex
+//
+//******************************************************************************
+
+void WriteParameterHex (int file, const char * s1, int val)
+{
+ char s[50];
+
+ // Write out Header
+ SafeWriteString (file, (char *)s1);
+
+ // Write out space character
+ strcpy (&s[0],(const char *)" $");
+ SafeWriteString (file, &s[0]);
+
+ // Write out value
+ itoa(val,&s[0],16);
+ SafeWriteString (file, &s[0]);
+
+ // Write out EOL character
+ strcpy (&s[0],(const char *)"\n");
+ SafeWriteString (file, &s[0]);
+}
+
+
+
+//******************************************************************************
+//
+// WriteScores ()
+//
+//******************************************************************************
+
+void WriteScores (void)
+{
+ int file;
+ char filename[ 128 ];
+
+ GetPathFromEnvironment( filename, ApogeePath, ScoresName );
+ file=SafeOpenWrite( filename );
+ SafeWrite (file, &Scores, sizeof (Scores));
+ close(file);
+}
+
+
+//******************************************************************************
+//
+// WriteBattleConfig ()
+//
+//******************************************************************************
+
+void WriteBattleConfig
+(
+ void
+)
+
+{
+ int file;
+ int index;
+ char filename[ 128 ];
+ extern specials BattleSpecialsTimes;
+
+ // Write Battle File
+ GetPathFromEnvironment( filename, ApogeePath, BattleName );
+ file = open( filename, O_RDWR | O_TEXT | O_CREAT | O_TRUNC);
+
+ if ( file == -1 )
+ {
+ Error( "Error opening %s: %s", filename, strerror( errno ) );
+ }
+
+ // Write out BATTLECONFIG header
+ SafeWriteString( file,
+ ";Rise of the Triad Battle Configuration File\n"
+ "; (c) 1995\n"
+ ";\n"
+ ";You may change these options at you own risk. Using any values\n"
+ ";other than the ones documented may make the game unplayable.\n"
+ ";If this happens, you may delete this file (BATTLE.ROT) and ROTT\n"
+ ";will recreate it with the default values selected.\n"
+ ";\n"
+ ";With that in mind, have fun!\n"
+ ";\n"
+ "\n" );
+
+ // Write out Version
+ WriteParameter( file, "Version ", ROTTVERSION );
+
+ // Write out BATTLE_ShowKillPics
+ SafeWriteString(file, "\n;\n");
+ WriteParameter( file, "; Yes - ", 1 );
+ WriteParameter( file, "; No - ", 0 );
+ WriteParameter( file, "ShowKillCount ", BATTLE_ShowKillCount );
+
+ // Write out specials' times
+ SafeWriteString(file, "\n;\n"
+ "; These are the time in seconds of the various powerups.\n"
+ "; You could modify these to give you infinite Mercury mode,\n"
+ "; stronger vests, or to make them persistent.\n;\n" );
+
+ WriteParameter( file, "GodModeTime ", BattleSpecialsTimes.GodModeTime );
+ WriteParameter( file, "DogModeTime ", BattleSpecialsTimes.DogModeTime );
+ WriteParameter( file, "ShroomsModeTime ", BattleSpecialsTimes.ShroomsModeTime );
+ WriteParameter( file, "ElastoModeTime ", BattleSpecialsTimes.ElastoModeTime );
+ WriteParameter( file, "AsbestosVestTime ", BattleSpecialsTimes.AsbestosVestTime );
+ WriteParameter( file, "BulletProofVestTime ", BattleSpecialsTimes.BulletProofVestTime );
+ WriteParameter( file, "GasMaskTime ", BattleSpecialsTimes.GasMaskTime );
+ WriteParameter( file, "MercuryModeTime ", BattleSpecialsTimes.MercuryModeTime );
+ WriteParameter( file, "GodModeRespawnTime ", BattleSpecialsTimes.GodModeRespawnTime );
+ WriteParameter( file, "DogModeRespawnTime ", BattleSpecialsTimes.DogModeRespawnTime );
+ WriteParameter( file, "ShroomsModeRespawnTime ", BattleSpecialsTimes.ShroomsModeRespawnTime );
+ WriteParameter( file, "ElastoModeRespawnTime ", BattleSpecialsTimes.ElastoModeRespawnTime );
+ WriteParameter( file, "AsbestosVestRespawnTime ", BattleSpecialsTimes.AsbestosVestRespawnTime );
+ WriteParameter( file, "BulletProofVestRespawnTime ", BattleSpecialsTimes.BulletProofVestRespawnTime );
+ WriteParameter( file, "GasMaskRespawnTime ", BattleSpecialsTimes.GasMaskRespawnTime );
+ WriteParameter( file, "MercuryModeRespawnTime ", BattleSpecialsTimes.MercuryModeRespawnTime );
+
+ // Write out battlegibs
+ SafeWriteString(file, "\n;\n");
+ WriteParameter( file, "; Yes - ", 1 );
+ WriteParameter( file, "; No - ", 0 );
+ WriteParameter( file, "EKG ", battlegibs );
+
+ // Describe options
+
+ // Write out Gravity
+ SafeWriteString(file, "\n"
+ ";\n"
+ "; Here is a description of the possible values for"
+ " each option:\n"
+ ";\n"
+ "; Gravity options:\n" );
+ WriteParameter( file, "; Low Gravity - ", LOW_GRAVITY );
+ WriteParameter( file, "; Normal Gravity - ", NORMAL_GRAVITY );
+ WriteParameter( file, "; High Gravity - ", HIGH_GRAVITY );
+
+ // Write out Speed
+ SafeWriteString(file, ";\n"
+ "; Speed options:\n" );
+ WriteParameter( file, "; Normal Speed - ", bo_normal_speed );
+ WriteParameter( file, "; Fast Speed - ", bo_fast_speed );
+
+ // Write out Ammo
+ SafeWriteString(file, ";\n"
+ "; Ammo options:\n" );
+ WriteParameter( file, "; One Shot - ", bo_one_shot );
+ WriteParameter( file, "; Normal Shots - ", bo_normal_shots );
+ WriteParameter( file, "; Infinite Shots - ", bo_infinite_shots );
+
+ // Write out Hit Points
+ SafeWriteString(file, ";\n"
+ "; Hitpoint options:\n" );
+ WriteParameter( file, "; Character Hitpoints - ", bo_character_hitpoints );
+ WriteParameter( file, "; 1 Hitpoint - ", 1 );
+ WriteParameter( file, "; 25 Hitpoints - ", 25 );
+ WriteParameter( file, "; 100 Hitpoints - ", 100 );
+ WriteParameter( file, "; 500 Hitpoints - ", 500 );
+ WriteParameter( file, "; 250 Hitpoints - ", 250 );
+ WriteParameter( file, "; 4000 Hitpoints - ", 4000 );
+
+ // Write out Danger Spawning
+ SafeWriteString(file, ";\n"
+ "; SpawnDangers options:\n"
+ "; Spawn Dangers - 1\n"
+ "; Don't Spawn Dangers - 0\n" );
+
+ // Write out Health Spawning
+ SafeWriteString(file, ";\n"
+ "; SpawnHealth options:\n"
+ "; Spawn Health - 1\n"
+ "; Don't Spawn Health - 0\n" );
+
+ // Write out Mine Spawning
+ SafeWriteString(file, ";\n"
+ "; SpawnMines options:\n"
+ "; Spawn Mines - 1\n"
+ "; Don't Spawn Mines - 0\n" );
+
+ // Write out Weapon Spawning
+ SafeWriteString(file, ";\n"
+ "; SpawnWeapons options:\n"
+ "; Spawn Weapons - 1\n"
+ "; Don't Spawn Weapons - 0\n" );
+
+ // Write out Random Weapons
+ SafeWriteString(file, ";\n"
+ "; RandomWeapons options:\n"
+ "; Randomize Weapons - 1\n"
+ "; Don't Randomize Weapons - 0\n" );
+
+ // Write out Weapon Persistence
+ SafeWriteString(file, ";\n"
+ "; WeaponPersistence options:\n"
+ "; Weapons Persist - 1\n"
+ "; Weapons don't Persist - 0\n" );
+
+ // Write out Friendly Fire
+ SafeWriteString(file, ";\n"
+ "; FriendlyFire options:\n"
+ "; Penalize Friendly Fire - 1\n"
+ "; No penalty - 0\n" );
+
+ // Write out Respawn Items
+ SafeWriteString(file, ";\n"
+ "; RespawnItems options:\n"
+ "; Respawn Items - 1\n"
+ "; Don't Respawn Items - 0\n" );
+
+ // Write out Light Level
+ SafeWriteString(file, ";\n"
+ "; LightLevel options:\n" );
+ WriteParameter( file, "; Dark - ", bo_light_dark );
+ WriteParameter( file, "; Normal Light Levels - ", bo_light_normal );
+ WriteParameter( file, "; Bright - ", bo_light_bright );
+ WriteParameter( file, "; Fog - ", bo_light_fog );
+ WriteParameter( file, "; Periodic light - ", bo_light_periodic );
+ WriteParameter( file, "; Lightning - ", bo_light_lightning );
+
+ // Write out Point Goal
+ SafeWriteString(file, ";\n"
+ "; PointGoal options:\n" );
+ WriteParameter( file, "; 1 Point - ", 1 );
+ WriteParameter( file, "; 5 Points - ", 5 );
+ WriteParameter( file, "; 11 Points - ", 11 );
+ WriteParameter( file, "; 21 Points - ", 21 );
+ WriteParameter( file, "; 50 Points - ", 50 );
+ WriteParameter( file, "; 100 Points - ", 100 );
+ WriteParameter( file, "; Random Points - ", bo_kills_random );
+ WriteParameter( file, "; Blind Points - ", bo_kills_blind );
+ WriteParameter( file, "; Infinite Points - ", bo_kills_infinite );
+
+ // Write out Danger Damage
+ SafeWriteString(file, ";\n"
+ "; DangerDamage options:\n" );
+ WriteParameter( file, "; Normal Damage - ", bo_danger_normal );
+ WriteParameter( file, "; Low Damage - ", bo_danger_low );
+ WriteParameter( file, "; Kill - ", bo_danger_kill );
+
+ // Write out TimeLimit
+ SafeWriteString(file, ";\n"
+ "; TimeLimit options:\n" );
+ WriteParameter( file, "; 1 minute - ", 1 );
+ WriteParameter( file, "; 2 minute - ", 2 );
+ WriteParameter( file, "; 5 minutes - ", 5 );
+ WriteParameter( file, "; 10 minutes - ", 10 );
+ WriteParameter( file, "; 21 minutes - ", 21 );
+ WriteParameter( file, "; 30 minutes - ", 30 );
+ WriteParameter( file, "; 99 minutes - ", 99 );
+ WriteParameter( file, "; No limit - ", bo_time_infinite );
+
+ // Write out RespawnTime
+ SafeWriteString(file, ";\n"
+ "; RespawnTime options:\n" );
+ WriteParameter( file, "; 1 second - ", 1 );
+ WriteParameter( file, "; 1 minute - ", 60 );
+ WriteParameter( file, "; 2 minutes - ", 120 );
+ WriteParameter( file, "; normal - ", bo_normal_respawn_time );
+
+ for( index = battle_Normal; index < battle_NumBattleModes; index++ )
+ {
+ SafeWriteString(file, "\n;\n");
+ switch( index )
+ {
+ case battle_Normal :
+ SafeWriteString( file, "; Standard battle options\n;\n" );
+ break;
+
+ case battle_ScoreMore :
+ SafeWriteString( file, "; Score More battle options\n;\n" );
+ break;
+
+ case battle_Collector :
+ SafeWriteString( file, "; Collector battle options\n;\n" );
+ break;
+
+ case battle_Scavenger :
+ SafeWriteString( file, "; Scavenger battle options\n;\n" );
+ break;
+
+ case battle_Hunter :
+ SafeWriteString( file, "; Hunter battle options\n;\n" );
+ break;
+
+ case battle_Tag :
+ SafeWriteString( file, "; Tag battle options\n;\n" );
+ break;
+
+ case battle_Eluder :
+ SafeWriteString( file, "; Eluder battle options\n;\n" );
+ break;
+
+ case battle_Deluder :
+ SafeWriteString( file, "; Deluder battle options\n;\n" );
+ break;
+
+ case battle_CaptureTheTriad :
+ SafeWriteString( file, "; Capture the Triad battle options\n;\n" );
+ break;
+ }
+
+ // Write out Gravity
+ WriteParameter( file, "Gravity ",
+ BATTLE_Options[ index ].Gravity );
+
+ // Write out Speed
+ WriteParameter( file, "Speed ",
+ BATTLE_Options[ index ].Speed );
+
+ if ( ( index != battle_Collector ) && ( index != battle_Tag ) &&
+ ( index != battle_Eluder ) )
+ {
+ // Write out Ammo
+ WriteParameter( file, "Ammo ",
+ BATTLE_Options[ index ].Ammo );
+ }
+
+ if ( index != battle_Eluder )
+ {
+ // Write out Hit Points
+ WriteParameter( file, "Hitpoints ",
+ BATTLE_Options[ index ].HitPoints );
+ }
+
+ // Write out Danger Spawning
+ WriteParameter( file, "SpawnDangers ",
+ BATTLE_Options[ index ].SpawnDangers );
+
+ if ( index != battle_Eluder )
+ {
+ // Write out Health Spawning
+ WriteParameter( file, "SpawnHealth ",
+ BATTLE_Options[ index ].SpawnHealth );
+
+ // Write out Mine Spawning
+ WriteParameter( file, "SpawnMines ",
+ BATTLE_Options[ index ].SpawnMines );
+ }
+
+ if ( ( index != battle_Collector ) && ( index != battle_Tag ) &&
+ ( index != battle_Eluder ) )
+ {
+ // Write out Weapon Spawning
+ WriteParameter( file, "SpawnWeapons ",
+ BATTLE_Options[ index ].SpawnWeapons );
+
+ // Write out Random Weapons
+ WriteParameter( file, "RandomWeapons ",
+ BATTLE_Options[ index ].RandomWeapons );
+
+ // Write out Weapon Persistence
+ WriteParameter( file, "WeaponPersistence",
+ BATTLE_Options[ index ].WeaponPersistence );
+ }
+
+ if ( ( index == battle_Normal ) || ( index == battle_ScoreMore ) ||
+ ( index == battle_Hunter ) || ( index == battle_Tag ) )
+ {
+ // Write out Friendly Fire
+ WriteParameter( file, "FriendlyFire ",
+ BATTLE_Options[ index ].FriendlyFire );
+ }
+
+ if ( index != battle_Eluder )
+ {
+ // Write out Respawn Items
+ WriteParameter( file, "RespawnItems ",
+ BATTLE_Options[ index ].RespawnItems );
+ }
+
+ // Write out Light Level
+ WriteParameter( file, "LightLevel ",
+ BATTLE_Options[ index ].LightLevel );
+
+ if ( ( index != battle_Collector ) && ( index != battle_Scavenger ) )
+ {
+ // Write out Point Goal
+ WriteParameter( file, "PointGoal ",
+ BATTLE_Options[ index ].Kills );
+ }
+
+ if ( index != battle_Eluder )
+ {
+ // Write out Danger Damage
+ WriteParameter( file, "DangerDamage ",
+ BATTLE_Options[ index ].DangerDamage );
+ }
+
+ // Write out TimeLimit
+ WriteParameter( file, "TimeLimit ",
+ BATTLE_Options[ index ].TimeLimit );
+
+ // Write out RespawnTime
+ WriteParameter( file, "RespawnTime ",
+ BATTLE_Options[ index ].RespawnTime );
+ }
+
+ close( file );
+}
+
+//******************************************************************************
+//
+// WriteSoundConfig ()
+//
+//******************************************************************************
+
+void WriteSoundConfig
+(
+ void
+)
+
+{
+ int file;
+ char filename[ 128 ];
+
+ if ( !WriteSoundFile )
+ {
+ return;
+ }
+
+ GetPathFromEnvironment( filename, ApogeePath, SoundName );
+ file = open( filename, O_RDWR | O_TEXT | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR );
+
+ //file = open ( filename, O_RDWR | O_TEXT | O_CREAT | O_TRUNC );
+
+ if (file == -1)
+ Error ("Error opening %s: %s", filename, strerror(errno));
+
+ // Write out ROTTSOUND header
+
+ SafeWriteString (file, ";Rise of the Triad Sound File\n");
+ SafeWriteString (file, "; (c) 1995\n\n");
+
+ // Write out Version
+
+ WriteParameter(file,"Version ",ROTTVERSION);
+
+ // Write out Music Mode
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Music Modes\n");
+ SafeWriteString(file,"; 0 - Off\n");
+ SafeWriteString(file,"; 6 - On\n");
+ WriteParameter(file,"MusicMode ",MusicMode);
+
+ // Write out FX Mode
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; FX Modes\n");
+ SafeWriteString(file,"; 0 - Off\n");
+ SafeWriteString(file,"; 6 - On\n");
+ WriteParameter(file,"FXMode ",FXMode);
+
+ // Write in Music Volume
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Music Volume\n");
+ SafeWriteString(file,"; (low) 0 - 255 (high)\n");
+ WriteParameter (file, "MusicVolume ", MUvolume);
+
+ // Write in FX Volume
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; FX Volume\n");
+ SafeWriteString(file,"; (low) 0 - 255 (high)\n");
+ WriteParameter (file, "FXVolume ", FXvolume);
+
+ // Write out numvoices
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Number of Voices\n");
+ SafeWriteString(file,"; 1 - 8\n");
+ WriteParameter(file,"NumVoices ",NumVoices);
+
+ // Write out numchannels
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Stereo or Mono\n");
+ SafeWriteString(file,"; 1 - Mono\n");
+ SafeWriteString(file,"; 2 - Stereo\n");
+ WriteParameter(file,"NumChannels ",NumChannels);
+
+ // Write out numbits
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Resolution\n");
+ SafeWriteString(file,"; 8 bit\n");
+ SafeWriteString(file,"; 16 bit\n");
+ WriteParameter(file,"NumBits ",NumBits);
+
+ // Write out stereo reversal
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; ReverseStereo\n");
+ SafeWriteString(file,"; 0 no reversal\n");
+ SafeWriteString(file,"; 1 reverse stereo\n");
+ WriteParameter (file,"StereoReverse ",stereoreversed);
+ close (file);
+}
+
+
+//******************************************************************************
+//
+// WriteConfig ()
+//
+//******************************************************************************
+
+extern boolean writeNewResIntoCfg;
+extern int ScreenWidthToWriteToCfg;
+extern int ScreenHeightToWriteToCfg;
+
+void WriteConfig (void)
+{
+ int file;
+ char filename[ 128 ];
+ char passwordtemp[50];
+ static int inconfig = 0;
+
+ if (inconfig > 0)
+ return;
+
+ inconfig++ ;
+
+ if ( !ConfigLoaded )
+ {
+ return;
+ }
+
+ // Write Sound File
+ WriteSoundConfig();
+
+ // Write Config, Battle and Score files
+ WriteScores();
+ WriteBattleConfig();
+
+ GetPathFromEnvironment( filename, ApogeePath, ConfigName );
+
+ file = open( filename, O_RDWR | O_TEXT | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR );
+
+ //file = open( filename,O_RDWR | O_TEXT | O_CREAT | O_TRUNC );
+
+ if (file == -1)
+ Error ("Error opening %s: %s",filename,strerror(errno));
+
+ // Write out ROTTCONFIG header
+
+ SafeWriteString (file, ";Rise of the Triad Configuration File\n");
+ SafeWriteString (file, "; (c) 1995\n\n");
+
+ // Write out Version
+
+ WriteParameter(file,"Version ",ROTTVERSION);
+
+ //Write out AllowBlitzguardMoreMissileWeps
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file, "; 1 - Allows Blitzguards to have Random Missile weapons\n");
+ SafeWriteString(file, "; 0 - Disallows the above (ROTT Default)\n");
+ WriteParameter(file, "AllowBlitzguardMoreMissileWeps ", allowBlitzMoreMissileWeps);
+
+ //Write out enableAmmoPickups
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file, "; 1 - Allows players to refill their missile weapons by running over one a matching one on the ground\n");
+ SafeWriteString(file, "; 0 - Disables the above (ROTT default)\n");
+ WriteParameter(file, "EnableAmmoPickups ", enableAmmoPickups);
+
+ //Write out autoAim
+
+ SafeWriteString(file, "\n;\n");
+ SafeWriteString(file, "; 1 - Bullet weapons will automatically target enemies. (ROTT default)\n");
+ SafeWriteString(file, "; 0 - Disables the above.\n");
+ WriteParameter(file, "AutoAim ", autoAim);
+
+ //Write out autoAimMissileWeps
+
+ SafeWriteString(file, "\n;\n");
+ SafeWriteString(file, "; 1 - Missile weapons will be automatically aimed at targets like bullet weapons.\n");
+ SafeWriteString(file, "; 0 - Missile weapons are not automatically aimed at targets. (ROTT default)\n");
+ WriteParameter(file, "AutoAimMissileWeps ", autoAimMissileWeps);
+
+ //Write out enableExtraPistolDrops
+
+ SafeWriteString(file, "\n;\n");
+ SafeWriteString(file, "; 1 - Enemies equipped with pistols have a chance of dropping an extra pistol when killed.\n");
+ SafeWriteString(file, "; 0 - Enemies will not drop extra pistols at all. (Default)\n");
+ WriteParameter(file, "EnableExtraPistolDrops ", enableExtraPistolDrops);
+
+ //Write out scaleOffset
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Field Of View offset\n");
+ WriteParameter(file,"FocalWidthOffset ",FocalWidthOffset);
+
+ // Write out MouseEnabled
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 1 - Mouse Enabled\n");
+ SafeWriteString(file,"; 0 - Mouse Disabled\n");
+ WriteParameter(file,"MouseEnabled ",mouseenabled);
+
+ // Write out UseMouseLook
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 1 - UseMouseLook Enabled\n");
+ SafeWriteString(file,"; 0 - UseMouseLook Disabled\n");
+ WriteParameter(file,"UseMouseLook ",usemouselook);
+
+ // Write out InverseMouse
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 1 - Normal Mouse Enabled\n");
+ SafeWriteString(file,"; -1 - Inverse Mouse Enabled\n");
+ WriteParameter(file,"InverseMouse ",inverse_mouse);
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 1 - Allows X and Y movement with Mouse. (Default)\n");
+ SafeWriteString(file,"; 0 - Allow only X movement with Mouse.\n");
+ WriteParameter(file,"allowMovementWithMouseYAxis ",allowMovementWithMouseYAxis);
+
+ // Write out UseJump
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 1 - usejump Enabled\n");
+ SafeWriteString(file,"; 0 - usejump Disabled\n");
+ WriteParameter(file,"UseJump ",usejump);
+
+ // Write out CrossHair
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 1 - CrossHair Enabled\n");
+ SafeWriteString(file,"; 0 - CrossHair Disabled\n");
+ WriteParameter(file,"CrossHair ", iG_aimCross);
+
+ // Write out JoystickEnabled
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 1 - Joystick Enabled\n");
+ SafeWriteString(file,"; 0 - Joystick Disabled\n");
+ WriteParameter(file,"JoystickEnabled ",joystickenabled);
+
+ // Write out JoypadEnabled
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 1 - Joypad Enabled\n");
+ SafeWriteString(file,"; 0 - Joypad Disabled\n");
+ WriteParameter(file,"JoypadEnabled ",joypadenabled);
+
+ // Write out JoystickPort
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 0 - Use Joystick Port 1\n");
+ SafeWriteString(file,"; 1 - Use Joystick Port 2\n");
+ WriteParameter(file,"JoystickPort ",joystickport);
+
+ // Write out fullscreen
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 0 - Start in windowed mode\n");
+ SafeWriteString(file,"; 1 - Start in fullscreen mode\n");
+ WriteParameter(file,"FullScreen ",sdl_fullscreen);
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file, "; 0 - Don't start in bordered window mode\n");
+ SafeWriteString(file, "; 1 - Start in bordered window mode\n");
+ WriteParameter(file, "BorderWindow ", borderWindow);
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file, "; 0 - Don't start in borderless window mode\n");
+ SafeWriteString(file, "; 1 - Start in borderless window mode\n");
+ WriteParameter(file, "BorderlessWindow ", borderlessWindow);
+
+ // Write out resolution
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Screen Resolution, supported resolutions: \n");
+ SafeWriteString(file,"; 320x200, 640x480 and 800x600\n");
+
+ //WriteParameter(file,"ScreenWidth ",iGLOBAL_SCREENWIDTH);
+ //WriteParameter(file,"ScreenHeight ",iGLOBAL_SCREENHEIGHT);
+
+ if (writeNewResIntoCfg)
+ {
+ WriteParameter(file,"ScreenWidth ",ScreenWidthToWriteToCfg);
+ WriteParameter(file,"ScreenHeight ",ScreenHeightToWriteToCfg);
+ }
+ else
+ {
+ WriteParameter(file,"ScreenWidth ",iGLOBAL_SCREENWIDTH);
+ WriteParameter(file,"ScreenHeight ",iGLOBAL_SCREENHEIGHT);
+ }
+
+
+ // Write out ViewSize
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Size of View port.\n");
+ SafeWriteString(file,"; (smallest) 0 - 10 (largest)\n");
+ WriteParameter(file,"ViewSize ",viewsize);
+
+ // Write out WEAPONSCALE bna added
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Size of Weaponscale.\n");
+ SafeWriteString(file,"; (smallest) 150 - 600 (largest)\n");
+ G_weaponscale = (weaponscale * 168 )/65536;
+
+ if ((G_weaponscale <150)||(G_weaponscale>600)) {
+ if (iGLOBAL_SCREENWIDTH == 320) {
+ G_weaponscale=168;
+ } else if (iGLOBAL_SCREENWIDTH == 640) {
+ G_weaponscale=299;
+ } else if (iGLOBAL_SCREENWIDTH == 800) {
+ G_weaponscale=376;
+ }
+ else if (iGLOBAL_SCREENWIDTH == 1024)
+ {
+ G_weaponscale=512;
+ }
+ }
+ WriteParameter(file,"Weaponscale ",G_weaponscale);
+
+
+ // Write out HUD Scale
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; HUD Scale.\n");
+ if (writeNewResIntoCfg)
+ {
+ WriteParameter(file,"HUDScale ",HudScaleToWriteToCfg);
+ }
+ else
+ {
+ WriteParameter(file,"HUDScale ",hudRescaleFactor);
+ }
+
+ // Write out MouseAdjustment
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Sensitivity of Mouse\n");
+ SafeWriteString(file,"; (lowest) 0 - 11 (highest)\n");
+ WriteParameter(file,"MouseAdjustment ",mouseadjustment);
+
+ // Write out threshold
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Threshold of Mouse and Joystick\n");
+ SafeWriteString(file,"; (smallest) 1 - 15 (largest)\n");
+ WriteParameter(file,"Threshold ",threshold);
+
+ // Write in Auto Detail
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 1 - Auto Detail on\n");
+ SafeWriteString(file,"; 0 - Auto Detail off\n");
+ WriteParameter (file,"AutoDetail ", AutoDetailOn);
+
+ // Write in Light Dim
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 1 - Light Diminishing on\n");
+ SafeWriteString(file,"; 0 - Light Diminishing off\n");
+ WriteParameter (file,"LightDim ", fulllight);
+
+ // Write in Bobbin' On
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 1 - Bobbing on\n");
+ SafeWriteString(file,"; 0 - Bobbing off\n");
+ WriteParameter (file,"BobbingOn ", BobbinOn);
+
+ // Write in Double Click Speed
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; (slowest) 50 - 5 (fastest)\n");
+ WriteParameter (file,"DoubleClickSpeed ", DoubleClickSpeed);
+
+ // Write in Menu Flip Speed
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Menu Flip Speed\n");
+ SafeWriteString(file,"; (slowest) 100 - 5 (fastest)\n");
+ WriteParameter (file,"MenuFlipSpeed ", Menuflipspeed);
+
+ // Write in Detail Level
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 0 - Detail Level Low\n");
+ SafeWriteString(file,"; 1 - Detail Level Medium\n");
+ SafeWriteString(file,"; 2 - Detail Level High\n");
+ WriteParameter (file,"DetailLevel ", DetailLevel);
+
+ // Write in Floor and Ceiling
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 1 - Floor and Ceiling on\n");
+ SafeWriteString(file,"; 0 - Floor and Ceiling off\n");
+ WriteParameter (file,"FloorCeiling ", fandc);
+
+ // Write in DisableMessages
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 1 - Messages on\n");
+ SafeWriteString(file,"; 0 - Messages off\n");
+ WriteParameter (file,"Messages ", MessagesEnabled );
+
+ // Write in AutoRun
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 1 - AutoRun on\n");
+ SafeWriteString(file,"; 0 - AutoRun off\n");
+ WriteParameter (file,"AutoRun ", gamestate.autorun );
+
+ // Write in GammaIndex
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; 0 - Gamma Correction level 1\n");
+ SafeWriteString(file,"; 1 - Gamma Correction level 2\n");
+ SafeWriteString(file,"; 2 - Gamma Correction level 3\n");
+ SafeWriteString(file,"; 3 - Gamma Correction level 4\n");
+ SafeWriteString(file,"; 4 - Gamma Correction level 5\n");
+ WriteParameter (file,"GammaIndex ", gammaindex);
+
+ // Write out screen saver time
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Minutes before screen blanking\n");
+ WriteParameter (file,"BlankTime ", blanktime/(VBLCOUNTER*60));
+
+
+ // Write out keys
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Scan codes for keyboard buttons\n");
+ WriteParameter (file,"Fire ", buttonscan[0]);
+ WriteParameter (file,"Strafe ", buttonscan[1]);
+ WriteParameter (file,"Run ", buttonscan[2]);
+ WriteParameter (file,"Use ", buttonscan[3]);
+ WriteParameter (file,"LookUp ", buttonscan[4]);
+ WriteParameter (file,"LookDn ", buttonscan[5]);
+ WriteParameter (file,"Swap ", buttonscan[6]);
+ WriteParameter (file,"Drop ", buttonscan[7]);
+ WriteParameter (file,"TargetUp ", buttonscan[8]);
+ WriteParameter (file,"TargetDn ", buttonscan[9]);
+ WriteParameter (file,"SelPistol ", buttonscan[10]);
+ WriteParameter (file,"SelDualPistol ", buttonscan[11]);
+ WriteParameter (file,"SelMP40 ", buttonscan[12]);
+ WriteParameter (file,"SelMissile ", buttonscan[13]);
+ WriteParameter (file,"AutoRun ", buttonscan[14]);
+ WriteParameter (file,"LiveRemRid ", buttonscan[15]);
+ WriteParameter (file,"StrafeLeft ", buttonscan[16]);
+ WriteParameter (file,"StrafeRight ", buttonscan[17]);
+ WriteParameter (file,"VolteFace ", buttonscan[18]);
+ WriteParameter (file,"Aim ", buttonscan[19]);
+ WriteParameter (file,"Forward ", buttonscan[20]);
+ WriteParameter (file,"Right ", buttonscan[21]);
+ WriteParameter (file,"Backward ", buttonscan[22]);
+ WriteParameter (file,"Left ", buttonscan[23]);
+ WriteParameter (file,"Map ", buttonscan[24]);
+ WriteParameter (file,"SendMessage ", buttonscan[25]);
+ WriteParameter (file,"DirectMessage ", buttonscan[26]);
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Mouse buttons\n");
+
+ WriteParameter (file,"MouseButton0 ", buttonmouse[0]);
+ WriteParameter (file,"MouseButton1 ", buttonmouse[1]);
+ WriteParameter (file,"MouseButton2 ", buttonmouse[2]);
+ WriteParameter (file,"DblClickB0 ", buttonmouse[3]);
+ WriteParameter (file,"DblClickB1 ", buttonmouse[4]);
+ WriteParameter (file,"DblClickB2 ", buttonmouse[5]);
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Joystick buttons\n");
+
+ WriteParameter (file,"JoyButton0 ", buttonjoy[0]);
+ WriteParameter (file,"JoyButton1 ", buttonjoy[1]);
+ WriteParameter (file,"JoyButton2 ", buttonjoy[2]);
+ WriteParameter (file,"JoyButton3 ", buttonjoy[3]);
+ WriteParameter (file,"DblClickJB0 ", buttonjoy[4]);
+ WriteParameter (file,"DblClickJB1 ", buttonjoy[5]);
+ WriteParameter (file,"DblClickJB2 ", buttonjoy[6]);
+ WriteParameter (file,"DblClickJB3 ", buttonjoy[7]);
+
+ SafeWriteString(file,"\n;\n");
+ SafeWriteString(file,"; Joystick calibration coordinates\n");
+
+ WriteParameter (file,"JoyMaxX ", joyxmax);
+ WriteParameter (file,"JoyMaxY ", joyymax);
+ WriteParameter (file,"JoyMinX ", joyxmin);
+ WriteParameter (file,"JoyMinY ", joyymin);
+
+ // Write out DefaultDifficulty
+ SafeWriteString(file,"\n;\n");
+ WriteParameter(file,"; Easy - ", gd_baby );
+ WriteParameter(file,"; Medium - ", gd_easy );
+ WriteParameter(file,"; Hard - ", gd_medium );
+ WriteParameter(file,"; Crezzy - ", gd_hard );
+ WriteParameter(file,"DefaultDifficulty ", DefaultDifficulty );
+
+ // Write out DefaultPlayerCharacter
+ SafeWriteString(file,"\n;\n");
+ WriteParameter(file,"; Taradino Cassatt - ", 0 );
+ WriteParameter(file,"; Thi Barrett - ", 1 );
+ WriteParameter(file,"; Doug Wendt - ", 2 );
+ WriteParameter(file,"; Lorelei Ni - ", 3 );
+ WriteParameter(file,"; Ian Paul Freeley - ", 4 );
+ WriteParameter(file,"DefaultPlayerCharacter ", DefaultPlayerCharacter );
+
+ // Write out DefaultPlayerColor
+ SafeWriteString(file,"\n;\n");
+ WriteParameter(file,"; Gray - ", 0 );
+ WriteParameter(file,"; Brown - ", 1 );
+ WriteParameter(file,"; Black - ", 2 );
+ WriteParameter(file,"; Tan - ", 3 );
+ WriteParameter(file,"; Red - ", 4 );
+ WriteParameter(file,"; Olive - ", 5 );
+ WriteParameter(file,"; Blue - ", 6 );
+ WriteParameter(file,"; White - ", 7 );
+ WriteParameter(file,"; Green - ", 8 );
+ WriteParameter(file,"; Purple - ", 9 );
+ WriteParameter(file,"; Orange - ", 10 );
+ WriteParameter(file,"DefaultPlayerColor ", DefaultPlayerColor );
+
+ // Writeout password Password string
+ SafeWriteString(file,"\n;\nSecretPassword ");
+ memset(passwordtemp,0,sizeof(passwordtemp));
+ ConvertPasswordStringToString ( &passwordtemp[0] );
+ SafeWriteString(file,&passwordtemp[0]);
+
+ close (file);
+ inconfig--;
+}
+
+
+//****************************************************************************
+//
+// GetAlternatePath ()
+//
+//****************************************************************************
+
+void GetAlternatePath (char * tokenstr, AlternateInformation *info)
+{
+ strcpy (&info->path[0], ".\0");
+ GetToken (true);
+ if (!stricmp (token, tokenstr))
+ {
+ GetTokenEOL (false);
+ memset (&info->path[0], 0, sizeof (&info->path));
+ strcpy (&info->path[0], &name[0]);
+ }
+}
+
+
+//****************************************************************************
+//
+// GetAlternateFile ()
+//
+//****************************************************************************
+
+void GetAlternateFile (char * tokenstr, AlternateInformation *info)
+{
+ // Read in remote sound file
+ //
+ strcpy (&info->file[0], "foo.foo\0");
+ GetToken (true);
+ if (!stricmp (token, tokenstr))
+ {
+ if (TokenAvailable()==true)
+ {
+ GetToken (false);
+ if (stricmp (token, "~"))
+ {
+#if (SHAREWARE == 0)
+ info->avail = true;
+ memset (&info->file[0], 0, sizeof (&info->file));
+ strcpy (&info->file[0], &token[0]);
+#else
+ printf("Alternate file %s ignored.\n",token);
+ memset (&info->file[0], 0, sizeof (info->file));
+#endif
+ }
+ }
+ }
+}
+
+
+//****************************************************************************
+//
+// ReadSETUPFiles ()
+//
+//****************************************************************************
+
+void ReadSETUPFiles (void)
+{
+ char filename[ 128 ];
+ int i;
+
+ RemoteSounds.avail = false;
+// PlayerGraphics.avail = false;
+ GameLevels.avail = false;
+ BattleLevels.avail = false;
+
+ GetPathFromEnvironment( filename, ApogeePath, CONFIG );
+ if (access (filename, F_OK) == 0)
+ {
+ LoadScriptFile (filename);
+
+ GetTokenEOL (true); //MODEMNAME
+ GetTokenEOL (true); //MODEMINITSTR
+ GetTokenEOL (true); //MODEMHANGUP
+ GetTokenEOL (true); //RATE
+ GetTokenEOL (true); //COMPORT
+ GetTokenEOL (true); //IRQ
+ GetTokenEOL (true); //UART
+ GetTokenEOL (true); //PULSE
+ GetTokenEOL (true); //AUTOMATICDIALOUT
+
+ GetAlternatePath ("REMOTESOUNDPATH", &RemoteSounds);
+// GetAlternatePath ("PLAYERGRAPHICSPATH", &PlayerGraphics);
+ GetAlternatePath ("GAMELEVELPATH", &GameLevels);
+ GetAlternatePath ("BATTLELEVELPATH", &BattleLevels);
+
+ // Get CodeName
+ GetToken (true);
+ if (stricmp (token, "CODENAME"))
+ Error ("Can't find %s token.\n", "CODENAME");
+
+ GetTokenEOL (false);
+ memset (&CodeName[0], 0, sizeof (CodeName));
+ if (stricmp (name, "~"))
+ {
+
+ // Get First (MAXCODENAMELENGTH-1) characters
+ for (i=0; i<MAXCODENAMELENGTH-1; i++)
+ CodeName[i]=name[i];
+ }
+ GetTokenEOL (true); //NUMPLAYERS
+ GetTokenEOL (true); //NETWORKSOCKET
+ GetTokenEOL (true); //DEFAULT
+ for (i=0; i<14; i++)
+ GetTokenEOL (true); //NUMBERLIST
+
+ memset (CommbatMacros, 0, sizeof(CommbatMacros) );
+
+ for (i=0; i<MAXMACROS; i++)
+ {
+ GetToken (true);
+
+ GetTokenEOL (true);
+
+ if (name[0] != '~')
+ {
+ memcpy (&CommbatMacros[i].macro[0], &name[0], strlen (name));
+ CommbatMacros[i].avail = 1;
+ }
+ }
+
+ Z_Free (scriptbuffer);
+ }
+
+ GetPathFromEnvironment( filename, ApogeePath, ROTT );
+ if (access (filename, F_OK) == 0)
+ {
+ LoadScriptFile (filename);
+
+ GetTokenEOL (true); //PHONENUMBER
+
+ GetAlternateFile ("REMOTESOUNDFILE", &RemoteSounds);
+// GetAlternateFile ("PLAYERGRAPHICSFILE", &PlayerGraphics);
+ GetAlternateFile ("GAMELEVELFILE", &GameLevels);
+ GetAlternateFile ("COMMBATLEVELFILE", &BattleLevels);
+
+ Z_Free (scriptbuffer);
+
+ unlink (filename); // Delete ROTT.ROT
+ }
+}
+