mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
Made direction variables more consistent as unsigned chars. Several function prototypes updated for this. Many memory leaks plugged: External options, video overlays, laptop file lists, tactical message queue, strategic pathing, autobandage, merc hiring, detailed placements, crate in Drassen, tactical placement New functions and attributes for soldiers in LUA (still for debugging at best): Soldier.APs (current APs), Soldier.changestance (changes stance, uses game heights) File catalog ignores .SVN directories (game load speedup) Fix CTD in mouse regions JA2 window now refuses to move to negative coords Checks to prevent DirectX-related infinite loops due to minimizing and task switching Invading enemies should now appear on the borders even when reinforcements disabled in .ini Suppression should no longer work on mercs in medium water Infant/Young creatures use restored spit instead of Molotov Creatures begin with their 'guns' (spit) 'locked and loaded' (cartridge in chamber) Further fix to AXP and AlaarDB's weapon ready check: Now 'firing' is always counted as 'ready'. Prevent mercs from falling and flying back through obstacles Check whether battle group is even set before testing its location for battle setup Burst spread locations now limited to 6, the limit within the soldier struct Extra burst spread locations zeroed out so that they aren't used unless necessary Spread code now only shoots at locations in the spread, and will shoot at all 6 Only mercs in the sector where autobandage happens will be made to stand up after it's done Throwing a grenade at the tail of the plane in Drassen should not result in a CTD Reset attack busy count when loading a new sector git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@1347 3b4a5df2-a311-0410-b5c6-a8a6f20db521
457 lines
12 KiB
C
457 lines
12 KiB
C
#ifndef _GAME_SETTINGS__H_
|
|
#define _GAME_SETTINGS__H_
|
|
|
|
|
|
//If you add any options, MAKE sure you add the corresponding string to the Options Screen string array
|
|
enum
|
|
{
|
|
TOPTION_SPEECH,
|
|
TOPTION_MUTE_CONFIRMATIONS,
|
|
TOPTION_SUBTITLES,
|
|
TOPTION_KEY_ADVANCE_SPEECH,
|
|
TOPTION_ANIMATE_SMOKE,
|
|
// TOPTION_HIDE_BULLETS,
|
|
// TOPTION_CONFIRM_MOVE,
|
|
TOPTION_BLOOD_N_GORE,
|
|
TOPTION_DONT_MOVE_MOUSE,
|
|
TOPTION_OLD_SELECTION_METHOD,
|
|
TOPTION_ALWAYS_SHOW_MOVEMENT_PATH,
|
|
|
|
|
|
// TOPTION_TIME_LIMIT_TURNS, //moved to the game init screen
|
|
|
|
TOPTION_SHOW_MISSES,
|
|
|
|
TOPTION_RTCONFIRM,
|
|
|
|
|
|
// TOPTION_DISPLAY_ENEMY_INDICATOR, //Displays the number of enemies seen by the merc, ontop of their portrait
|
|
TOPTION_SLEEPWAKE_NOTIFICATION,
|
|
|
|
TOPTION_USE_METRIC_SYSTEM, //If set, uses the metric system
|
|
|
|
TOPTION_MERC_ALWAYS_LIGHT_UP,
|
|
|
|
TOPTION_SMART_CURSOR,
|
|
|
|
TOPTION_SNAP_CURSOR_TO_DOOR,
|
|
|
|
TOPTION_GLOW_ITEMS,
|
|
TOPTION_TOGGLE_TREE_TOPS,
|
|
TOPTION_TOGGLE_WIREFRAME,
|
|
TOPTION_3D_CURSOR,
|
|
TOPTION_CTH_CURSOR,
|
|
TOPTION_GL_BURST_CURSOR,
|
|
TOPTION_DROP_ALL,
|
|
TOPTION_GL_HIGH_ANGLE,
|
|
TOPTION_AIM_LEVEL_RESTRICTION,
|
|
TOPTION_SPACE_SELECTS_NEXT_SQUAD,
|
|
TOPTION_SHOW_ITEM_SHADOW,
|
|
TOPTION_SHOW_WEAPON_RANGE_IN_TILES,
|
|
TOPTION_TRACERS_FOR_SINGLE_FIRE,
|
|
TOPTION_RAIN_SOUND,
|
|
TOPTION_ALLOW_CROWS,
|
|
TOPTION_USE_RANDOM_PERSONALITY,
|
|
TOPTION_USE_AUTO_SAVE,
|
|
TOPTION_SILENT_SKYRIDER,
|
|
TOPTION_LOW_CPU_USAGE,
|
|
NUM_GAME_OPTIONS, //Toggle up this will be able to be Toggled by the player
|
|
|
|
|
|
//These options will NOT be toggable by the Player
|
|
TOPTION_MERC_CASTS_LIGHT = NUM_GAME_OPTIONS,
|
|
TOPTION_HIDE_BULLETS,
|
|
TOPTION_TRACKING_MODE,
|
|
|
|
NUM_ALL_GAME_OPTIONS,
|
|
};
|
|
|
|
|
|
typedef struct
|
|
{
|
|
INT8 bLastSavedGameSlot; // The last saved game number goes in here
|
|
|
|
UINT8 ubMusicVolumeSetting;
|
|
UINT8 ubSoundEffectsVolume;
|
|
UINT8 ubSpeechVolume;
|
|
|
|
//The following are set from the status of the toggle boxes in the Options Screen
|
|
UINT8 fOptions[ NUM_ALL_GAME_OPTIONS ];
|
|
|
|
CHAR8 zVersionNumber[14];
|
|
|
|
UINT32 uiSettingsVersionNumber;
|
|
UINT32 uiMeanwhileScenesSeenFlags;
|
|
|
|
BOOLEAN fHideHelpInAllScreens;
|
|
|
|
BOOLEAN fUNUSEDPlayerFinishedTheGame; // JA2Gold: for UB compatibility
|
|
UINT8 ubSizeOfDisplayCover;
|
|
UINT8 ubSizeOfLOS;
|
|
|
|
UINT8 ubFiller[17];
|
|
|
|
} GAME_SETTINGS;
|
|
|
|
|
|
|
|
//Enums for the difficulty levels
|
|
enum
|
|
{
|
|
DIF_LEVEL_ZERO,
|
|
DIF_LEVEL_EASY,
|
|
DIF_LEVEL_MEDIUM,
|
|
DIF_LEVEL_HARD,
|
|
DIF_LEVEL_INSANE,
|
|
DIF_LEVEL_FIVE,
|
|
};
|
|
|
|
//Enums for the difficulty levels
|
|
enum
|
|
{
|
|
STYLE_REALISTIC = 0, //the specific indices are there to keep compartibility wiht old saves (back when there were only 2 styles)
|
|
STYLE_SCIFI = 1,
|
|
STYLE_PLATINUM = 2,
|
|
};
|
|
|
|
enum
|
|
{
|
|
BR_GOOD = 1,
|
|
BR_GREAT = 2,
|
|
BR_EXCELLENT = 4,
|
|
BR_AWESOME = 10,
|
|
};
|
|
|
|
typedef struct
|
|
{
|
|
BOOLEAN fGunNut;
|
|
BOOLEAN fAirStrikes;//Madd
|
|
UINT8 ubGameStyle;
|
|
UINT8 ubDifficultyLevel;
|
|
BOOLEAN fTurnTimeLimit;
|
|
BOOLEAN fIronManMode;
|
|
UINT8 ubBobbyRay;
|
|
UINT8 ubFiller[7];
|
|
|
|
} GAME_OPTIONS;
|
|
|
|
// Snap: Options read from an INI file in the default of custom Data directory
|
|
typedef struct
|
|
{
|
|
INT32 iStartingCashNovice;
|
|
INT32 iStartingCashExperienced;
|
|
INT32 iStartingCashExpert;
|
|
INT32 iStartingCashInsane;
|
|
|
|
UINT32 iGameStartingTime; //Lalien: game starting time
|
|
UINT32 iFirstArrivalDelay;
|
|
|
|
BOOLEAN fSellAll;
|
|
INT16 iPriceModifier;
|
|
|
|
// WDS: Allow flexible numbers of IMPs of each sex
|
|
INT32 iIMPMaleCharacterCount; // Count of how many there are
|
|
INT32 iIMPFemaleCharacterCount;
|
|
INT32 iMaxIMPCharacters; // Limit of how many to allow
|
|
//
|
|
// iaIMPSlots is an array of the slots (in prof.dat) to use for IMPs.
|
|
//
|
|
INT32 *iaIMPSlots;
|
|
|
|
INT32 iMinAttribute;
|
|
INT32 iMaxAttribute;
|
|
INT32 iImpAttributePoints;
|
|
INT32 iMaxZeroBonus;
|
|
INT32 iStartAttribute;
|
|
|
|
INT32 iMaxMilitiaPerSector;
|
|
INT32 iTrainingSquadSize;
|
|
INT32 iMilitiaTrainingCost;
|
|
INT32 iMilitiaCostModifier;
|
|
INT32 iRegularCostModifier;
|
|
INT32 iVeteranCostModifier;
|
|
INT32 iMinLoyaltyToTrain;
|
|
|
|
INT32 iMaxEnemyGroupSize;
|
|
|
|
INT32 iReinforcementPoolNovice;
|
|
INT32 iReinforcementPoolExperienced;
|
|
INT32 iReinforcementPoolExpert;
|
|
INT32 iReinforcementPoolInsane;
|
|
|
|
INT32 iForcePercentageNovice;
|
|
INT32 iForcePercentageExperienced;
|
|
INT32 iForcePercentageExpert;
|
|
INT32 iForcePercentageInsane;
|
|
|
|
INT32 iPercentElitesBonusExpert;
|
|
INT32 iPercentElitesBonusInsane;
|
|
INT32 iPercentElitesBonusExperienced;
|
|
|
|
UINT8 ubMinEnemyGroupSizeNovice;
|
|
UINT8 ubMinEnemyGroupSizeExperienced;
|
|
UINT8 ubMinEnemyGroupSizeExpert;
|
|
UINT8 ubMinEnemyGroupSizeInsane;
|
|
|
|
BOOLEAN fMercDayOne;
|
|
BOOLEAN fAllMercsAvailable;
|
|
|
|
//BOOLEAN fPers_att;
|
|
|
|
INT8 iCustomPersonality;
|
|
INT8 iCustomAttitude;
|
|
|
|
INT8 iEasyAPBonus;
|
|
INT8 iExperiencedAPBonus;
|
|
INT8 iExpertAPBonus;
|
|
INT8 iInsaneAPBonus;
|
|
INT8 iPlayerAPBonus;
|
|
// Kaiden: Vehicle Inventory change - Added for INI Option
|
|
BOOLEAN fVehicleInventory;
|
|
|
|
// System settings
|
|
UINT8 gubDeadLockDelay;
|
|
BOOLEAN gfEnableEmergencyButton_SkipStrategicEvents;
|
|
|
|
|
|
//Video settings
|
|
BOOLEAN gfVSync;
|
|
|
|
//Animation settings
|
|
UINT32 gubPlayerTurnSpeedUpFactor;
|
|
UINT32 gubEnemyTurnSpeedUpFactor;
|
|
UINT32 gubCreatureTurnSpeedUpFactor;
|
|
UINT32 gubMilitiaTurnSpeedUpFactor;
|
|
UINT32 gubCivilianTurnSpeedUpFactor;
|
|
|
|
//Sound settings
|
|
UINT32 guiWeaponSoundEffectsVolume;
|
|
|
|
// WDS - Option to turn off stealing
|
|
BOOLEAN fStealingDisabled;
|
|
|
|
// Militia Settings
|
|
BOOLEAN fAllowTacticalMilitiaCommand;
|
|
BOOLEAN gfTrainVeteranMilitia;
|
|
BOOLEAN gfAllowMilitiaGroups;
|
|
BOOLEAN gfmusttrainroaming;
|
|
BOOLEAN gflimitedRoaming;
|
|
BOOLEAN gfAllowReinforcements;
|
|
BOOLEAN gfAllowReinforcementsOnlyInCity;
|
|
UINT32 guiBaseQueenPoolIncrement;
|
|
|
|
UINT32 guiAllowMilitiaGroupsDelay;
|
|
UINT32 guiTrainVeteranMilitiaDelay;
|
|
UINT32 guiCreateEachNHours;
|
|
UINT32 guiDivOfOriginalMilitia;
|
|
UINT32 guiMinMilitiaSquadSize;
|
|
UINT32 guiMaxMilitiaSquadSize;
|
|
UINT32 guiMaxMilitiaSquadSizeBattle;
|
|
|
|
BOOLEAN gfAllowSoldierToolTips;
|
|
|
|
|
|
//Sight range
|
|
UINT32 ubStraightSightRange;
|
|
UINT32 ubVisDistDecreasePerRainIntensity;
|
|
BOOLEAN gfAllowLimitedVision;
|
|
|
|
BOOLEAN gfShiftFUnloadWeapons;
|
|
BOOLEAN gfShiftFRemoveAttachments;
|
|
|
|
// Rain settings
|
|
BOOLEAN gfAllowRain;
|
|
UINT32 gusRainChancePerDay;
|
|
UINT32 gusRainMinLength;
|
|
UINT32 gusRainMaxLength;
|
|
UINT32 guiMaxRainDrops;
|
|
UINT32 ubWeaponReliabilityReductionPerRainIntensity;
|
|
double ubBreathGainReductionPerRainIntensity;
|
|
|
|
// Thunder settings
|
|
BOOLEAN gfAllowLightning;
|
|
UINT32 guiMinLightningInterval;
|
|
UINT32 guiMaxLightningInterval;
|
|
UINT32 guiMinDLInterval;
|
|
UINT32 guiMaxDLInterval;
|
|
UINT32 guiProlongLightningIfSeenSomeone;
|
|
UINT32 guiChanceToDoLightningBetweenTurns;
|
|
|
|
// WDS: Progress settings
|
|
|
|
UINT32 ubGameProgressPortionKills;
|
|
UINT32 ubGameProgressPortionControl;
|
|
UINT32 ubGameProgressPortionIncome;
|
|
UINT32 ubGameProgressPortionVisited;
|
|
|
|
// Event settings
|
|
|
|
UINT32 ubGameProgressStartMadlabQuest;
|
|
UINT32 ubGameProgressMikeAvailable;
|
|
UINT32 ubGameProgressIggyAvaliable;
|
|
BOOLEAN ubSendTroopsToDrassen;
|
|
|
|
|
|
//Gameplay settings
|
|
|
|
UINT32 ubExplosivesDamageMultiplier;
|
|
UINT32 ubGunDamageMultiplier;
|
|
UINT32 ubMeleeDamageMultiplier;
|
|
|
|
UINT32 ubEasyEnemyStartingAlertLevel;
|
|
UINT32 ubNormalEnemyStartingAlertLevel;
|
|
UINT32 ubHardEnemyStartingAlertLevel;
|
|
UINT32 ubInsaneEnemyStartingAlertLevel;
|
|
|
|
UINT32 ubEasyEnemyStartingAlertDecay;
|
|
UINT32 ubNormalEnemyStartingAlertDecay;
|
|
UINT32 ubHardEnemyStartingAlertDecay;
|
|
UINT32 ubInsaneEnemyStartingAlertDecay;
|
|
|
|
UINT32 ubEasyTimeEvaluateInMinutes;
|
|
UINT32 ubNormalTimeEvaluateInMinutes;
|
|
UINT32 ubHardTimeEvaluateInMinutes;
|
|
UINT32 ubInsaneTimeEvaluateInMinutes;
|
|
|
|
UINT32 ubEasyTimeEvaluateVariance;
|
|
UINT32 ubNormalTimeEvaluateVariance;
|
|
UINT32 ubHardTimeEvaluateVariance;
|
|
UINT32 ubInsaneTimeEvaluateVariance;
|
|
|
|
UINT32 ubEasyGracePeriodInHours;
|
|
UINT32 ubNormalGracePeriodInHours;
|
|
UINT32 ubHardGracePeriodInHours;
|
|
UINT32 ubInsaneGracePeriodInHours;
|
|
|
|
UINT32 ubEasyPatrolGracePeriodInDays;
|
|
UINT32 ubNormalPatrolGracePeriodInDays;
|
|
UINT32 ubHardPatrolGracePeriodInDays;
|
|
UINT32 ubInsanePatrolGracePeriodInDays;
|
|
|
|
UINT32 ubEasyNumAwareBattles;
|
|
UINT32 ubNormalNumAwareBattles;
|
|
UINT32 ubHardNumAwareBattles;
|
|
UINT32 ubInsaneNumAwareBattles;
|
|
|
|
|
|
BOOLEAN gfEasyUnlimitedTroops;
|
|
BOOLEAN gfNormalUnlimitedTroops;
|
|
BOOLEAN gfHardUnlimitedTroops;
|
|
BOOLEAN gfInsaneUnlimitedTroops;
|
|
|
|
BOOLEAN gfEasyAggressiveQueen;
|
|
BOOLEAN gfNormalAggressiveQueen;
|
|
BOOLEAN gfHardAggressiveQueen;
|
|
BOOLEAN gfInsaneAggressiveQueen;
|
|
|
|
BOOLEAN gfInvestigateSector;
|
|
BOOLEAN gfReassignPendingReinforcements;
|
|
|
|
INT32 ubEnemiesItemDrop;
|
|
|
|
BOOLEAN gfUseExternalLoadscreens;
|
|
|
|
BOOLEAN gfUseAutoSave;
|
|
|
|
//Merc Assignment settings
|
|
INT32 ubAssignmentUnitsPerDay;
|
|
INT32 ubMinutesForAssignmentToCount;
|
|
|
|
INT32 ubTrainingSkillMin;
|
|
INT32 ubTrainingSkillMax;
|
|
INT32 ubSelfTrainingDivisor;
|
|
INT32 ubInstructedTrainingDivisor;
|
|
INT32 ubGunRangeTrainingBonus;
|
|
INT32 ubTownMilitiaTrainingRate;
|
|
INT32 ubMaxMilitiaTrainersPerSector;
|
|
INT32 ubTeachBonusToTrain;
|
|
INT32 ubRpcBonusToTrainMilitia;
|
|
INT32 ubMinSkillToTeach;
|
|
|
|
INT32 ubLowActivityLevel;
|
|
INT32 ubMediumActivityLevel;
|
|
INT32 ubHighActivityLevel;
|
|
INT32 ubDoctoringRateDivisor;
|
|
INT32 ubHospitalHealingRate;
|
|
INT32 ubBaseMedicalSkillToDealWithEmergency;
|
|
INT32 ubMultiplierForDifferenceInLifeValueForEmergency;
|
|
INT32 ubPointCostPerHealthBelowOkLife;//OKLIFE = 15
|
|
|
|
INT32 ubRepairCostPerJam;
|
|
INT32 ubRepairRateDivisor;
|
|
|
|
//Misc settings
|
|
BOOLEAN fAmmoDynamicWeight; //Pulmu
|
|
BOOLEAN fEnableCrepitus;
|
|
BOOLEAN fEnableAllWeaponCaches;
|
|
BOOLEAN fEnableAllTerrorists;
|
|
BOOLEAN gfRevealItems;
|
|
BOOLEAN fEnableArmorCoverage; // ShadoWarrior for Captain J's armor coverage
|
|
|
|
// ShadoWarrior: Tooltip changes (start)
|
|
UINT8 ubSoldierTooltipDetailLevel;
|
|
|
|
BOOLEAN fEnableDynamicSoldierTooltips;
|
|
BOOLEAN fEnableSoldierTooltipLocation;
|
|
BOOLEAN fEnableSoldierTooltipBrightness;
|
|
BOOLEAN fEnableSoldierTooltipRangeToTarget;
|
|
BOOLEAN fEnableSoldierTooltipID;
|
|
BOOLEAN fEnableSoldierTooltipOrders;
|
|
BOOLEAN fEnableSoldierTooltipAttitude;
|
|
BOOLEAN fEnableSoldierTooltipActionPoints;
|
|
BOOLEAN fEnableSoldierTooltipHealth;
|
|
BOOLEAN fEnableSoldierTooltipHelmet;
|
|
BOOLEAN fEnableSoldierTooltipVest;
|
|
BOOLEAN fEnableSoldierTooltipLeggings;
|
|
BOOLEAN fEnableSoldierTooltipHeadItem1;
|
|
BOOLEAN fEnableSoldierTooltipHeadItem2;
|
|
BOOLEAN fEnableSoldierTooltipWeapon;
|
|
BOOLEAN fEnableSoldierTooltipSecondHand;
|
|
BOOLEAN fEnableSoldierTooltipBigSlot1;
|
|
BOOLEAN fEnableSoldierTooltipBigSlot2;
|
|
BOOLEAN fEnableSoldierTooltipBigSlot3;
|
|
BOOLEAN fEnableSoldierTooltipBigSlot4;
|
|
// ShadoWarrior: Tooltip changes (end)
|
|
|
|
//Kaiden MERC Deaths Externalized:
|
|
BOOLEAN gfMercsDieOnAssignment;
|
|
INT32 giEasyMercDeaths;
|
|
INT32 giExperiencedMercDeaths;
|
|
INT32 giExpertMercDeaths;
|
|
INT32 giInsaneMercDeaths;
|
|
|
|
// Lesh: slow enemy items choice progress
|
|
BOOLEAN fSlowProgressForEnemyItemsChoice;
|
|
|
|
} GAME_EXTERNAL_OPTIONS;
|
|
|
|
//This structure will contain general Ja2 settings NOT individual game settings.
|
|
extern GAME_SETTINGS gGameSettings;
|
|
|
|
//This structure will contain the Game options set at the beginning of the game.
|
|
extern GAME_OPTIONS gGameOptions;
|
|
|
|
// Snap: Options read from an INI file in the default of custom Data directory
|
|
extern GAME_EXTERNAL_OPTIONS gGameExternalOptions;
|
|
|
|
BOOLEAN SaveGameSettings();
|
|
BOOLEAN LoadGameSettings();
|
|
// Snap: Read options from an INI file in the default of custom Data directory
|
|
void LoadGameExternalOptions();
|
|
void FreeGameExternalOptions();
|
|
|
|
void InitGameOptions();
|
|
|
|
|
|
BOOLEAN GetCDLocation( );
|
|
|
|
void DisplayGameSettings( );
|
|
|
|
BOOLEAN MeanwhileSceneSeen( UINT8 ubMeanwhile );
|
|
|
|
BOOLEAN SetMeanwhileSceneSeen( UINT8 ubMeanwhile );
|
|
|
|
BOOLEAN CanGameBeSaved();
|
|
|
|
#endif
|