From 8a04d5fca93ba04b51e18ee99974764ca40cb23a Mon Sep 17 00:00:00 2001 From: Justin Marshall Date: Tue, 7 Jul 2020 13:53:42 -0700 Subject: [PATCH] Added first enviro prop building(restricted asset from Tiberian Sun). --- SCU01EA.INI | 7 +- code/redalert/bdata.cpp | 74 +- code/redalert/defines.h | 1 + code/redalert/function.h | 1 + code/redalert/type.h | 2 +- code/redalert/winstub.cpp | 15 + .../structures/ABAN04/aban04_0000.png | Bin 0 -> 23542 bytes .../structures/ABAN04/aban04_0001.png | Bin 0 -> 16003 bytes data/xml/tilesets/ra_structures.xml | 32 + rules.ini | 2983 +++++++++++++++++ 10 files changed, 3096 insertions(+), 19 deletions(-) create mode 100644 data/art/textures/srgb/red_alert/structures/ABAN04/aban04_0000.png create mode 100644 data/art/textures/srgb/red_alert/structures/ABAN04/aban04_0001.png create mode 100644 data/xml/tilesets/ra_structures.xml create mode 100644 rules.ini diff --git a/SCU01EA.INI b/SCU01EA.INI index 8deefc8..a0ea673 100644 --- a/SCU01EA.INI +++ b/SCU01EA.INI @@ -243,6 +243,11 @@ Height=51 15=USSR,TSLA,256,6967,0,None,0,0 16=USSR,TSLA,256,6455,0,None,0,0 17=USSR,TSLA,256,8503,0,None,0,0 +18=Spain,ABAN01,256,6958,0,None,1,0 +19=Spain,ABAN01,256,5934,0,None,1,0 +20=Spain,ABAN01,256,8238,0,None,1,0 +21=Spain,ABAN01,256,8232,0,None,1,0 +22=Spain,ABAN01,256,5294,0,None,1,0 [Base] Player=USSR @@ -258,5 +263,5 @@ Count=0 4=lesson. [Digest] -1=HGaGc9BMP2GKbQj3Rdp7tS0y1yo= +1=7835Am9csNI1jFgHaaJZovKwZmk= diff --git a/code/redalert/bdata.cpp b/code/redalert/bdata.cpp index d469bd9..ffeddc7 100644 --- a/code/redalert/bdata.cpp +++ b/code/redalert/bdata.cpp @@ -2458,6 +2458,37 @@ static BuildingTypeClass const ClassV37( (short const *)ListWestwood, // OCCUPYLIST: List of active foundation squares. (short const *)OListWestwood // OVERLAPLIST:List of overlap cell offset. ); + +static BuildingTypeClass const ClassAban01( + STRUCT_ABAN01, + TXT_CIV37, // NAME: Short name of the structure. + "ABAN01", // NAME: Short name of the structure. + FACING_NONE, // Foundation direction from center of building. + XYP_COORD(0, 0), // Exit point for produced units. + REMAP_ALTERNATE, // Sidebar remap logic. + 0x0000, // Vertical offset. + 0x0000, // Primary weapon offset along turret centerline. + 0x0000, // Primary weapon lateral offset along turret centerline. + false, // Is this building a fake (decoy?) + true, // Animation rate is regulated for constant speed? + true, // Always use the given name for the building? + false, // Is this a wall type structure? + true, // Simple (one frame) damage imagery? + false, // Is it invisible to radar? + true, // Can the player select this? + true, // Is this a legal target for attack or move? + false, // Is this an insignificant building? + false, // Theater specific graphic image? + false, // Does it have a rotating turret? + false, // Can the building be color remapped to indicate owner? + RTTI_NONE, // The object type produced at this factory. + DIR_N, // Starting idle frame to match construction. + BSIZE_42, // SIZE: Building size. + NULL, // Preferred exit cell list. + (short const*)ListWestwood, // OCCUPYLIST: List of active foundation squares. + (short const*)OListWestwood // OVERLAPLIST:List of overlap cell offset. +); + static BuildingTypeClass const ClassMission( STRUCT_MISSION, TXT_CIVMISS, // NAME: Short name of the structure. @@ -3024,6 +3055,8 @@ void BuildingTypeClass::Init_Heap(void) new BuildingTypeClass(ClassBarrel); // STRUCT_BARREL new BuildingTypeClass(ClassBarrel3); // STRUCT_BARREL3 + new BuildingTypeClass(ClassAban01); + #ifdef FIXIT_ANTS new BuildingTypeClass(ClassQueen); // STRUCT_QUEEN new BuildingTypeClass(ClassLarva1); // STRUCT_LARVA1 @@ -3035,18 +3068,19 @@ void BuildingTypeClass::Init_Heap(void) #endif } -Image_t* BuildingTypeClass::LoadHDImage(const char* fullname, int& numHDShapes) { +Image_t* BuildingTypeClass::LoadHDImage(const char* fullname, int& numHDShapes, bool remapHouse) { const char* imageFileName = Buildings_FindHDTexture(fullname, 0, 0); Image_t* image = NULL; numHDShapes = -1; if (imageFileName) { - image = Image_LoadImage(imageFileName, true, true); + image = Image_LoadImage(imageFileName, remapHouse, remapHouse); int numBuildingAnims = Buildings_GetNumFramesForTile(fullname, 0); int shapeId = 1; // Load the old school animation pipeline. + if(remapHouse) { while (true) { imageFileName = Buildings_FindHDTexture(fullname, shapeId, 0); @@ -3063,9 +3097,15 @@ Image_t* BuildingTypeClass::LoadHDImage(const char* fullname, int& numHDShapes) if (numBuildingAnims > 0) { for (int i = 1; i < numBuildingAnims; i++) { - imageFileName = Buildings_FindHDTexture(fullname, 0, i); - for (int d = 0; d < MAX_MPLAYER_COLORS; d++) { - Image_Add32BitImage(imageFileName, image, d, 0, i); + if(!remapHouse) { + imageFileName = Buildings_FindHDTexture(fullname, 0, i); + Image_Add32BitImage(imageFileName, image, -1, i, 0); + } + else { + imageFileName = Buildings_FindHDTexture(fullname, 0, i); + for (int d = 0; d < MAX_MPLAYER_COLORS; d++) { + Image_Add32BitImage(imageFileName, image, d, i, 0); + } } } } @@ -3184,18 +3224,18 @@ void BuildingTypeClass::One_Time(void) */ _makepath(fullname, NULL, NULL, building.Graphic_Name(), ".SHP"); ((void const *&)building.ImageData) = MFCD::Retrieve(fullname); - ((void const*&)building.HDImageData) = LoadHDImage(fullname, numhdimages); + ((void const*&)building.HDImageData) = LoadHDImage(fullname, numhdimages, building.IsRemappable); - if (building.ImageData != NULL && building.HDImageData != NULL) { - int width = Get_Build_Frame_Width(building.ImageData); - int height = Get_Build_Frame_Height(building.ImageData); - - for (int d = 0; d < numhdimages; d++) - { - building.HDImageData->renderwidth[d] = width; - building.HDImageData->renderheight[d] = height; - } - } + //if (building.ImageData != NULL && building.HDImageData != NULL) { + // int width = Get_Build_Frame_Width(building.ImageData); + // int height = Get_Build_Frame_Height(building.ImageData); + // + // for (int d = 0; d < numhdimages; d++) + // { + // building.HDImageData->renderwidth[d] = width; + // building.HDImageData->renderheight[d] = height; + // } + //} } int specialNumHDImages = 0; @@ -3204,7 +3244,7 @@ void BuildingTypeClass::One_Time(void) char fullname[_MAX_FNAME+_MAX_EXT]; _makepath(fullname, NULL, NULL, (char const *)"WEAP2",".SHP"); WarFactoryOverlay = MFCD::Retrieve(fullname); - WarFactoryHDOverlay = LoadHDImage(fullname, specialNumHDImages); + WarFactoryHDOverlay = LoadHDImage(fullname, specialNumHDImages, false); if (WarFactoryOverlay != NULL && WarFactoryHDOverlay != NULL) { int width = Get_Build_Frame_Width(WarFactoryOverlay); int height = Get_Build_Frame_Height(WarFactoryOverlay); diff --git a/code/redalert/defines.h b/code/redalert/defines.h index b56ec84..75ced16 100644 --- a/code/redalert/defines.h +++ b/code/redalert/defines.h @@ -1465,6 +1465,7 @@ typedef enum StructType : char { STRUCT_V37, STRUCT_BARREL, STRUCT_BARREL3, + STRUCT_ABAN01, #ifdef FIXIT_ANTS STRUCT_QUEEN, diff --git a/code/redalert/function.h b/code/redalert/function.h index 404ec78..e4cbacf 100644 --- a/code/redalert/function.h +++ b/code/redalert/function.h @@ -718,6 +718,7 @@ long __cdecl Buffer_Frame_To_Page(int shapeNum, int x, int y, int w, int h, Imag */ INT_PTR Build_Frame(void const *dataptr, unsigned short framenumber, void *buffptr); unsigned short Get_Build_Frame_Count(void const *dataptr); +bool Get_Build_TiberianSun_Format(void const* dataptr); unsigned short Get_Build_Frame_X(void const *dataptr); unsigned short Get_Build_Frame_Y(void const *dataptr); unsigned short Get_Build_Frame_Width(void const *dataptr); diff --git a/code/redalert/type.h b/code/redalert/type.h index ff20c13..93c128b 100644 --- a/code/redalert/type.h +++ b/code/redalert/type.h @@ -841,7 +841,7 @@ class BuildingTypeClass : public TechnoTypeClass { void const * BuildupData; void Init_Anim(BStateType state, int start, int count, int rate) const; - static Image_t* LoadHDImage(const char* fullname, int &numHDShapes); + static Image_t* LoadHDImage(const char* fullname, int &numHDShapes, bool remapHouse); }; diff --git a/code/redalert/winstub.cpp b/code/redalert/winstub.cpp index 04669f9..844c4a8 100644 --- a/code/redalert/winstub.cpp +++ b/code/redalert/winstub.cpp @@ -222,6 +222,21 @@ static bool Image_loadHDImage(Image_t *image, const char* name, int houseid, int if (Data[(i * 4) + 2] == 0 && Data[(i * 4) + 1] == 0 && Data[(i * 4) + 0] == 117) { Data[(i * 4) + 3] = 0; } + + if (Data[(i * 4) + 2] == 117 && Data[(i * 4) + 1] == 0 && Data[(i * 4) + 0]) { + Data[(i * 4) + 3] = 0; + } + } + } + else if (Bpp == 3) { + for (int i = 0; i < Width * Height; i++) { + byte b = Data[(i * 3) + 2]; + Data[(i * 3) + 2] = Data[(i * 4) + 0]; + Data[(i * 3) + 0] = b; + + if (Data[(i * 3) + 2] == 0 && Data[(i * 3) + 1] == 0 && Data[(i * 3) + 0] == 117) { + Data[(i * 3) + 3] = 0; + } } } diff --git a/data/art/textures/srgb/red_alert/structures/ABAN04/aban04_0000.png b/data/art/textures/srgb/red_alert/structures/ABAN04/aban04_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..cf483ca1650f31c4b63b46bac460420b932bfdae GIT binary patch literal 23542 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�j8e^EyETe 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 Vt7OFSVQ!PTwbb?1Y9Y^K{s)AxVIu$l literal 0 HcmV?d00001 diff --git a/data/art/textures/srgb/red_alert/structures/ABAN04/aban04_0001.png b/data/art/textures/srgb/red_alert/structures/ABAN04/aban04_0001.png new file mode 100644 index 0000000000000000000000000000000000000000..b66cd0b117afba831a2d61f71103ce65e1fe8346 GIT binary patch literal 16003 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 literal 0 HcmV?d00001 diff --git a/data/xml/tilesets/ra_structures.xml b/data/xml/tilesets/ra_structures.xml new file mode 100644 index 0000000..d6a4e95 --- /dev/null +++ b/data/xml/tilesets/ra_structures.xml @@ -0,0 +1,32 @@ + + + + Red_Alert\Structures + + + + ABAN01 + 0 + + + + ABAN04/aban04_0000.png + ABAN04/aban04_0000.png + + + + + + ABAN01 + 1 + + + + ABAN04/aban04_0000.png + ABAN04/aban04_0000.png + + + + + + \ No newline at end of file diff --git a/rules.ini b/rules.ini new file mode 100644 index 0000000..e34ff16 --- /dev/null +++ b/rules.ini @@ -0,0 +1,2983 @@ +; RULES.INI +; If placed in game directory, it will override built in values. Values to be used as multipliers +; or percentages can be specified as either a simple floating point number (embed ".") or as a +; conventional percentage number (append "%"). Values used as cell distances or time delays +; are specified as simple floating point number. Distance values are expressed in cells. Time +; values are expressed in minutes. + +[General] + +; crates +CrateMinimum=1 ; crates are normally one per human player but never below this number +CrateMaximum=255 ; crates can never exceed this quantity +CrateRadius=3.0 ; radius (cells) for area effect crate powerup bonuses +CrateRegen=3 ; average minutes between random powerup crate regeneration +UnitCrateType=none ; specifies specific unit type for unit type crate ['none' means pick randomly] +WaterCrateChance=20% ; chance that a water crate will be generated rather than land crate [multiplay only] +SoloCrateMoney=2000 ; money to give for money crate in solo play missions +SilverCrate=HealBase ; solo play silver crate bonus +WaterCrate=Money ; solo play water crate bonus +WoodCrate=Money ; solo play wood crate bonus + +; special weapons +ChronoDuration=3 ; time that a unit will remain chronoshifted before returning to start location +ChronoKillCargo=yes ; Should cargo be destroyed when object is chronoshifted? +ChronoTechLevel=12 ; Tech level at which Chrono facility can create Chrono effect +GPSTechLevel=8 ; tech level at which GPS satelite becomes available +GapRadius=10 ; radius of gap generator (cells) +GapRegenInterval=.1 ; gap generators will regenerate their shroud at this time interval +IronCurtain=.75 ; minutes that Iron Curtain invulnerability lasts +ParaTech=5 ; tech level when free para-infantry appears from airstrip +ParabombTech=8 ; tech level that parabomb appears free with airfield +RadarJamRadius=15 ; cell radius distance that mobile radar jammer is effective +SpyPlaneTech=5 ; tech level when free spy plane appears from airstrip +BadgerBombCount=1 ; number of badgers used to drop parabombs + +; Chrono side effects +QuakeChance=20% ; percentage chance time quake will occur with each chronoshift use +QuakeDamage=33% ; percentage damage to inflict when time quake occurs +VortexChance=20% ; percent chance that chronal vortex occurs with each chronoshift use +VortexDamage=200 ; damage inflicted by vortex discharge +VortexRange=10 ; scan for victims up to this distance away [in cells] +VortexSpeed=10 ; speed of vortex movement + +; repair and refit +RefundPercent=50% ; percent of original cost to refund when building/unit is sold +ReloadRate=.04 ; minutes to reload each ammo point for aircraft or helicopters +RepairPercent=20% ; percent cost to fully repair as ratio of full cost +RepairRate=.016 ; minutes between applying repair step +RepairStep=7 ; hit points to heal per repair 'tick' for buildings +URepairPercent=20% ; [units only] percent cost to fully repair as ratio of full cost +URepairStep=10 ; [units only] hit points to heal per repair 'tick' for units + +; combat and damage +TurboBoost=1.5 ; speed multiplier for turbo-boosted weapons when firing upon aircraft +APMineDamage=1000 ; damage to inflict when anti-personnel mine explodes +AVMineDamage=1200 ; damage to inflict when anti-vehicle mine explodes +AtomDamage=1000 ; damage points when nuclear bomb explodes (regardless of source) +BallisticScatter=1.0 ; maximum scatter distance (cells) for inaccurate ballistic projectiles +BridgeStrength=1000 ; strength of bridge [smaller means more easily destroyed] +C4Delay=.03 ; minutes to delay after placing C4 before building will explode +Crush=1.5 ; if this close (cells) to crushable target, then crush instead of firing upon it (computer only) +ExpSpread=.3 ; cell damage spread per 256 damage points for exploding object types [if Explodes=yes] +FireSupress=1 ; radius from target to look for friendlies and thus discourage firing upon, if found +HomingScatter=2.0 ; maximum scatter distance (cells) for inaccurate homing projectiles +MaxDamage=1000 ; maximum damage (after adjustments) per shot +MinDamage=1 ; minimum damage (after adjustments) per shot +OreExplosive=no ; Does the harvester explode big time when destroyed? +PlayerAutoCrush=no ; Will player controlled units automatically try to crush enemy infantry? +PlayerReturnFire=no ; More aggressive return fire from player controlled objects? +PlayerScatter=no ; Will player units scatter, of their own accord, from threats and damage? +ProneDamage=50% ; when infantry is prone, damage is reduced to this percentage +TreeTargeting=no ; Automatically show target cursor when over trees? +Incoming=10 ; If an incoming projectile is as slow or slower than this, then + ; object in the target location will try to run away. Grenades and + ; parachute bombs have this characteristic. + +; income and production +BailCount=28 ; number of 'bails' carried by a harvester +BuildSpeed=.8 ; general build speed [time (in minutes) to produce a 1000 credit cost item] +BuildupTime=.06 ; average minutes that building build-up animation runs +GemValue=50 ; gem credits per 'bail' carried by a harvester +GoldValue=25 ; gold credits per 'bail' carried by a harvester +GrowthRate=2 ; minutes between ore (Tiberium) growth +OreGrows=yes ; Does ore grow denser over time? +OreSpreads=yes ; Does ore spread into adjacent areas? +OreTruckRate=1 ; speed that harvester truck manages ore [larger means slower] +SeparateAircraft=no ; Is first helicopter to be purchased separately from helipad? +SurvivorRate=.4 ; fraction of building cost to be converted to survivors when sold + +; audio/visual map controls +AllyReveal=yes ; Allies automatically reveal radar maps to each other? +ConditionRed=25% ; when damaged to this percentage, health bar turns red +ConditionYellow=50% ; when damaged to this percentage, health bar turns yellow +DropZoneRadius=4 ; distance around drop zone flair that map reveals itself +EnemyHealth=yes ; Show enemy health bar graph when selected? +Gravity=3 ; gravity constant for ballistic projectiles +IdleActionFrequency=.1 ; average minutes between infantry performing idle actions +MessageDelay=.6 ; time duration of multiplayer messages displayed over map +MovieTime=.06 ; minutes that movie recorder will record when activated (debug version only) +NamedCivilians=no ; Show true names over civilians and civilian buildings? +SavourDelay=.03 ; delay between scenario end and ending movie [keep the delay short] +ShroudRate=4 ; minutes between each shroud creep process [0 means no shadow creep] +SpeakDelay=2 ; minutes between EVA repeating advice to the player +TimerWarning=2 ; if mission timer is less than this many minutes, then display in red +FlashLowPower=yes ; Flash the power bar when power is low? + +; computer and movement controls +CurleyShuffle=no ; Should helicopter shuffle position between shots (as in C&C)? +BaseBias=2 ; multiplier to threat target value when enemy is close to friendly base +BaseDefenseDelay=.25 ; minutes delay between sending response teams to deal with base threat +CloseEnough=2.75 ; If distance to destination less than this, then abort movement if otherwise blocked. +DamageDelay=1 ; minutes between applying trivial structure damage when low on power +GameSpeeBias=1 ; multiplier to overall game object movement speed +LZScanRadius=16 ; maximum radius to scan for alternate landing zone if otherwise occupied +MineAware=yes ; Are friendly units smart enough to avoid friendly mines? +Stray=2.0 ; radius distance (cells) that team members may stray without causing regroup action +SubmergeDelay=.02 ; forced delay that subs will remain on surface before allowing to submerge +SuspendDelay=2 ; minutes that suspended teams will remain suspended +SuspendPriority=20 ; teams with less than this priority will suspend during base defense ops +TeamDelay=.6 ; interval between checking for and creating teams + +; misc +FineDiffControl=no ; Allow 5 difficulty settings instead of only 3 settings? +MCVUndeploy=no ; Allow construction yard to undeploy back into MCV? + + +; ******* Theme Controls ******* +; Controls when each theme becomes available in solo play. Each +; theme identifier is given a scenario and owner. The theme will +; become available at that scenario or later and for the specified +; owner only. If no owner is specified, it is presumed to be available +; for all sides. +[ThemeControl] +BIGF226M=1,Soviet +CRUS226M=1,Allies +FAC1226M=1,Soviet +HELL226M=1 +FAC2226M=2,Soviet +RUN1226M=2,Soviet +TREN226M=3,Soviet +WORK226M=3,Allies +AWAIT=4 +DENSE_R=5,Soviet +FOGGER1A=5,Allies +MUD1A=6 +RADIO2=7,Soviet +ROLLOUT=7,Allies +SNAKE=8 +TERMINAT=9,Soviet +TWIN=9,Allies +VECTOR1A=10 +SMSH226M=11 + + +; ******* Multiplayer Settings ******* +; These are the multiplayer dialog default settings. Does not apply to +; Westwood chat, only to the in-game dialogs. +[MultiplayerDefaults] +Money=10000 +MaxMoney=10000 +ShadowGrow=no +Bases=yes +OreGrows=yes +Crates=yes +AIPlayers=no +CaptureTheFlag=no + + +; ******* Special weapon charge times ******* +; The time (minutes) for recharge of these special weapons. +[Recharge] +Chrono=7 ; chronosphere +GPS=8 ; satellite radar +IronCurtain=11 ; invulnerability device +Nuke=13 ; nuclear missile +ParaBomb=14 ; parachute bombs +Paratrooper=7 ; paratroopers +Saboteur=14 ; para-saboteur +Sonar=10 ; sonar pulse +SpyPlane=3 ; recon mission + + +; ******* Object Heap Maximums ******* +; These are the absolute maximum number of these object types +; allowed in the game (at any one time). +[Maximums] +Players=8 ; ipx layer limits this to 8 maximum +Aircraft=100 +Anim=100 +Building=500 +Bullet=50 +Factory=32 ; 32 is minimum for 8 player game +Infantry=500 +Overlay=1 ; special case -- only needs one +Projectile=20 ; projectile types, not actual projectiles +Smudge=1 ; special case -- only needs one +Team=60 +TeamType=60 +Template=1 ; special case -- only needs one +Terrain=500 ; trees and rocks +TrigType=80 ; trigger types +Trigger=200 ; triggers themselves +Unit=500 +Vessel=100 +Warhead=10 ; warhead types, not actual warheads +Weapon=55 ; weapon types, not actual weapons + + +; ******* AI Controls ******* +; Computer Skirmish-Mode behavior controls. The ratio values are based on the +; number of buildings in the computer base that should be of the type specified. +; The ratio total should exceed 100% so that the base will always try to grow as +; it vainly attempts to achieve the specified percentage composition. + +; Take note: The computer AI in Red Alert is merely a warmed over version +; of the AI experiment I wrote during the unallocated time in the month +; following C&C's release. It was more than adequate at that time (even +; difficult to beat), but since Red Alert is a very different game, the skirmish +; mode AI is somewhat under-effective. In order to improve the AI +; over this initial experiment, the following controls are provided. It might +; be possible to manipulate these values to achieve a greater challenge when +; playing the computer opponent. +[AI] +AttackInterval=3 ; average delay between computer attacks +AttackDelay=5 ; average delay time before computer begins first attack +PatrolScan=.016 ; minute interval between scanning for enemys while patrolling. +CreditReserve=100 ; Structure repair will not begin if available cash falls below this amount. +PathDelay=.01 ; Delay (minutes) between retrying when path is blocked. +OreNearScan=6 ; cell radius to scan when harvesting a single patch of ore +OreFarScan=48 ; cells radius to scan when looking for a new ore patch to harvest +AutocreateTime=5 ; average minutes between creating an 'autocreate' team +InfantryReserve=3000 ; always build infantry if cash reserve is greater than this +InfantryBaseMult=1 ; build infantry if building count times this number is less than current infantry quantity +PowerSurplus=50 ; build power plants until power surplus is at least this amount +BaseSizeAdd=3 ; computer base size can be no larger than the largest human opponent, plus this quantity +RefineryRatio=.16 ; ratio of base that should be composed of refineries +RefineryLimit=4 ; never build more than this many refineries +BarracksRatio=.16 ; ratio of base that should be composed of barracks +BarracksLimit=2 ; never build more than this many barracks +WarRatio=.1 ; ratio of base that should be composed of war factories +WarLimit=2 ; never build more than this many war factories +DefenseRatio=.4 ; ratio of base that should be defensive structures +DefenseLimit=40 ; maximum number of defensive buildings to build +AARatio=.14 ; ratio of base that should be anti-aircraft defense +AALimit=10 ; maximum number of anti-aircraft buildings to build +TeslaRatio=.16 ; ratio of base that should be telsa coils +TeslaLimit=10 ; maximum number of tesla coils to build +HelipadRatio=.12 ; ratio of base that should be composed of helipads +HelipadLimit=5 ; maximum number of helipads to build +AirstripRatio=.12 ; ratio of base that should be composed of airstrips +AirstripLimit=5 ; maximum number of airstrips to build +CompEasyBonus=yes ; When more than one human in game, computer player goes to "easy" mode? +Paranoid=yes ; Will computer players ally with each other if the situation looks bleak? +PowerEmergency=75% ; sell buildings to raise power level if it falls below this percentage + + +; ******* IQ setting for computer activity ******* +; Each player (computer controlled or otherwise) is given an IQ rating that is used +; to control what the computer is allowed to automatically control. This is +; distinct from the difficulty setting. The higher the IQ setting, the more autonomous +; and intelligent the side will behave. Each ability is given a rating that +; indicates the IQ level (or above) that the ability will be granted. Because such +; abilities are automatically performed by the computer, giving a human controlled +; country a high IQ is not recommended. Otherwise the player's units will start to +; automatically "do their own thing"! A human controlled country is presumed to have +; an IQ rating of zero. A computer controlled country has an IQ of 1 or higher. +; When in skirmish mode or when multiplayer AIs are active, the computer IQ is set to +; the maximum. +[IQ] +MaxIQLevels=5 ; the maximum number of discrete IQ levels +SuperWeapons=4 ; super weapons are automatically fired by computer +Production=5 ; building/unit production is automatically controlled by computer +GuardArea=4 ; newly produced units start in guard area mode +RepairSell=1 ; allowed to choose repair or sell of damaged buildings +AutoCrush=2 ; automatically try to crush antogonists if possible +Scatter=3 ; will scatter from incoming threats [grenades and such] +ContentScan=4 ; will consider contents of transport when picking good target +Aircraft=4 ; automatically replace aircraft or helicopters +Harvester=2 ; automatically replace lost harvesters +SellBack=2 ; allowed to sell buildings + + +; ******* Country Statistics ******* +; Certain countries have special adjustments to their unit and building +; values. These are global values that affect ALL units and buildings owned +; by that country. This applies only to multiplayer games and skirmish mode. In +; normal game play, all values are "1.0". + +; Airspeed = multiplier to speed for all air units [larger means faster] (def=1.0) +; Armor = multiplier to armor strength for all units and buildings [larger means stronger] (def=1.0) +; Cost = multiplier to cost for all units and buildings [larger means costlier] (def=1.0) +; Firepower = multiplier to firepower for all weapons [larger means more damage] (def=1.0) +; Groundspeed = multiplier to speed for all ground units [larger means faster] (def=1.0) +; ROF = multiplier to Rate Of Fire for all weapons [larger means slower ROF] (def=1.0) +; BuildTime = multiplier to general object build time [larger means longer to build] (def=1.0) + +[England] +Firepower=1.0 +Groundspeed=1.0 +Airspeed=1.0 +Armor=1.1 +ROF=1.0 +Cost=1.0 +BuildTime=1.0 + +[Germany] +Firepower=1.1 +Groundspeed=1.0 +Airspeed=1.0 +Armor=1.0 +ROF=1.0 +Cost=1.0 +BuildTime=1.0 + +[France] +Firepower=1.0 +Groundspeed=1.0 +Airspeed=1.0 +Armor=1.0 +ROF=1.1 +Cost=1.0 +BuildTime=1.0 + +[Ukraine] +Firepower=1.0 +Groundspeed=1.1 +Airspeed=1.0 +Armor=1.0 +ROF=1.0 +Cost=1.0 +BuildTime=1.0 + +[USSR] +Firepower=1.0 +Groundspeed=1.0 +Airspeed=1.0 +Armor=1.0 +ROF=1.0 +Cost=0.9 +BuildTime=1.0 + +[Greece] +Firepower=1.0 +Groundspeed=1.0 +Airspeed=1.0 +Armor=1.0 +ROF=1.0 +Cost=1.0 +BuildTime=1.0 + +[Turkey] +Firepower=1.0 +Groundspeed=1.0 +Airspeed=1.0 +Armor=1.0 +ROF=1.0 +Cost=1.0 +BuildTime=1.0 + +[Spain] +Firepower=1.0 +Groundspeed=1.0 +Airspeed=1.0 +Armor=1.0 +ROF=1.0 +Cost=1.0 +BuildTime=1.0 + + +; ******* Difficulty Settings ******* +; Game difficulty is controlled by these factors. Some of these factors will +; only affect a computer player. The computer and the player are handicapped by +; individual settings. Thus the computer may be playing at 'difficult' level while the +; player may be playing at 'easy' level. + +; Airspeed = multiplier to speed for all air units (def=1.0) +; Armor = multiplier to armor strength for all units and buildings (def=1.0) +; Cost = multiplier to cost for all units and buildings (def=1.0) +; Firepower = multiplier to firepower for all weapons (def=1.0) +; Groundspeed = multiplier to speed for all ground units (def=1.0) +; ROF = multiplier to Rate Of Fire for all weapons [larger means slower ROF] (def=1.0) +; BuildSlowdown = Should the computer build slower than the player (def=no)? +; <<< affects the computer player, not the human player >>> +; ContentScan = Should the contents of a transport be considered when picking best target (def=no)? +; RepairDelay = average delay (minutes) between initiating building repair +; BuildDelay = average delay (minutes) between initiating construction +; DestroyWalls = Allow scanning for nearby enemy walls and destroy them (def=yes)? + +[Easy] +Firepower=1.2 +Groundspeed=1.2 +Airspeed=1.2 +BuildTime=.8 +Armor=1.2 +ROF=.8 +Cost=.8 +RepairDelay=.001 +BuildDelay=.001 +DestroyWalls=yes +ContentScan=yes + +[Normal] +Firepower=1.0 +Groundspeed=1.0 +Airspeed=1.0 +BuildTime=1 +Armor=1.0 +ROF=1.0 +Cost=1.0 +RepairDelay=.02 +BuildDelay=.03 +BuildSlowdown=yes +DestroyWalls=yes +ContentScan=yes + +[Difficult] +Firepower=.8 +Groundspeed=.8 +Airspeed=.8 +BuildTime=1.0 +Armor=.8 +ROF=1.2 +Cost=1.0 +RepairDelay=.05 +BuildDelay=.1 +BuildSlowdown=yes +DestroyWalls=no + + +; ******* Unit Statistics ******* +; Specifies the characteristics of the various game objects. + +; Ammo = number of rounds carried between reloads [-1 means unlimited] (def=-1) +; Armor = the armor type of this object [none,wood,light,heavy,concrete] (def=none) +; Cloakable = Is it equipped with a cloaking device (def=no)? +; Cost = cost to build object (in credits) +; Explodes = Does it explode violently when destroyed [i.e., does it do collateral damage] (def=no)? +; GuardRange = distance to scan for enemies to attack (def=use weapon range) +; Image = name of graphic data to use for this object (def=same as object identifier) +; Invisible = Is completely and always invisible to enemy (def=no)? +; Owner = who can build this [Allies or Soviet] (def="allies,soviet", i.e., all) +; Points = point value for scoring purposes (def=0) +; Prerequisite = list of buildings needed before this can be manufactured (def=no requirement) +; Primary = primary weapon equipped with (def=none) +; Secondary = secondary weapon equipped with (def=none) +; ROT = Rate Of Turn for body (if present) and turret (if present) (def=0) +; Reload = time delay between reloads (def=0) +; SelfHealing = Does the object heal automatically up to half strength (def=no)? +; Sight = sight range, in cells (def=1) +; Strength = strength (hit points) of this object +; TechLevel = tech level required to build this [-1 means can't build] (def=-1) +; Sensors = Has sensors to detect nearby cloaked objects (def=no)? +; DoubleOwned = Can be built/owned by all countries in a multiplayer game (def=no)? +; <<< applies only to infantry types >>> +; C4 = Equipped with building sabotage explosives [presumes Infiltrate is true] (def=no)? +; Fraidycat = Is it inherently afraid and will panic easily (def=no)? +; Infiltrate = Can it enter a building like a spy or thief (def=no)? +; IsCanine = Should special case dog logic be applied to this? +; <<< applies only to moving units (not buildings) >>> +; Passengers = number of passengers it may carry (def=0) +; Speed = speed of this object [n/a for buildings] (def=0) +; <<< applies only to terrestrial driving vehicle types >>> +; Crushable = Can it be crushed by a heavy tracked vehicle (def=no)? +; Tracked = Is this vehicle tracked [as opposed to wheeled] (def=no)? +; NoMovingFire = The vehicle must stop before it can fire (def=no)? +; <<< applies only to building types >>> +; BaseNormal = Considered for building adjacency checks (def=yes)? +; Adjacent = distance allowed to place from other buildings (def=1) +; Bib = Should the building have an attached bib (def=no)? +; Capturable = Can this building be infiltrated by a spy/engineer (def=no)? +; Crewed = Does it contain a crew that can escape (def=no)? +; Power = power output [positive for output, negative for drain] (def=0) +; Powered = Does it require power to function (def=no)? +; Repairable = Can it be repaired (def=yes)? +; Storage = the number of credits this building can store (def=0) +; Unsellable = Cannot sell this building (even if it can be built)? +; WaterBound = Is this building placed on water only (def=no)? + +; ******* terrestrial driving vehicle types ******* +; SCUD launcher +[V2RL] +Prerequisite=weap,dome +Primary=SCUD +Strength=150 +Armor=light +TechLevel=4 +Sight=5 +Speed=7 +Owner=soviet +Cost=700 +Points=40 +ROT=5 +Tracked=yes +Ammo=1 +Crewed=yes +NoMovingFire=yes + +; light tank +[1TNK] +Prerequisite=weap +Primary=75mm +Strength=300 +Armor=heavy +TechLevel=4 +Sight=4 +Speed=9 +Owner=allies +Cost=700 +Points=30 +ROT=5 +Tracked=yes +Crewed=yes + +; heavy tank +[3TNK] +Prerequisite=weap +Primary=105mm +Secondary=105mm +Strength=400 +Armor=heavy +TechLevel=4 +Sight=5 +Speed=7 +Owner=soviet +Cost=950 +Points=50 +ROT=5 +Tracked=yes +Crewed=yes + +; medium tank +[2TNK] +Prerequisite=weap +Primary=90mm +Strength=400 +Armor=heavy +TechLevel=6 +Sight=5 +Speed=8 +Owner=allies +Cost=800 +Points=40 +ROT=5 +Tracked=yes +Crewed=yes + +; Mammoth tank +[4TNK] +Prerequisite=weap,stek +Primary=120mm +Secondary=MammothTusk +Strength=600 +Armor=heavy +TechLevel=10 +Sight=6 +Speed=4 +Owner=soviet +Cost=1700 +Points=60 +ROT=5 +Tracked=yes +SelfHealing=yes +Crewed=yes + +; mobile radar jammer +[MRJ] +Prerequisite=weap,dome +Strength=110 +Armor=light +TechLevel=12 +Sight=7 +Speed=9 +Owner=allies +Cost=600 +Points=30 +ROT=5 +Tracked=yes +Crewed=yes + +; mobile gap generator +[MGG] +Prerequisite=weap,atek +Strength=110 +Armor=light +TechLevel=11 +Sight=4 +Speed=9 +Owner=allies +Cost=600 +Points=40 +ROT=5 +Crewed=yes + +; mobile artillery +[ARTY] +Prerequisite=weap +Primary=155mm +Strength=75 +Armor=light +TechLevel=8 +Sight=5 +Speed=6 +Owner=allies +Cost=600 +Points=35 +ROT=2 +Tracked=yes +Crewed=yes +NoMovingFire=yes + +; harvester +[HARV] +Prerequisite=weap,proc +Strength=600 +Armor=heavy +TechLevel=1 +Sight=4 +Speed=6 +Owner=allies,soviet +Cost=1400 +Points=55 +ROT=5 +Tracked=yes +Crewed=yes +SelfHealing=yes + +; Mobile Construction Vehicle +[MCV] +Prerequisite=weap,fix +Strength=600 +Armor=light +TechLevel=11 +Sight=4 +Speed=6 +Owner=allies,soviet +Cost=2500 +Points=60 +ROT=5 +Crewed=yes + +; Ranger (as in "Ford", not "W.W. II Commando") +[JEEP] +Prerequisite=weap +Primary=M60mg +Strength=150 +Armor=light +TechLevel=3 +Sight=6 +Speed=10 +Owner=allies +Cost=600 +Points=20 +ROT=10 +Crewed=yes + +; Armored Personnel Carrier +[APC] +Prerequisite=weap,tent +Primary=M60mg +Strength=200 +Armor=heavy +TechLevel=5 +Sight=5 +Speed=10 +Owner=allies +Cost=800 +Points=25 +ROT=5 +Tracked=yes +Passengers=5 + +; mine layer +[MNLY] +Prerequisite=weap,fix +Strength=100 +Armor=heavy +TechLevel=3 +Sight=5 +Speed=9 +Owner=allies,soviet +Cost=800 +Points=50 +ROT=5 +Tracked=yes +Ammo=5 ; number of mines carried +Crewed=yes + +; convoy truck +[TRUK] +Strength=110 +Armor=light +Owner=soviet,allies +TechLevel=-1 +Sight=3 +Speed=10 +Cost=500 +Points=5 +ROT=5 +Passengers=1 + +; ******* ship types ******* +; submarine +[SS] +Prerequisite=spen +Primary=TorpTube +Strength=120 +Armor=light +TechLevel=5 +Sight=6 +Speed=6 +Owner=soviet +Cost=950 +Points=45 +ROT=7 +Cloakable=yes + +; destroyer +[DD] +Prerequisite=syrd +Primary=Stinger +Secondary=DepthCharge +Strength=400 +Armor=heavy +TechLevel=7 +Sight=6 +Speed=6 +Owner=allies +Cost=1000 +Points=50 +ROT=7 +Sensors=Yes + +; cruiser +[CA] +Prerequisite=syrd,atek +Primary=8Inch +Secondary=8Inch +Strength=700 +Armor=heavy +TechLevel=10 +Sight=7 +Speed=4 +Owner=allies +Cost=2000 +Points=60 +ROT=5 +Sensors=Yes + +; transport +[LST] +Strength=350 +Armor=heavy +TechLevel=3 +Sight=6 +Speed=14 +Owner=allies,soviet +Cost=700 +Points=25 +ROT=10 +Passengers=5 + +; gun boat +[PT] +Prerequisite=syrd +Primary=2Inch +Secondary=DepthCharge +Strength=200 +Armor=heavy +TechLevel=5 +Sight=7 +Speed=9 +Owner=allies +Cost=500 +Points=30 +ROT=7 +Sensors=Yes + +; ******* infantry types ******* +; attack dog +[DOG] +Prerequisite=kenn +Primary=DogJaw +Strength=12 +;Strength=5 +Armor=none +TechLevel=3 +Sight=5 +Speed=4 +Owner=soviet +Cost=200 +Points=5 +IsCanine=yes +GuardRange=7 + +; rifle soldier +[E1] +Primary=M1Carbine +Strength=50 +Armor=none +TechLevel=1 +Sight=4 +Speed=4 +Owner=allies,soviet +Cost=100 +Points=5 + +; grenadier +[E2] +Primary=Grenade +Strength=50 +Armor=none +TechLevel=1 +Sight=4 +Speed=5 +Owner=soviet +Cost=160 +Points=10 +Explodes=yes + +; rocket soldier +[E3] +Primary=RedEye +Secondary=Dragon +Strength=45 +Armor=none +TechLevel=2 +Sight=4 +Speed=3 +Owner=allies +Cost=300 +Points=10 +DoubleOwned=yes + +; Flamethrower +[E4] +Prerequisite=stek +Primary=Flamer +Strength=40 +Armor=none +TechLevel=6 +Sight=4 +Speed=3 +Owner=soviet +Cost=300 +Points=15 +Explodes=yes + +; engineer +[E6] +Strength=25 +Armor=none +TechLevel=5 +Sight=4 +Speed=4 +Owner=soviet,allies +Cost=500 +Points=20 +Infiltrate=yes + +; spy +[SPY] +Prerequisite=dome +Strength=25 +Armor=none +TechLevel=6 +Sight=5 +Speed=4 +Owner=allies +Cost=500 +Points=15 +Infiltrate=yes + +; thief +[THF] +Prerequisite=atek +Strength=25 +Armor=none +TechLevel=11 +Sight=5 +Speed=4 +Owner=allies +Cost=500 +Points=10 +Infiltrate=yes + +; Tanya +[E7] +Prerequisite=atek +Primary=Colt45 +Secondary=Colt45 +Strength=100 +Armor=none +TechLevel=11 +Sight=6 +Speed=5 +Owner=allies,soviet +Cost=1200 +Points=25 +Infiltrate=yes +C4=yes +DoubleOwned=yes + +; field medic +[MEDI] +Primary=Heal +Strength=80 +Armor=none +TechLevel=2 +Sight=3 +Speed=4 +Owner=allies +Cost=800 +Points=15 + +; field marshal +[GNRL] +Primary=Pistol +Strength=80 +Armor=none +TechLevel=-1 +Sight=3 +Speed=5 +Owner=allies,soviet +Cost=0 +Points=15 +Infiltrate=yes + +; civilians +[C1] +Image=C1 +Primary=Pistol +Strength=25 +Armor=none +TechLevel=-1 +Sight=2 +Speed=5 +Owner=allies,soviet +Cost=10 +Points=1 +Ammo=10 +Fraidycat=yes + +[C2] +Image=C1 +Strength=25 +Armor=none +TechLevel=-1 +Sight=2 +Speed=5 +Owner=allies,soviet +Cost=10 +Points=1 +Fraidycat=yes + +[C3] +Image=C2 +Strength=25 +Armor=none +TechLevel=-1 +Sight=2 +Speed=5 +Owner=allies,soviet +Cost=10 +Points=1 +Fraidycat=yes + +[C4] +Image=C2 +Strength=25 +Armor=none +TechLevel=-1 +Sight=2 +Speed=5 +Owner=allies,soviet +Cost=10 +Points=1 +Fraidycat=yes + +[C5] +Image=C2 +Strength=25 +Armor=none +TechLevel=-1 +Sight=2 +Speed=5 +Owner=allies,soviet +Cost=10 +Points=1 +Fraidycat=yes + +[C6] +Image=C1 +Strength=25 +Armor=none +TechLevel=-1 +Sight=2 +Speed=5 +Owner=allies,soviet +Cost=10 +Points=1 +Fraidycat=yes + +[C7] +Image=C1 +Primary=Pistol +Strength=25 +Armor=none +TechLevel=-1 +Sight=2 +Speed=5 +Owner=allies,soviet +Cost=10 +Points=1 +Ammo=10 +Fraidycat=yes + +[C8] +Image=C1 +Strength=25 +Armor=none +TechLevel=-1 +Sight=2 +Speed=5 +Owner=allies,soviet +Cost=10 +Points=1 +Fraidycat=yes + +[C9] +Image=C1 +Strength=25 +Armor=none +TechLevel=-1 +Sight=2 +Speed=5 +Owner=allies,soviet +Cost=10 +Points=1 +Fraidycat=yes + +[C10] +Image=C1 +Strength=25 +Armor=none +TechLevel=-1 +Sight=2 +Speed=5 +Owner=allies,soviet +Cost=10 +Points=1 +Fraidycat=yes + +; professor Einstein +[EINSTEIN] +Strength=25 +Armor=none +TechLevel=-1 +Sight=2 +Speed=5 +Owner=allies +Cost=10 +Points=1 +Fraidycat=yes + +; special agent +[DELPHI] +Primary=Pistol +Strength=25 +Armor=none +TechLevel=-1 +Sight=2 +Speed=5 +Owner=allies,soviet +Cost=10 +Points=1 +Ammo=10 + +; special agent +[CHAN] +Strength=25 +Armor=none +TechLevel=-1 +Sight=2 +Speed=5 +Owner=allies,soviet +Cost=10 +Points=1 + +; ******* aircraft types ******* +; Badger bomber +[BADR] +Prerequisite=afld +Primary=ParaBomb +Strength=60 +Armor=light +TechLevel=-1 +Sight=0 +Speed=16 +Owner=soviet +Cost=10 +Points=20 +ROT=5 +Ammo=5 +Passengers=5 + +; spy photo-recon plane +[U2] +Prerequisite=afld +Primary=Camera +Strength=2000 +Armor=heavy +TechLevel=-1 +Sight=0 +Speed=40 +Owner=soviet +Cost=10 +Points=5 +ROT=7 +Ammo=1 ; snapshot film + +; jet attack plane +[MIG] +Prerequisite=afld +Primary=Maverick +Secondary=Maverick +Strength=50 +Armor=light +TechLevel=10 +Sight=0 +Speed=20 +Owner=soviet +Cost=1200 +Points=50 +ROT=5 +Ammo=3 +GuardRange=30 + +; prop attack plane +[YAK] +Prerequisite=afld +Primary=ChainGun +Secondary=ChainGun +Strength=60 +Armor=light +TechLevel=5 +Sight=0 +Speed=16 +Owner=soviet +Cost=800 +Points=25 +ROT=5 +Ammo=15 +Crewed=yes +GuardRange=30 + +; transport helicopter +[TRAN] +Prerequisite=hpad +Strength=90 +Armor=light +TechLevel=11 +Sight=0 +Speed=12 +Owner=soviet +Cost=1200 +Points=35 +ROT=5 +Passengers=5 + +; Longbow attack helicopter +[HELI] +Prerequisite=hpad +Primary=Hellfire +Secondary=Hellfire +Strength=225 +Armor=heavy +TechLevel=9 +Sight=0 +Speed=16 +Owner=allies +Cost=1200 +Points=50 +ROT=4 +Ammo=6 +Crewed=yes +GuardRange=30 + +; Hind attack helicopter +[HIND] +Prerequisite=hpad +Primary=ChainGun +Strength=225 +Armor=heavy +TechLevel=9 +Sight=0 +Speed=12 +Owner=soviet +Cost=1200 +Points=40 +ROT=4 +Ammo=12 +Crewed=yes +GuardRange=30 + +; ******* building types ******* +; Iron Curtain +[IRON] +Prerequisite=stek +Strength=400 +Armor=wood +TechLevel=12 +Sight=10 +Owner=soviet +Cost=2800 +Points=100 +Power=-200 +Powered=true +Capturable=true +Crewed=yes + +; forward command center +[FCOM] +Strength=400 +Armor=wood +TechLevel=-1 +Sight=10 +Owner=soviet +Cost=0 +Points=40 +Power=-200 +Bib=yes +Capturable=true +Crewed=yes + +; advanced tech center +[ATEK] +Prerequisite=weap,dome +Strength=400 +Armor=wood +TechLevel=10 +Sight=10 +Owner=allies +Cost=1500 +Points=85 +Power=-200 +Bib=yes +Capturable=true +Crewed=yes + +; paradox device +[PDOX] +Prerequisite=atek +Strength=400 +Armor=wood +TechLevel=12 +Sight=10 +Owner=allies +Cost=2800 +Points=100 +Power=-200 +Powered=true +Capturable=true +Crewed=yes + +; weapons factory +[WEAP] +Prerequisite=proc +Strength=1000 +Armor=light +TechLevel=3 +Sight=4 +Owner=soviet,allies +Cost=2000 +Points=80 +Power=-30 +Bib=yes +Capturable=true +Crewed=yes + +; ship yard +[SYRD] +Prerequisite=powr +Strength=1000 +Armor=light +TechLevel=3 +Sight=4 +Owner=allies +Cost=650 +Points=80 +Power=-30 +Adjacent=8 +WaterBound=yes +Capturable=true +BaseNormal=no + +; sub pen +[SPEN] +Prerequisite=powr +Strength=1000 +Armor=light +TechLevel=3 +Sight=4 +Owner=soviet +Cost=650 +Points=80 +Power=-30 +Adjacent=8 +WaterBound=yes +Capturable=true +BaseNormal=no + +; pill box +[PBOX] +Prerequisite=tent +Primary=Vulcan +Strength=400 +Armor=wood +TechLevel=2 +Sight=5 +Owner=allies +Cost=400 +Points=50 +Power=-15 +Sensors=yes +Crewed=yes + +; camouflaged pill box +[HBOX] +Prerequisite=tent +Primary=Vulcan +Strength=600 +Armor=wood +TechLevel=3 +Sight=5 +Owner=allies +Cost=600 +Points=60 +Power=-15 +Sensors=yes +Crewed=yes + +; Tesla coil +[TSLA] +Prerequisite=weap +Primary=TeslaZap +Strength=400 +Armor=heavy +TechLevel=7 +Sight=8 +Owner=soviet +Cost=1500 +Points=80 +Power=-150 +Ammo=3 +Powered=true +Sensors=yes +Crewed=yes + +; gun turret +[GUN] +Prerequisite=tent +Primary=TurretGun +Strength=400 +Armor=heavy +TechLevel=4 +Sight=6 +Owner=allies +Cost=600 +Points=50 +Power=-40 +Sensors=yes +Crewed=yes +ROT=12 + +; anti-aircraft artillery +[AGUN] +Prerequisite=dome +Primary=ZSU-23 +Secondary=ZSU-23 +Strength=400 +Armor=heavy +TechLevel=5 +Sight=6 +Owner=allies +Cost=600 +Points=50 +Power=-50 +Crewed=yes +ROT=15 +Powered=true + +; flame turret +[FTUR] +Prerequisite=barr +Primary=FireballLauncher +Strength=400 +Armor=heavy +TechLevel=2 +Sight=6 +Owner=soviet +Cost=600 +Points=65 +Power=-20 +Sensors=yes +Explodes=no +Crewed=yes + +; construction yard +[FACT] +Strength=1000 +Armor=heavy +TechLevel=-1 +Sight=5 +Owner=allies,soviet +Cost=2500 +Points=80 +Power=0 +Bib=yes +Capturable=true +Crewed=yes + +; refinery +[PROC] +Prerequisite=powr +Strength=900 +Armor=wood +TechLevel=1 +Sight=6 +Owner=allies,soviet +Cost=2000 +Points=80 +Power=-30 +Storage=2000 +Bib=yes +Capturable=true +Crewed=yes + +; storage silo +[SILO] +Prerequisite=proc +Strength=300 +Armor=wood +TechLevel=1 +Sight=4 +Owner=allies,soviet +Cost=150 +Points=25 +Power=-10 +Storage=1500 +Capturable=true + +; helipad +[HPAD] +Prerequisite=dome +Strength=800 +Armor=wood +TechLevel=9 +Sight=5 +Owner=allies,soviet +Cost=1500 +Points=70 +Power=-10 +Bib=yes +Capturable=true +Crewed=yes + +; radar building +[DOME] +Prerequisite=proc +Strength=1000 +Armor=wood +TechLevel=3 +Sight=10 +Owner=allies,soviet +Cost=1000 +Points=60 +Power=-40 +Bib=yes +Powered=true +Capturable=true +Sensors=yes +Crewed=yes + +; gap generator +[GAP] +Prerequisite=atek +Strength=1000 +Armor=wood +TechLevel=10 +Sight=10 +Owner=allies +Cost=500 +Points=35 +Power=-60 +Powered=true +Capturable=true +Crewed=yes + +; Surface to Air Missile launcher +[SAM] +Prerequisite=dome +Primary=Nike +Strength=400 +Armor=heavy +TechLevel=9 +Sight=5 +Owner=soviet +Cost=750 +Points=50 +Power=-20 +Crewed=yes +ROT=30 + +; big missile silo +[MSLO] +Prerequisite=stek +Primary=none +Strength=400 +Armor=heavy +TechLevel=13 +Sight=5 +Owner=soviet,allies +Cost=2500 +Points=90 +Power=-100 +Crewed=yes + +; airstrip +[AFLD] +Prerequisite=dome +Strength=1000 +Armor=heavy +TechLevel=5 +Sight=7 +Owner=soviet +Cost=600 +Points=70 +Power=-30 +Capturable=true +Crewed=yes + +; normal power plant +[POWR] +Prerequisite=fact +Strength=400 +Armor=wood +TechLevel=1 +Sight=4 +Owner=allies,soviet +Cost=300 +Points=40 +Power=100 +Bib=yes +Capturable=true +Crewed=yes + +; advanced power plant +[APWR] +Prerequisite=powr +Strength=700 +Armor=wood +TechLevel=8 +Sight=4 +Owner=allies,soviet +Cost=500 +Points=50 +Power=200 +Bib=yes +Capturable=true +Crewed=yes + +; Soviet tech center +[STEK] +Prerequisite=weap,dome +Strength=600 +Armor=wood +TechLevel=6 +Sight=4 +Owner=soviet +Cost=1500 +Points=85 +Power=-100 +Bib=yes +Capturable=true +Crewed=yes + +; hospital (obsolete?) +[HOSP] +Strength=400 +Armor=wood +TechLevel=-1 +Sight=4 +Owner= +Cost= +Points=20 +Power=-20 +Bib=yes +Capturable=true +Crewed=yes + +; bio-research laboratory (obsolete?) +[BIO] +Strength=600 +Armor=wood +TechLevel=-1 +Sight=4 +Owner= +Cost= +Points=30 +Power=-40 +Bib=yes +Crewed=yes + +; Soviet barracks +[BARR] +Prerequisite=powr +Strength=800 +Armor=wood +TechLevel=1 +Sight=5 +Owner=soviet +Cost=300 +Points=30 +Power=-20 +Bib=yes +Crewed=yes +Capturable=true + +; Allied training tent +[TENT] +Prerequisite=powr +Strength=800 +Armor=wood +TechLevel=1 +Sight=5 +Owner=allies +Cost=300 +Points=30 +Power=-20 +Bib=yes +Crewed=yes +Capturable=true + +; attack dog training facility +[KENN] +Prerequisite=barr +Strength=400 +Armor=wood +TechLevel=3 +Sight=4 +Owner=soviet +Cost=200 +Points=25 +Power=-10 + +; service depot +[FIX] +Prerequisite=weap +Strength=800 +Armor=wood +TechLevel=3 +Sight=5 +Owner=allies,soviet +Cost=1200 +Points=80 +Power=-30 +Capturable=true +Crewed=yes + +; sandbag wall +[SBAG] +Strength=1 +Armor=none +TechLevel=2 +Sight=0 +Owner=allies +Cost=25 +Points=1 +Repairable=false +Adjacent=1 + +; concrete wall +[BRIK] +Strength=1 +Armor=none +TechLevel=8 +Sight=0 +Owner=allies,soviet +Cost=100 +Points=5 +Repairable=false +Adjacent=1 + +; wire fence +[FENC] +Strength=1 +Armor=none +TechLevel=2 +Sight=0 +Owner=soviet +Cost=25 +Points=1 +Repairable=false +Adjacent=1 + +; auxiliary decorative building +[MISS] +Strength=400 +Points=5 +Armor=wood +Bib=yes +Capturable=true + +; chain link fence +[CYCL] +Strength=1 +Points=1 +Armor=none +Cost=75 +Repariable=false +Adjacent=1 +Sight=0 + +; barb wire fence +[BARB] +Strength=1 +Points=1 +Armor=wood +Cost=25 +Repariable=false +Adjacent=1 +Sight=0 + +; wood fence +[WOOD] +Strength=1 +Points=1 +Repariable=false +Adjacent=1 +Sight=0 + +; barrels +[BARL] +Strength=10 +Repairable=false +Adjacent=0 +BaseNormal=no + +[BRL3] +Strength=10 +Repairable=false +Adjacent=0 +BaseNormal=no + +; anti-vehicle mine +[MINV] +Strength=1 +Repairable=false +Adjacent=0 +Invisible=yes +Unsellable=yes +BaseNormal=no + +; anti-personnel mine +[MINP] +Strength=1 +Repairable=false +Adjacent=0 +Invisible=yes +Unsellable=yes +BaseNormal=no + +; fakes +[FACF] +Image=FACT +Owner=allies +TechLevel=1 +Strength=30 +Cost=50 +Sight=4 +Power=-2 +Points=15 +Bib=yes +Capturable=true +BaseNormal=no + +[WEAF] +Prerequisite=proc +Image=WEAP +Owner=allies +TechLevel=3 +Cost=50 +Strength=30 +Sight=4 +Points=15 +Power=-2 +Bib=yes +Capturable=true +BaseNormal=no + +[SYRF] +Prerequisite=powr +Image=SYRD +Strength=30 +TechLevel=3 +Sight=4 +Cost=50 +Owner=allies +Power=-2 +Points=15 +WaterBound=yes +Capturable=true +BaseNormal=no +Adjacent=8 + +[SPEF] +Image=SPEN +Strength=30 +TechLevel=-1 +Sight=4 +Cost=50 +Owner=soviet +Power=-2 +Points=15 +WaterBound=yes +Capturable=true +BaseNormal=no +Adjacent=8 + +[DOMF] +Prerequisite=proc +Image=DOME +Strength=30 +Sight=4 +TechLevel=3 +Cost=50 +Owner=allies +Power=-2 +Points=15 +Bib=yes +Capturable=true +BaseNormal=no + +; civilian structures +[V01] +Strength=400 +Points=5 +Armor=wood +Repariable=false +Capturable=true + +[V02] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V03] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V04] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V05] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V06] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V07] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V08] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V09] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V10] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V11] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V12] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V13] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V14] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V15] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V16] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V17] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V18] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V19] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V20] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V21] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V22] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V23] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V24] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V25] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V26] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V27] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V28] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V29] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V30] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V31] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V32] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V33] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V34] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V35] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V36] +Strength=400 +Points=5 +Armor=wood +Repariable=false + +[V37] +Strength=400 +Points=5 +Armor=wood +Repariable=false + + +; ******* Weapon Statistics ******* +; The weapons specified here are attached to the various combat +; units and buildings. + +; Anim = animation to display as a firing effect +; Burst = number of rapid succession shots from this weapon (def=1) +; Camera = Reveals area around firer (def=no)? +; Charges = Does it have charge-up-before-firing logic (def=no)? +; Damage = the amount of damage (unattenuated) dealt with every bullet +; Projectile = projectile characteristic to use +; ROF = delay between shots [15 = 1 second at middle speed setting] +; Range = maximum cell range +; Report = sound to play when firing +; Speed = speed of projectile to target (100 is maximum) +; Warhead = warhead to attach to projectile +; Supress = Should nearby friendly buildings be scanned for and if found, discourage firing on target (def=no)? +; TurboBoost = Should the weapon get a boosted speed bonus when firing upon aircraft? + +; Tanya pistol +[Colt45] +Damage=50 +ROF=5 +Range=5.75 +Projectile=Invisible +Speed=100 +Warhead=HollowPoint +Report=GUN5 + +; anti-aircraft multiple cannon +[ZSU-23] +Damage=25 +ROF=10 +Range=6 +Projectile=Ack +Speed=100 +Warhead=AP +Anim=GUNFIRE +Report=AACANON3 + +; rapid fire machine gun +[Vulcan] +Damage=40 +ROF=40 +Range=5 +Projectile=Invisible +Speed=100 +Warhead=SA +Report=GUN13 +Anim=MINIGUN + +; air-to-surface homing missile (launched from jet) +[Maverick] +Damage=50 +ROF=3 +Range=6 +Projectile=HeatSeeker +Speed=30 +Warhead=AP +Report=MISSILE7 + +; camera +[Camera] +Damage=0 +ROF=10 +Range=2.75 +Projectile=Inivisble +Speed=100 +Warhead=Super +Camera=yes + +; fireball from flame turret +[FireballLauncher] +Damage=125 +ROF=50 +Range=4 +Projectile=Fireball +Speed=12 +Warhead=Fire + +; hand-held flame thrower type +[Flamer] +Damage=70 +ROF=50 +Range=3.5 +Projectile=Fireball +Speed=12 +Warhead=Fire + +; sniper rifle +[Sniper] +Damage=100 +ROF=5 +Range=3.75 +Projectile=Invisible +Speed=100 +Warhead=HollowPoint +Report=SILENCER + +; rapid fire aircraft gun +[ChainGun] +Damage=40 +ROF=3 +Range=5 +Projectile=Invisible +Speed=100 +Warhead=SA +Report=GUN13 +Anim=MINIGUN + +; civilian pistol +[Pistol] +Damage=1 +ROF=7 +Range=1.75 +Projectile=Invisible +Speed=100 +Warhead=SA +Report=GUN27 + +; rifle soldier weapons (multiple shots) +[M1Carbine] +Damage=15 +ROF=20 +Range=3 +Projectile=Invisible +Speed=100 +Warhead=SA +Report=GUN11 + +; man-packed anti-tank missile (bazooka type) +[Dragon] +Damage=35 +ROF=50 +Range=5 +Projectile=HeatSeeker +Speed=25 +Warhead=AP +Report=MISSILE6 + +; air-to-surface homing missile (launched from helicopter) +[Hellfire] +Damage=40 +ROF=60 +Range=4 +Projectile=HeatSeeker +Speed=30 +Warhead=AP +Report=MISSILE6 + +; hand grenade +[Grenade] +Damage=50 +ROF=60 +Range=4 +Projectile=Lobbed +Speed=5 +Warhead=HE + +; small anti-armor cannon +[75mm] +Damage=25 +ROF=40 +Range=4 +Projectile=Cannon +Speed=40 +Warhead=AP +Report=CANNON2 +Anim=GUNFIRE + +; light anti-armor cannon +[90mm] +Damage=30 +ROF=50 +Range=4.75 +Projectile=Cannon +Speed=40 +Warhead=AP +Report=CANNON1 +Anim=GUNFIRE + +; medium anti-armor cannon +[105mm] +Damage=30 +ROF=70 +Range=4.75 +Projectile=Cannon +Speed=40 +Warhead=AP +Report=CANNON1 +Anim=GUNFIRE + +; large anti-armor cannon +[120mm] +Damage=40 +ROF=80 +Range=4.75 +Projectile=Cannon +Speed=40 +Warhead=AP +Report=CANNON1 +Anim=GUNFIRE +Burst=2 + +; turret cannon +[TurretGun] +Damage=40 +ROF=50 +Range=6 +Projectile=Cannon +Speed=40 +Warhead=AP +Report=TURRET1 +Anim=GUNFIRE + +; Vehicle carried anti-tank missile +[MammothTusk] +Damage=75 +ROF=80 +Range=5 +Projectile=HeatSeeker +Speed=30 +Warhead=HE +Report=MISSILE6 +Burst=2 + +; artillery cannon +[155mm] +Damage=150 +ROF=65 +Range=6 +Projectile=Ballistic +Speed=12 +Warhead=HE +Report=TANK5 +Anim=GUNFIRE + +; vehicle mounted machine gun +[M60mg] +Damage=15 +ROF=20 +Range=4 +Projectile=Invisible +Speed=100 +Warhead=SA +Report=PILLBOX1 +Anim=MINIGUN + +; napalm bomblets (dropped from plane) +[Napalm] +Damage=100 +ROF=20 +Range=4.5 +Projectile=Bomblet +Speed=5 +Warhead=Fire + +; Tesla coil zap +[TeslaZap] +Damage=100 +ROF=120 +Range=8.5 +Projectile=Invisible +Speed=100 +Warhead=Super +Report=TESLA1 +Charges=yes + +; anti-aircraft missile (fired from SAM site) +[Nike] +Damage=50 +ROF=20 +Range=7.5 +Projectile=AAMissile +Speed=50 +Warhead=AP +Report=MISSILE1 +Anim=SAMFIRE + +; man-packed surface to air missile +[RedEye] +Damage=50 +ROF=50 +Range=7.5 +Projectile=AAMissile +Speed=50 +Warhead=AP +Report=MISSILE1 +Anim=SAMFIRE + +; 8 inch cruiser cannon +[8Inch] +Damage=500 +ROF=160 +Range=22 +Projectile=Ballistic +Speed=6 +Warhead=HE +Report=TURRET1 +Anim=GUNFIRE +Supress=yes + +; gunboat mounted anti-aircraft rocket +[Stinger] +Damage=30 +ROF=60 +Range=9 +Projectile=LaserGuided +Speed=20 +Warhead=AP +Report=MISSILE6 +Burst=2 +TurboBoost=yes + +; torpedo tube +[TorpTube] +Damage=90 +ROF=60 +Range=9 +Projectile=Torpedo +Speed=15 +Warhead=AP +Report=TORPEDO1 + +; destroyer mounted 2 inch cannon +[2Inch] +Damage=25 +ROF=60 +Range=5.5 +Projectile=Cannon +Speed=25 +Warhead=AP +Report=CANNON2 +Anim=GUNFIRE + +; anti-submarine weapon +[DepthCharge] +Damage=80 +ROF=60 +Range=5 +Projectile=Catapult +Speed=5 +Warhead=AP + +; parachute bomb +[ParaBomb] +Damage=300 +ROF=4 +Range=4.5 +Projectile=Parachute +Speed=5 +Warhead=HE +Report=CHUTE1 + +; dog bite +[DogJaw] +Damage=100 +ROF=10 +Range=2.2 +Projectile=LeapDog +Speed=20 +Warhead=Organic +Report=DOGG5P + +; medic healing +[Heal] +Damage=-50 +ROF=80 +Range=1.83 +Projectile=Invisible +Speed=100 +Warhead=Organic +Report=HEAL2 + +; SCUD launcher +[SCUD] +Damage=600 +ROF=400 +Range=10 +Projectile=FROG +Speed=25 +Warhead=HE +Report=MISSILE1 + + +; ******* Projectile Statistics ******* +; Projectiles describe how and what image to use as the weapon flies +; to its target. Think of the projectile as the "delivery method" used +; to get the warhead to the desired target. + +; AA = Can this weapon fire upon flying aircraft (def=no)? +; AG = Can this weapon fire upon ground objects (def=yes)? +; ASW = Is this an Anti-Submarine-Warfare projectile (def=no)? +; Animates = Does it animate [this means smoke puffs] (def=no)? +; Arcing = Does it have a ballistic trajectory (def=no)? +; Arm = arming delay (def=0) +; Degenerates = Does the bullet strength weaken as it travels (def=no)? +; Dropping = Does it fall from a starting height (def=no)? +; Frames = number of image frames for animation purposes (def=1) +; Gigundo = Is the projectile larger than normal (def=no)? +; High = Can it fly over walls (def=no)? +; Image = image to use during flight +; Inaccurate = Is it inherently inaccurate (def=no)? +; Inviso = Is the projectile invisible as it travels (def=no)? +; Parachuted = Equipped with a parachute for dropping from plane (def=no)? +; Proximity = Does it blow up when near its target (def=no)? +; ROT = Rate Of Turn [non zero implies homing] (def=0) +; Ranged = Can it run out of fuel (def=no)? +; Rotates = Does the projectile have rotation specific imagery (def=no)? +; Shadow = If High, does this bullet need to have a shadow drawn? (def = yes) +; Translucent = Are translucent colors used in artwork (def=no)? +; UnderWater = Does the projectile travel under water? + +; invisible flight to target +[Invisible] +Inviso=yes +Image=none + +; special case for dog +[LeapDog] +Image=DOGBULLT +Translucent=yes +Rotates=yes +Proximity=yes +ROT=20 + +; straight high-speed ballistic shot +[Cannon] +Image=120MM + +; anti aircraft artillery projectile +[Ack] +Image=none +Inviso=yes +AA=true +AG=false + +; Sub-surface projectile. +[Torpedo] +UnderWater=yes +Image=MISSILE +Rotates=yes +ASW=yes + +; Free Rocket Over Ground +[FROG] +Arm=10 +High=yes +Shadow=no +Proximity=yes +Animates=yes +Ranged=yes +Inaccurate=yes +Image=V2 +Rotates=yes + +; small homing missile (targets vehicles best) +[HeatSeeker] +Arm=2 +High=yes +Shadow=no +Proximity=yes +Animates=yes +Ranged=yes +Inaccurate=yes +AA=yes +Image=DRAGON +ROT=5 +Rotates=yes +Translucent=yes + +; small missile with deadly accuracy +[LaserGuided] +Arm=3 +High=yes +Shadow=no +Proximity=yes +Animates=yes +Ranged=yes +AA=yes +Image=DRAGON +ROT=20 +Rotates=yes +Translucent=yes + +; anti aircraft missile +[AAMissile] +Arm=3 +High=yes +Shadow=no +Proximity=yes +Animates=yes +Ranged=yes +AA=yes +AG=no +Image=MISSILE +ROT=20 +Rotates=yes +Translucent=yes + +; lobbed tumbling grenade +[Lobbed] +High=yes +Arcing=yes +Inaccurate=yes +Image=BOMB +Frames=8 +Translucent=yes + +; Depth charge catapult +[Catapult] +High=yes +Arcing=yes +Inaccurate=yes +Image=BOMB +Frames=8 +ASW=yes +AG=no +Translucent=yes + +; dropped from plane tumbling object +[Bomblet] +Arm=24 +RangeLimit=24 +High=yes +Dropping=yes +Image=BOMBLET +Frames=6 +Translucent=yes + +; arcing ballistic projectile +[Ballistic] +High=yes +Arcing=yes +Inaccurate=yes +Image=120MM + +; parachute bomb +[Parachute] +Arm=24 +RangeLimit=24 +High=yes +Dropping=yes +Parachuted=yes +;Image=PARABOMB + +; Allied free radar (GPS satellite) +[GPSSatellite] +Gigundo=yes +High=yes +Image=SPUTNIK +Frames=4 + +; Nuclear missile, flying up +[NukeUp] +Gigundo=yes +High=yes +Image=ATOMICUP +Frames=4 + +; Nuclear missile, flying down +[NukeDown] +Gigundo=yes +High=yes +Image=ATOMICDN +Frames=4 + +; wizard's fireball +[Fireball] +Animates=yes +Image=FB1 +Frames=8 + + +; ******* Warhead Characteristics ******* +; This is what gives the "rock, paper, scissors" character to the game. +; It describes how the damage is to be applied to the target. The +; values should take into consideration the 'area of effect'. +; example: Although an armor piercing tank round would instantly +; kill a soldier IF it hit, the anti-infantry rating is still +; very low because the tank round has such a limited area of +; effect, lacks pinpoint accuracy, and acknowledges the fact that +; tanks pose little threat to infantry that take cover. + +; Spread = damage spread factor [larger means greater spread] (def=1) +; [A value of 1 means the damage is halved every pixel distant from center point. +; a value of 2 means damage is halved every 2 pixels, etc.] +; Wall = Does this warhead damage concrete walls (def=no)? +; Wood = Does this warhead damage wood walls (def=no)? +; Ore = Does this warhead destroy ore (def=no)? +; Verses = damage value verses various armor types (as percentage of full damage)... +; -vs- none, wood (buildings), light armor, heavy armor, concrete +; Explosion = which explosion set to use when warhead of this type impacts (def=0) +; 0=none, 1=piff, 2=piffs, 3=fire, 4=frags, 5=pops, 6=nuke +; InfDeath = which infantry death animation to use (def=0) +; 0=instant die, 1=twirl die, 2=explodes, 3=flying death, 4=burn death, 5=electro + +; general multiple small arms fire +[SA] +Spread=3 +Verses=100%,50%,60%,25%,25% +Explosion=2 +InfDeath=1 + +; high explosive (shrapnel) +[HE] +Spread=6 +Wall=yes +Wood=yes +Verses=90%,75%,60%,25%,100% +Explosion=5 +InfDeath=2 + +; armor piercing (discarding sabot, narrow effect) +[AP] +Spread=3 +Wall=yes +Wood=yes +Verses=30%,75%,75%,100%,50% +Explosion=4 +InfDeath=3 + +; napalm and fire in general +[Fire] +Spread=8 +Wood=yes +Verses=90%,100%,60%,25%,50% +Explosion=3 +InfDeath=4 + +; anti-infantry rifle bullet (single shot -- very effective verses infantry) +[HollowPoint] +Spread=1 +Verses=100%,5%,5%,5%,5% +Explosion=1 +InfDeath=1 + +; special case damage effect (do not use for regular weapons) +[Super] +Spread=1 +Verses=100%,100%,100%,100%,100% +InfDeath=5 + +; special case to only affect infantry (do not use for regular weapons) +[Organic] +Spread=0 +Verses=100%,0%,0%,0%,0% +InfDeath=0 + +; Nuclear warhead (same as fire) +[Nuke] +Spread=6 +Wall=yes +Wood=yes +Ore=yes +Verses=90%,100%,60%,25%,50% +Explosion=6 +InfDeath=4 + + +; ******* Land Characteristics ******* +; This section specifies the characteristics of the various +; terrain types. The primary purpose is to differentiate the +; movement capabilities. + +; Float = % of full speed for ships [0 means impassable] (def=100) +; Foot = % of full speed for foot soldiers [0 means impassable] (def=100) +; Track = % of full speed for tracked vehicles [0 means impassable] (def=100) +; Wheel = % of full speed for wheeled vehicles [0 means impassable] (def=100) +; Buildable = Can buildings be built upon this terrain (def=no)? + +; clear grassy terrain +[Clear] +Foot=90% +Track=80% +Wheel=60% +Float=0% +Buildable=yes + +; rocky terrain +[Rough] +Foot=80% +Track=70% +Wheel=40% +Float=0% +Buildable=no + +; roads +[Road] +Foot=100% +Track=100% +Wheel=100% +Float=0% +Buildable=yes + +; open water +[Water] +Foot=0% +Track=0% +Wheel=0% +Float=100% +Buildable=no + +; cliffs +[Rock] +Foot=0% +Track=0% +Wheel=0% +Float=0% +Buildable=no + +; walls and other man made obstacles +[Wall] +Foot=0% +Track=0% +Wheel=0% +Float=0% +Buildable=no + +; ore (Tiberium) +[Ore] +Foot=90% +Track=70% +Wheel=50% +Float=0% +Buildable=no + +; sandy beach +[Beach] +Foot=80% +Track=70% +Wheel=40% +Float=0% +Buildable=no + +; craggy riverbed +[River] +Foot=0% +Track=0% +Wheel=0% +Float=0% +Buildable=no + + +; ******* Random Crate Powerups ******* +; This specifies the chance for the specified crate powerup to appear +; in a 'random' crate. The chance is expressed in the form of 'shares' +; out of the total shares specified. The second parameter is the animation +; to use when this crate is picked up. The third parameter, if present, specifies +; the data value needed for that crate powerup. They mean different things +; for the different powerups. +[Powerups] +Armor=10,ARMOR,2.0 ; armor of nearby objects increased (armor multiplier) +Cloak=0,STEALTH2 ; enable cloaking on nearby objects +Darkness=1,EMPULSE ; cloak entire radar map +Explosion=5,NONE,500 ; high explosive baddie (damage per explosion) +Firepower=10,FPOWER,2.0 ; firepower of nearby objects increased (firepower multiplier) +HealBase=1,INVUN ; all buildings to full strength +ICBM=1,MISSILE2 ; nuke missile one time shot +Money=50,DOLLAR,2000 ; a chunk o' cash (maximum cash) +Napalm=5,NONE,600 ; fire explosion baddie (damage) +ParaBomb=3,PARABOX ; para-bomb raid one time shot +Reveal=1,EARTH ; reveal entire radar map +Sonar=3,SONARBOX ; one time sonar pulse +Speed=10,SPEED,1.7 ; speed of nearby objects increased (speed multiplier) +Squad=20,NONE ; squad of random infantry +Unit=20,NONE ; vehicle +Invulnerability=3,INVULBOX,1.0 ; invulnerability (duration in minutes) +TimeQuake=3,TQUAKE ; time quake + + +; ******* Mission Control ******* +; This specifies the various general behavior characteristics of +; the missions that objects can be assigned. Each of the game objects must +; be in a mission. The mission behavior is generally hard coded into +; the program, but there are some behavior characteristics that can +; be overridden. Don't modify these. + +; NoThreat = Is its weapons disabled and thus ignored as a potential target until fired upon (def=no)? +; Zombie = Is forced to sit there like a zombie and never recovers (def=no)? +; Recruitable = Can it be recruited into a team or base defense (def=yes)? +; Paralyzed = Is the object frozen in place but can still fire and function (def=no)? +; Retaliate = Is allowed to retaliate while on this mission (def=yes)? +; Scatter = Is allowed to scatter from threats (def=yes)? +; Rate = delay between normal processing (larger = faster game, less responsiveness) +; AARate = anti-aircraft delay rate (if not specifed it uses regular rate). + +; Unit sits still and plays dead. +[Sleep] +Recruitable=no +Zombie=yes +Retaliate=no +Scatter=no +Rate=1 + +; Unit doesn't fire and is not considered a threat. +[Harmless] +Recruitable=no +NoThreat=yes +Retaliate=no +Rate=.5 + +; Just like guard mode, but cannot move. +[Sticky] +Recruitable=no +Paralyzed=yes +Scatter=no +Rate=.016 + +; Special attack mission used by team logic. +[Attack] +Rate=.016 +AARate=.016 + +; Move to destination. +[Move] +Rate=.016 + +; Special move to destination after all other queued moves occur. +[QMove] +Rate=.016 + +; Run away (possibly leave the map). +[Retreat] +Recruitable=no +Retaliate=no +Rate=.1 + +; Sit around and engage any enemy that wanders within weapon range. +[Guard] +Rate=.050 +AARate=.016 + +; Enter building or transport for loading purposes. +[Enter] +Retaliate=no +Recruitable=no +Rate=.016 + +; Engineer entry logic. +[Capture] +Retaliate=no +Recruitable=no +Scatter=no +Rate=.016 + +; Handle harvest ore - dump at refinery loop. +[Harvest] +Retaliate=no +Recruitable=no +Scatter=no +Rate=.016 + +; Guard the general area where the unit starts at. +[Area Guard] +Recruitable=no +Rate=.080 +AARate=.032 + +; +[Return] + +; Stop moving and firing at the first available opportunity. +[Stop] + +; +[Ambush] + +; Scan for and attack any enemies whereever they may be. +[Hunt] +Recruitable=no +Retaliate=no +Rate=.016 + +; While dropping off cargo (e.g., APC unloading passengers). +[Unload] +Recruitable=no +Retaliate=no +Scatter=no +Rate=.016 + +; Tanya running to place bomb in building. +[Sabotage] +Recruitable=no +Rate=.016 + +; Buildings use this when building up after initial placement. +[Construction] +Recruitable=no +Retaliate=no +Scatter=no + +; Buildings use this when deconstruction after being sold. +[Selling] +Recruitable=no +NoThreat=yes +Retaliate=no +Scatter=no + +; Service depot uses this mission to repair attached object. +[Repair] +Rate=.08 + +; Special team override mission. +[Rescue] +Rate=.016 + +; Missile silo special launch missile mission. +[Missile] +Rate=.1 + +[ABAN01] +Strength=400 +Points=5 +Armor=wood +Repariable=false \ No newline at end of file