;//////////////////////////////////////////////////////////////////////////////
; FILE: GameData.ini (SYSTEM) /////////////////////////////////////////////////
;//////////////////////////////////////////////////////////////////////////////

GameData
  ShellMapName = Maps\ShellMapMD\ShellMapMD.map
  MapName = assault.map
  MoveHintName = SCMoveHint
  UseTrees = Yes
  UseFPSLimit = Yes
  FramesPerSecondLimit = 61
  ChipsetType = 0
  ;Windowed = No
  ;XResolution = 800
  ;YResolution = 600
  MaxShellScreens = 8
  UseCloudMap = Yes
  UseLightMap = Yes
  BilinearTerrainTex = Yes
  TrilinearTerrainTex = Yes
  MultiPassTerrain = Yes
  AdjustCliffTextures = Yes
  StretchTerrain = No
  UseHalfHeightMap = No
  ShowObjectHealth = Yes
  HideGarrisonFlags = No
  Use3WayTerrainBlends = 1
  DrawEntireTerrain = No
  TerrainLOD = DISABLE  ; should be handled by options screen.
  TerrainLODTargetTimeMS = 45
  TextureReductionFactor = 0; 1 is half res, 2 querter res, etc.
  RightMouseAlwaysScrolls = Yes
  UseWaterPlane = Yes
  UseCloudPlane = Yes
  UseShadowVolumes = Yes
  UseShadowDecals = Yes
  UseBehindBuildingMarker = Yes
  DefaultOcclusionDelay = 3000  ; in ms
  OccludedColorLuminanceScale = 0.5
  WaterPositionX = 0.0
  WaterPositionY = 0.0
  WaterPositionZ = 7.0
  WaterExtentX = 2000.0
  WaterExtentY = 2000.0
  WaterType = 1
   
  ; when a structure is reduced to rubble, set its z-height to this if nothing else is specified.
  DefaultStructureRubbleHeight = 10.0

  ;the following are for vertex animated water
  VertexWaterAvailableMaps1       = Maps\nVidiaDemo\nVidiaDemo.map
  VertexWaterHeightClampLow1      = 0.0
  VertexWaterHeightClampHi1       = 16.3
  VertexWaterAngle1               = 45     ;in degrees
  VertexWaterXPosition1           = 2700.0
  VertexWaterYPosition1           = -750.0
  VertexWaterZPosition1           = 2.9
  VertexWaterXGridCells1          = 65
  VertexWaterYGridCells1          = 360
  VertexWaterGridSize1            = 10.0
  VertexWaterAttenuationA1        = 1.0
  VertexWaterAttenuationB1        = 0.0
  VertexWaterAttenuationC1        = 0.0
  VertexWaterAttenuationRange1    = 20.0

  ;the following are for vertex animated water
  VertexWaterAvailableMaps2       = Maps\CHI03\CHI03.map
  VertexWaterHeightClampLow2      = 0.0
  VertexWaterHeightClampHi2       = 31.2
  VertexWaterAngle2               = -12    ;in degrees
  VertexWaterXPosition2           = 282.0
  VertexWaterYPosition2           = -20.0
  VertexWaterZPosition2           = 3.0
  VertexWaterXGridCells2          = 100
  VertexWaterYGridCells2          = 200
  VertexWaterGridSize2            = 11.0
  VertexWaterAttenuationA2        = 1.0
  VertexWaterAttenuationB2        = 0.0
  VertexWaterAttenuationC2        = 0.0
  VertexWaterAttenuationRange2    = 20.0

  ;the following are for vertex animated water
  VertexWaterAvailableMaps3       = Maps\GLA01\GLA01.map
  VertexWaterHeightClampLow3      = 0.0
  VertexWaterHeightClampHi3       = 45.0
  VertexWaterAngle3               = -12     ;in degrees
  VertexWaterXPosition3           = 1424.0
  VertexWaterYPosition3           = -270.0
  VertexWaterZPosition3           = 2.0
  VertexWaterXGridCells3          = 75
  VertexWaterYGridCells3          = 360
  VertexWaterGridSize3            = 10.0 ;11.0
  VertexWaterAttenuationA3        = 1.0
  VertexWaterAttenuationB3        = 0.0
  VertexWaterAttenuationC3        = 0.0
  VertexWaterAttenuationRange3    = 20.0

  ;the following are for vertex animated water
  VertexWaterAvailableMaps4       = Maps\USA06\USA06.map
  VertexWaterHeightClampLow4      = 0.0
  VertexWaterHeightClampHi4       = 16.3
  VertexWaterAngle4               = 45     ;in degrees
  VertexWaterXPosition4           = 2700.0
  VertexWaterYPosition4           = -750.0
  VertexWaterZPosition4           = 2.9
  VertexWaterXGridCells4          = 65
  VertexWaterYGridCells4          = 360
  VertexWaterGridSize4            = 10.0
  VertexWaterAttenuationA4        = 1.0
  VertexWaterAttenuationB4        = 0.0
  VertexWaterAttenuationC4        = 0.0
  VertexWaterAttenuationRange4    = 20.0
  
  DownwindAngle = -0.785    ; Northeast! AKA "Away and to the right" 
  DrawSkyBox = Yes
  SkyBoxPositionZ = -100.0    ; lowers center of skybox under terrain
  SkyBoxScale = 8.4  ; good for default 96 x 96 map, make 17.5 for 256x256
  CameraPitch = 37.5
  CameraYaw = 0.0
  CameraHeight = 240.0
  MaxCameraHeight = 300.0
  MinCameraHeight = 80.0
  CameraAdjustSpeed = 0.3      ; between 0 and 1 - this is how fast the camera snaps to the desired height
  ScrollAmountCutoff = 50.0      ; arbitrary units - above this value, we don't update height while scrolling
  EnforceMaxCameraHeight = No      ; Obey max camera height while scrolling?
  TerrainHeightAtEdgeOfMap = 1.0
  UnitDamagedThreshold = 0.7
  UnitReallyDamagedThreshold = 0.35
  GroundStiffness = 0.8
  StructureStiffness = 0.3
  ; acceleration due to gravity, in dist/sec^2
  ; note that our distance units are roughly one foot, so 
  ; this corresponds to earth-normal gravity (32 ft/sec^2)
  ;Gravity = -32.0
  ; this "feels" better... (srj)
  Gravity = -64.0

  PartitionCellSize = 40.0

  ParticleScale = 1.0 ;
  
  AutoFireParticleSmallPrefix   = FireS
  AutoFireParticleSmallSystem   = FireFactionSmall
  AutoFireParticleSmallMax      = 2
  AutoFireParticleMediumPrefix  = FireM
  AutoFireParticleMediumSystem  = FireFactionMedium
  AutoFireParticleMediumMax     = 1
  AutoFireParticleLargePrefix   = FireL
  AutoFireParticleLargeSystem   = FireFactionLarge
  AutoFireParticleLargeMax      = 1
  AutoSmokeParticleSmallPrefix  = SmokeS
  AutoSmokeParticleSmallSystem  = SmokeFactionSmall
  AutoSmokeParticleSmallMax     = 4
  AutoSmokeParticleMediumPrefix = SmokeM
  AutoSmokeParticleMediumSystem = SmokeFactionMedium
  AutoSmokeParticleMediumMax    = 2
  AutoSmokeParticleLargePrefix  = SmokeL
  AutoSmokeParticleLargeSystem  = SmokeFactionLarge
  AutoSmokeParticleLargeMax     = 1
  AutoAflameParticlePrefix      = Aflame
  AutoAflameParticleSystem      = FireBuildingSmall
  AutoAflameParticleMax         = 4

  HistoricDamageLimit = 5000  ; how long to retain historical-damage for weapons that need it, in msec

  AmmoPipScaleFactor = 1.0
  ContainerPipScaleFactor = 1.0
  AmmoPipScreenOffset = X:-1.0 Y:0.0        ; note that this is a multiplier to boundingspheresize, NOT an absolute offset
  ContainerPipScreenOffset = X:1.0 Y:0.0    ; note that this is a multiplier to boundingspheresize, NOT an absolute offset
  AmmoPipWorldOffset = X:0.0 Y:0.0 Z:10.0       ; added to position prior to world->screen xform
  ContainerPipWorldOffset = X:0.0 Y:0.0 Z:10.0  ; added to position prior to world->screen xform

  LevelGainAnimationName = LevelGainedAnimation
  LevelGainAnimationTime = 4.0
  LevelGainAnimationZRise = 15.0

  GetHealedAnimationName = GetHealedAnimation
  GetHealedAnimationTime = 4.0
  GetHealedAnimationZRise = 15.0

  MaxTerrainTracks = 500  ; how many vehicles can generate tread marks on the terrain.
  TimeOfDay = AFTERNOON
  Weather = NORMAL
  MakeTrackMarks = Yes
  ForceModelsToFollowTimeOfDay = Yes
  ForceModelsToFollowWeather = Yes

  InfantryLightMorningScale = 100f ; amount to scale map lighting to make infantry easier to see.
  InfantryLightAfternoonScale = 100f ; amount to scale map lighting to make infantry easier to see.
  InfantryLightEveningScale = 200f ; amount to scale map lighting to make infantry easier to see.
  InfantryLightNightScale = 200f ; amount to scale map lighting to make infantry easier to see.

  TerrainLightingMorningAmbient = R:128 G:100 B:77
  TerrainLightingMorningDiffuse = R:230 G:180 B:153
  TerrainLightingMorningLightPos = X:-0.96 Y:0.05 Z:-0.29
  TerrainLightingEveningAmbient = R:64 G:59 B:51
  TerrainLightingEveningDiffuse = R:153 G:128 B:102
  TerrainLightingEveningLightPos = X:-1.0 Y:0.0 Z:-0.2
  TerrainLightingNightAmbient = R:26 G:26 B:39
  TerrainLightingNightDiffuse = R:51 G:51 B:77
  TerrainLightingNightLightPos = X:-1.0 Y:1.0 Z:-2.0

  TerrainObjectsLightingMorningAmbient = R:128 G:102 B:77
  TerrainObjectsLightingMorningDiffuse = R:230 G:179 B:153
  TerrainObjectsLightingMorningLightPos = X:-0.96 Y:0.05 Z:-0.29
  TerrainObjectsLightingEveningAmbient = R:64 G:59 B:51
  TerrainObjectsLightingEveningDiffuse = R:153 G:128 B:102
  TerrainObjectsLightingEveningLightPos = X:-1.0 Y:0.0 Z:-0.2
  TerrainObjectsLightingNightAmbient = R:26 G:26 B:39
  TerrainObjectsLightingNightDiffuse = R:51 G:51 B:77
  TerrainObjectsLightingNightLightPos = X:-1.0 Y:1.0 Z:-2.0

  TerrainLightingAfternoonAmbient = R:56 G:52 B:44
  TerrainLightingAfternoonDiffuse = R:255 G:255 B:255
  TerrainLightingAfternoonLightPos = X:-0.81 Y:0.38 Z:-0.45
  TerrainObjectsLightingAfternoonAmbient = R:56 G:52 B:44
  TerrainObjectsLightingAfternoonDiffuse = R:255 G:255 B:255
  TerrainObjectsLightingAfternoonLightPos = X:-0.81 Y:0.38 Z:-0.45

  TerrainLightingAfternoonAmbient2 = R:0 G:0 B:0
  TerrainLightingAfternoonDiffuse2 = R:60 G:60 B:120
  TerrainLightingAfternoonLightPos2 = X:0.79 Y:0.62 Z:-0.00
  TerrainObjectsLightingAfternoonAmbient2 = R:0 G:0 B:0
  TerrainObjectsLightingAfternoonDiffuse2 = R:60 G:60 B:80
  TerrainObjectsLightingAfternoonLightPos2 = X:0.79 Y:0.62 Z:-0.00

  TerrainLightingAfternoonAmbient3 = R:0 G:0 B:0
  TerrainLightingAfternoonDiffuse3 = R:30 G:30 B:20
  TerrainLightingAfternoonLightPos3 = X:0.81 Y:-0.48 Z:-0.34
  TerrainObjectsLightingAfternoonAmbient3 = R:0 G:0 B:0
  TerrainObjectsLightingAfternoonDiffuse3 = R:30 G:30 B:20
  TerrainObjectsLightingAfternoonLightPos3 = X:0.81 Y:-0.48 Z:-0.34

  AudioOn = Yes
  MusicOn = Yes
  SoundsOn = Yes
  SpeechOn = Yes
  VideoOn = Yes

  DebugAI = No
  DebugAIObstacles = No

  MaxRoadSegments = 4000
  MaxRoadVertex = 3000
  MaxRoadIndex = 5000
  MaxRoadTypes = 100

  ValuePerSupplyBox = 75

  BuildSpeed = 1.0
  MinDistFromEdgeOfMapForBuild = 15.0  ; buildings may not be constructed this close to a map edge
  SupplyBuildBorder = 25.0  ; min dist you can put a supply center from a supply source

  ;Terrain height at structure footprint must be within this much to 
  ;be considerd "flat" and therefore buildable
  AllowedHeightVariationForBuilding = 15.0

  MinLowEnergyProductionSpeed = 0.5
  MaxLowEnergyProductionSpeed = 0.8
  LowEnergyPenaltyModifier = 1.0
  MultipleFactory = 1.0
  RefundPercent = 50.0%
  StealthFriendlyOpacity = 50.0%

  CommandCenterHealRange = 500.0 ; command center heals your/ally stuff this close to the command center
  CommandCenterHealAmount = 0.01 ; command center heals close by stuff this amount per logic frame
  MaxLineBuildObjects = 50       ; line build style objects can be in a line no longer than this count of objects
  MaxTunnelCapacity = 10         ; How many can be in a player's tunnel network.  Limit 10 for UI currently

  StandardMinefieldDensity    = 0.004    ; in mines per square foot
  StandardMinefieldDistance   = 65      ; in feet. should generally be larger than typical tank shot range.

  HorizontalScrollSpeedFactor = 1.6;     ; Factor applied to the maximum RMB scroll speed.  Larger allows faster scrolling.
  VerticalScrollSpeedFactor = 2.0;       ; Split to account for aspect ratio induced speed limits.  Room to mouse drag.
  KeyboardScrollSpeedFactor = 2.0;    ; Factor applied to the maximum keyboard scroll speed.  Larger allows faster scrolling.
  MovementPenaltyDamageState = REALLYDAMAGED  ; Point at which we slow movement

  MaxParticleCount = 3000        ; the maximum number of particles that can exist at one time (to 5000 for demo)
  MaxFieldParticleCount = 40     ; the number of field type particles rendered to the screen, beyond which this type will begin skipping
                                 ; a field particle is one of Priority AREA_EFFECT and isGroundAligned = Yes
                                 ; Typically these are puddles, toxic contamination, radiation, decontamination, etc.

; note that the weapon bonus types are:
;"GARRISONED",
;"HORDE",
;"CONTINUOUS_FIRE_MEAN",
;"CONTINUOUS_FIRE_FAST",
;"NATIONALISM",
;"PLAYER_UPGRADE",
;"DRONE_SPOTTING",
;"ENTHUSIASTIC",
;"VETERAN",
;"ELITE",
;"HERO",
;"BATTLEPLAN_BOMBARDMENT",
;"BATTLEPLAN_HOLDTHELINE",
;"BATTLEPLAN_SEARCHANDDESTROY",
;"SUBLIMINAL",
;"SOLO_HUMAN_EASY",
;"SOLO_HUMAN_NORMAL",
;"SOLO_HUMAN_HARD",
;"SOLO_AI_EASY",
;"SOLO_AI_NORMAL",
;"SOLO_AI_HARD",
;
; and the weapon bonus 'fields' are:
;"DAMAGE",
;"RADIUS",
;"RANGE",
;"RATE_OF_FIRE",
;"PRE_ATTACK",

  ;HORDE, NATIONALISM and FANATICISM are cumulative bonuses for the China Redguard,
  ;and only apply when they are in a horde. NATIONALISM does not replace HORDE! FANATICISM does not replace NATIONALISM

  ;ENTHUSIASTIC and SUBLIMINAL are cumulative bonuses for the China Redguard,
  ;and only apply when they are within effect radius of a propaganda tower. SUBLIMINAL does not replace ENTHUSIASTIC!

  WeaponBonus =       HORDE  RATE_OF_FIRE  150%  ;Horded troops fire their weapons 25% faster
  WeaponBonus = NATIONALISM  RATE_OF_FIRE  125%  ;Horded troops with nationalism fire their weapon an additional 25% faster
  WeaponBonus = FANATICISM   RATE_OF_FIRE  125%  ;Horded troops with nationalism fire their weapon an additional 25% faster
  WeaponBonus = ENTHUSIASTIC RATE_OF_FIRE  125%  ;In range of a speaker tower, gaining enthusiasm
  WeaponBonus = SUBLIMINAL   RATE_OF_FIRE  125%  ;In range of an upgraded speaker tower, gaining even more enthusiasm
  WeaponBonus =  GARRISONED         RANGE  140%  ; when garrisoned, all weapons get n times normal range
  WeaponBonus =  GARRISONED        DAMAGE  125%  ; when garrisoned, all weapons get n times normal range

  WeaponBonus = TARGET_FAERIE_FIRE  RATE_OF_FIRE  150%  ; If shooting at someone marked with Faerie Fire, shoot faster (we don't miss ever, so can't hit easier)

  WeaponBonus = FRENZY_ONE    DAMAGE 110% ; Granted by a China Generals power
  WeaponBonus = FRENZY_TWO    DAMAGE 120%
  WeaponBonus = FRENZY_THREE  DAMAGE 130%
    
  WeaponBonus = VETERAN  RATE_OF_FIRE  120%  
  WeaponBonus = VETERAN  DAMAGE        110%
  WeaponBonus = ELITE    RATE_OF_FIRE  140%
  WeaponBonus = ELITE    DAMAGE        120%
  WeaponBonus = HERO     RATE_OF_FIRE  160%  
  WeaponBonus = HERO     DAMAGE        130%  

  ;Strategy centers provides bonuses based on the active battleplan!
  WeaponBonus = BATTLEPLAN_BOMBARDMENT       DAMAGE        125%
;  WeaponBonus = BATTLEPLAN_BOMBARDMENT       RANGE         120%
  WeaponBonus = BATTLEPLAN_SEARCHANDDESTROY  RANGE         125%
  WeaponBonus = BATTLEPLAN_HOLDTHELINE       RATE_OF_FIRE  100% ;Note this does nothing -- just for balancing reference.

  WeaponBonus = SOLO_AI_EASY   RATE_OF_FIRE  80%
  WeaponBonus = SOLO_AI_NORMAL RATE_OF_FIRE  100%
  WeaponBonus = SOLO_AI_HARD   RATE_OF_FIRE  120%

  ; you cannot set this; it always has a value of 100%.
  ; HealthBonus_Regular = 100%
  HealthBonus_Veteran = 120%
  HealthBonus_Elite   = 130%
  HealthBonus_Heroic  = 150%

  HumanSoloPlayerHealthBonus_Easy    = 150%
  HumanSoloPlayerHealthBonus_Normal  = 100%     ; ie, unadjusted
  HumanSoloPlayerHealthBonus_Hard    = 80%

  ; Audio parameters
;  VolumeDistribution = Linear          ; for linear falloff
;  VolumeDistribution = MuLaw            ; for S-Curve falloff
;  VolumeMuValue = 6.0                  ; defines the steepness of the S, must be >=0, higher is steeper.

  GroupSelectMinSelectSize = 5
  GroupSelectVolumeBase = 0.5
  GroupSelectVolumeIncrement = 0.02
  MaxUnitSelectSounds = 8

  SelectionFlashSaturationFactor = 0.5  ; zero leaves color unaffected, 4.0 is purely saturated
  SelectionFlashHouseColor       = No  ; if 'No', selection flashes white

  CameraAudibleRadius = 250             ; defines the radius that we can hear when the camera is looking up.
  GroupMoveClickToGatherAreaFactor = 0.3; if you take all the selected units and calculate the smallest possible rectangle
                                        ; that contains them all, and click within that, all the selected units will break 
                                        ; formation and gather at the point the user clicked (if the value is 1.0). If it's 
                                        ; 0.0, units will always keep their formation. If it's <1.0, then the user must 
                                        ; click a smaller area within the rectangle to order the gather.

  ShakeSubtleIntensity      = 0.5
  ShakeNormalIntensity      = 1.0
  ShakeStrongIntensity      = 2.5
  ShakeSevereIntensity      = 5.0
  ShakeCineExtremeIntensity = 7.5       ;Cinematic reserved -- don't use for game stuff because it can change.
  ShakeCineInsaneIntensity  = 10.0      ;Cinematic reserved -- don't use for game stuff because it can change.

  MaxShakeIntensity    = 20.0
  MaxShakeRange        = 180.0

  SellPercentage       = 50% ; You get this percentage back of the cost to build
  
  BaseRegenHealthPercentPerSecond = 0.3% ;You get this % of max health back per second from auto base regeneration
  BaseRegenDelay                  = 3000 ;in MS, delay in frames we must be damage free before we can auto heal from base regeneration

; sorry, prisons are cut, maybe next version (srj)
;  PrisonBountyMultiplier = 2.0 ;Players get this X the cost to build a unit 
;                               ;that is delivered to a prison with 
;                               ;KINDOF_COLLECTS_PRISON_BOUNTY
;  PrisonBountyTextColor = R:255 G:128 B:64 A:255

  SpecialPowerViewObject = SuperweaponPing ; Name of the object created for superweapons to let you watch what happens
                                 
  ; this is a list of bones that will always be exposed to Logic.
  ; please note that this is really here for quick backwards compatibility with old code,
  ; which didn't require declaring which bones you wanted to be able to use from logic...
  ; so PLEASE DO NOT ADD TO THIS LIST; if you need to expose new bones for a particular
  ; unit, please use the "ExtraPublicBone" INI keyword on a per-unit basis instead
  ; (see the airfields for an example). (srj)
  StandardPublicBone = FirePoint
  StandardPublicBone = Target_Left
  StandardPublicBone = Target_Right
  StandardPublicBone = ExitStart
  StandardPublicBone = ExitEnd
  StandardPublicBone = Muzzle
  StandardPublicBone = PARA_COG
  StandardPublicBone = PARA_ATTCH
  StandardPublicBone = PARA_MAN
  StandardPublicBone = ExitStart
  StandardPublicBone = DockStart
  StandardPublicBone = DockAction
  StandardPublicBone = DockEnd
  StandardPublicBone = DockWaiting
  StandardPublicBone = WeaponA
  StandardPublicBone = Smoke
  StandardPublicBone = Fire
  StandardPublicBone = WaterSpray
  StandardPublicBone = Spray
  StandardPublicBone = WaterSprayBig
  StandardPublicBone = Steam
  StandardPublicBone = Propeller
  StandardPublicBone = SpawnPoint
  StandardPublicBone = FireS
  StandardPublicBone = FireM
  StandardPublicBone = FireL
  StandardPublicBone = SmokeS
  StandardPublicBone = SmokeM
  StandardPublicBone = SmokeL
  StandardPublicBone = Aflame

  DefaultStartingCash = 10000 ;The amount of cash the player starts with by default.

  UnlookPersistDuration     = 5000 ; How long after you stop looking until the fog grows back

  ShroudColor = R:255 G:255 B:255
  ClearAlpha = 255
  FogAlpha = 127
  ShroudAlpha = 0 ; 0 is opaque, 255 is clear.  Unsigned Byte

  ; Network timing settings.  Don't mess with these unless you know what you're doing!
  ; If you are tempted to mess with these, please let me know. Bryan x36810
  ; This does not imply that I know what I'm doing.
  NetworkFPSHistoryLength = 30      ; The number of fps history entries.
  NetworkLatencyHistoryLength = 200 ; The number of ping history entries.
  NetworkRunAheadMetricsTime = 5000 ; The number of miliseconds between run ahead metrics things
  NetworkCushionHistoryLength = 10  ; The number of cushion values to keep.
  NetworkRunAheadSlack = 10         ; The amount of slack in the run ahead value.  This is the percentage of the calculated run ahead that is added.
  NetworkKeepAliveDelay = 20        ; The number of seconds between when the connections to each player send a keep-alive packet.
  NetworkDisconnectTime = 5000      ; The number of milliseconds between when the game gets stuck on a frame for a network stall and when the disconnect dialog comes up.
  NetworkPlayerTimeoutTime = 60000  ; The number of milliseconds between when a player's last keep alive command was recieved and when they are considered disconnected from the game.
  NetworkDisconnectScreenNotifyTime = 15000 ; The number of milliseconds between when the disconnect screen comes up and when the disconnect notification is sent to the other players.

  KeyboardCameraRotateSpeed = 0.1   ; How fast the camera rotates when rotated via keyboard controls.

End

