CnC_Remastered_Collection/TIBERIANDAWN/SPECIAL.H
PG-SteveT ae72fce5dd August 6th Patch Update
Accumulated DLL source code changes since June 22nd patch
2020-08-06 09:44:54 -07:00

276 lines
7.9 KiB
C++

//
// Copyright 2020 Electronic Arts Inc.
//
// TiberianDawn.DLL and RedAlert.dll and corresponding source code 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 3 of the License, or (at your option) any later version.
// TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed
// in the hope that it will be useful, but with permitted additional restrictions
// under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT
// distributed with this program. You should have received a copy of the
// GNU General Public License along with permitted additional restrictions
// with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection
/* $Header: F:\projects\c&c\vcs\code\special.h_v 2.15 16 Oct 1995 16:47:36 JOE_BOSTIC $ */
/***********************************************************************************************
*** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
***********************************************************************************************
* *
* Project Name : Command & Conquer *
* *
* File Name : SPECIAL.H *
* *
* Programmer : Joe L. Bostic *
* *
* Start Date : 02/27/95 *
* *
* Last Update : February 27, 1995 [JLB] *
* *
*---------------------------------------------------------------------------------------------*
* Functions: *
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
#ifndef SPECIAL_H
#define SPECIAL_H
class SpecialClass
{
public:
void Init(void) {
IsScrollMod = false;
IsGross = false;
IsEasy = false;
IsDifficult = false;
IsSpeedBuild = false;
IsDefenderAdvantage = true;
IsVisibleTarget = false;
IsVariation = false;
IsJurassic = false;
IsJuvenile = false;
IsSmartDefense = false;
IsTreeTarget = false;
IsMCVDeploy = false;
IsVisceroids = false;
IsMonoEnabled = false;
IsInert = false;
IsShowPath = false;
IsThreePoint = false;
IsTGrowth = true;
IsTSpread = true;
IsTFast = true;
IsRoad = false;
IsScatter = false;
IsCaptureTheFlag = false;
IsNamed = false;
IsFromInstall = false;
IsSeparate = false;
IsFromWChat = false;
IsEarlyWin = false;
HealthBarDisplayMode = HB_SELECTED;
ResourceBarDisplayMode = RB_SELECTED;
ModernBalance = false;
}
/*
** Is the game flagged for easy mode?
*/
unsigned IsEasy:1;
/*
** Is the game flagged for difficult?
*/
unsigned IsDifficult:1;
/*
** Controls the speedy build option -- used for testing.
*/
unsigned IsSpeedBuild:1;
/*
** If the player can build the helipad separate from the helipad and
** helicopter combo, then this flag will be true.
*/
unsigned IsSeparate:1;
/*
** If the defender has the advantage then this will be true. This flag
** allows the defender to have a better advantage in combat than the
** attacker. Moving units will not be able to dish out or take as much
** damage when this flag is true.
*/
unsigned IsDefenderAdvantage:1;
/*
** If civilian structures are to have a name, then this flag will be
** set to true. The default case is to just use generic names for
** civilians.
*/
unsigned IsNamed:1;
/*
** If from install, then play the special installation movie and
** skip asking them what type of game they want to play.
*/
unsigned IsFromInstall:1;
/*
** If capture the flag mode is on, this flag will be true. With this
** flag enabled, then the flag is initially placed at the start of
** the scenario.
*/
unsigned IsCaptureTheFlag:1;
/*
** Is target selecting by other human opponents visible to the player?
*/
unsigned IsVisibleTarget:1;
/*
** If human generated sound effects are to be used, then this
** flag will be true.
*/
unsigned IsJuvenile:1;
/*
** If friendly units should return fire when fired upon, set this
** flag to true. The default is only for the enemy units to do this.
*/
unsigned IsSmartDefense:1;
/*
** If targeting of trees is allowed, then this flag will be true.
*/
unsigned IsTreeTarget:1;
/*
** If this flag is true, then the construction yard can undeploy back into an MCV.
*/
unsigned IsMCVDeploy:1;
/*
** Controls whether or not visceroids spawn
*/
unsigned IsVisceroids:1;
/*
** If the monochrome debugging output is enabled, then this flag will be true.
*/
unsigned IsMonoEnabled:1;
/*
** This flags controls whether weapons are inert. An inert weapon doesn't do any
** damage. Effectively, if this is true, then the units never die.
*/
unsigned IsInert:1;
/*
** When this flag is true, the computer findpath algorithm reveals the route being
** examined. This is used to trace findpath bugs.
*/
unsigned IsShowPath:1;
/*
** If wheeled vehicles should do a 3-point turn when rotating in place, then
** this flag is true.
*/
unsigned IsThreePoint:1;
/*
** If Tiberium is allowed to grow, then this flag will be true.
*/
unsigned IsTGrowth:1;
/*
** If Tiberium is allowed to spread, then this flag will be true.
*/
unsigned IsTSpread:1;
/*
** This controls whether Tiberium grows&spreads quickly or not.
*/
unsigned IsTFast:1;
/*
** This flag controls whether the road additional pieces are added to
** the bottom of buildings. If true, then the roads are NOT added.
*/
unsigned IsRoad:1;
/*
** Controls whether units (especially infantry) will scatter when there
** is an immediate threat. This gives infantry a "mind of their own" when
** it comes to self preservation. If set to false, then units will not
** scatter.
*/
unsigned IsScatter:1;
/*
** Special bonus scenario enabled.
*/
unsigned IsJurassic:1;
/*
** Are score variations allowed?
*/
unsigned IsVariation:1;
/*
** If the gross human splatter marks should be present.
*/
unsigned IsGross:1;
/*
** Disables scrolling over the "options" and "sidebar" tabs.
*/
unsigned IsScrollMod:1;
/*
** Flag that we were spawned from WChat.
*/
unsigned IsFromWChat:1;
/*
** New anti-griefing early win mode. ST - 1/31/2020 3:42PM
*/
unsigned IsEarlyWin:1;
/*
** Health bar display mode
*/
enum eHealthBarDisplayMode
{
HB_DAMAGED = 0,
HB_ALWAYS,
HB_SELECTED
} HealthBarDisplayMode;
/*
** Resource bar display mode
*/
enum eResourceBarDisplayMode
{
RB_SELECTED = 0,
RB_ALWAYS,
} ResourceBarDisplayMode;
/*
** New modern balance setting.
*/
unsigned ModernBalance:1;
/*
** Some additional padding in case we need to add data to the class and maintain backwards compatibility for save/load
*/
// MBL 07.21.2020 - https://jaas.ea.com/browse/TDRA-7537
// Loading save files from Live and July Patch 3 Beta versions results in a crash
// Fixes issue from Change 738397 2020/07/17 14:06:03
//
// unsigned char SaveLoadPadding[127];
//
unsigned char SaveLoadPadding[124];
};
#endif